《萊昂氏UNIX原始碼分析》是2006年8月機械工業出版社出版的圖書,作者是(澳)JohnLions。
基本介紹
- 書名:萊昂氏UNIX原始碼分析
- 作者:(澳)John Lions
- 原版名稱:Lions' Commentary on Unix 6 edition
- 譯者:尤晉元
- ISBN:9787111080183
- 出版社:機械工業出版社
- 出版時間:2006年8月
書本簡介,目 錄,
書本簡介
該書最早於1976年在作者當時所在的澳大利亞新南威爾斯大學內部流通,但是由於有關公司希望保守在UNIX核心方面的商業機密,該書多年來從未正式出版。但本書一直受到UNIX黑客的關注,私下廣為流傳於世,是一部傑出、經典之作。在各方有識之士的努力下,該書終於於1996年正式出版。全書語言簡潔、透徹;作為一本自學UNIX的教材,二十多年來一直鼓舞和激勵著計算機和高級作業系統方面的專業人員和學生。
本書由上、下兩篇組成。上篇為UNIX版本6的原始碼,下篇是萊昂先生對UNIX作業系統版本6原始碼的詳細分析。本書語言簡潔、透徹,曾作為未公開出版物廣泛流傳了二十多年,是一部傑出經典之作。本書適合UNIX作業系統編程人員、大專院校師生學習參考使用。
目 錄
獻辭
致謝
序(一)
序(二)
歷史註記
上篇unix作業系統版本6原始碼
unix作業系統過程分類索引3
unix作業系統檔案及過程5
unix作業系統定義的符號列表7
unix作業系統原始碼交叉引用列表9
第一部分 初始化、進程初始化25
第二部分 陷入、中斷、系統調用和進程管理75
第三部分 程式交換、基本輸入/輸出、塊設備109
第四部分 檔案和目錄、檔案系統、管道133
第五部分 面向字元的特殊檔案181
下篇 萊昂氏unix原始碼分析
前言207
第1章 緒論209
1.1 unix作業系統209
1.2 公用程式209
1.3 其他文檔210
1.4 unix程式設計師手冊210
1.5 unix文檔211
1.6 unix作業系統原始碼211
1.7 原始碼中各部分212
1.8 原始碼檔案212
1.9 分析的使用212
1.10 對程式設計水平的一條注釋212
第2章 基礎知識214
2.1 處理機214
2.2 處理機狀態字214
2.3 通用暫存器214
2.4 指令集215
2.5 定址方式216
2.5.1 暫存器方式217
2.5.2 暫存器延遲方式217
2.5.3 自動增1方式217
2.5.4 自動減1方式217
2.5.5 變址方式217
2.5.6 立即方式218
2.5.7 相對方式218
2.6 unix彙編程式 219
2.7 存儲管理219
2.8 段暫存器220
2.9 頁說明暫存器220
2.10 存儲分配220
2.11 狀態暫存器221
2.12 “i”和“d”空間221
2.13 啟動條件221
2.14 專用設備暫存器221
第3章 閱讀“c”程式222
3.1 某些選出的例子222
3.2 例1 222
3.3 例2 223
3.4 例3 223
3.5 例4 225
3.6 例5 225
3.7 例6 227
3.8 例7 227
3.9 例8 228
3.10 例9 228
3.11 例10 229
3.12 例11 229
3.13 例12 230
3.14 例13 230
3.15 例14 231
3.16 例15 231
3.17 例16 232
3.18 例17 233
第4章 概述235
4.1 變數分配235
4.2 全局變數235
4.3 “c”預處理程式235
4.4 第一部分236
4.4.1 第1組“.h”檔案236
4.4.2 彙編語言檔案237
4.4.3 在第一部分中的其他檔案237
4.5 第二部分237
4.6 第三部分238
4.7 第四部分238
4.8 第五部分239
第一部分 初始化、進程初始化
第5章 兩個檔案241
5.1 檔案malloc.c 241
5.1.1 列表維護規則241
5.1.2malloc(2528) 242
5.1.3mfree(2556) 243
5.1.4 結論244
5.2 檔案prf.c 244
5.2.1 printf(2340) 244
5.2.2 printn(2369) 245
5.2.3 putchar(2386) 246
5.2.4 panic(2419) 247
5.2.5 prdev(2433)、deverror(2447) 247
5.3 包含的檔案247
第6章 系統初啟249
6.1 操作員的動作249
6.2 start(0612) 249
6.3 main(1550) 251
6.4 進程252
6.5 proc〔0〕的初始化252
6.6 sched(1940) 253
6.7 sleep(2066) 253
6.8 swtch(2178) 253
6.9 再回到main 254
第7章 進程256
7.1 進程映像256
7.2 proc結構(0358) 257
7.3 user結構(0413) 257
7.4 每個進程數據區258
7.5 段258
7.6 映像的執行258
7.7 核心態執行259
7.8 用戶態執行259
7.9 一個實例259
7.10 設定段暫存器260
7.11 estabur(1650) 260
7.12 sureg(1739) 261
7.13 newproc(1826) 261
第8章 進程管理263
8.1 進程切換263
8.2 中斷263
8.3 程式交換263
8.4 作業264
8.5 彙編語言過程264
8.6 savu(0725) 264
8.7 retu(0740) 264
8.8 aretu(0734) 264
8.9 swtch(2178) 265
8.10 setpri(2156) 265
8.11 sleep(2066) 266
8.12 wakeup(2133) 266
8.13 setrun(2134) 266
8.14 expand(2268) 267
8.15 再回到swtch 267
8.16 臨界區268
第二部分 陷入、中斷、系統調用
和進程管理
第9章 硬體中斷和陷入269
9.1 硬體中斷269
9.2 中斷矢量270
9.3 中斷處理程式270
9.4 優先權270
9.5 中斷優先權271
9.6 中斷處理程式的規則271
9.7 陷入272
9.8 彙編語言trap 272
9.9 返回273
第10章 彙編語言“trap”例程274
10.1 陷入和中斷源274
10.2 fuibyte(0814)與fuiword(0844) 274
10.3 中斷275
10.4 call(0776) 275
10.5 用戶程式陷入276
10.6 核心態棧277
第11章 時鐘中斷279
11.1 clock(3725) 279
11.2 timeout(3845) 281
第12章 陷入與系統調用282
12.1 trap(2693) 282
12.2 核心態陷入282
12.3 用戶態陷入283
12.4 系統調用284
12.5 系統調用處理程式285
12.6 檔案sys1.c 285
12.6.1exec(3020) 285
12.6.2fork(3322) 286
12.6.3sbreak(3354) 286
12.7 檔案sys2.c和sys3.c 287
12.8 檔案sys4.c 287
第13章 軟體中斷288
13.1 設定期望動作288
13.2 對進程造成中斷288
13.3 作用289
13.4 跟蹤289
13.5 過程289
13.5.1 期望動作的設定289
13.5.2 造成軟體中斷289
13.5.3 作用289
13.5.4 跟蹤290
13.6 ssig(3614) 290
13.7 kill(3630) 290
13.8 signal(3949) 290
13.9 psignal(3963) 291
13.10 issig(3991) 291
13.11 psig(4043) 291
13.12 core(4094) 292
13.13 grow(4136) 292
13.14 exit(3219) 292
13.15 rexit(3205) 293
13.16 wait(3270) 293
13.17 跟蹤293
13.18 stop(4016) 294
13.19 wait(3270)(繼續) 294
13.20 ptrace(4164) 295
13.21 procxmt(4204) 295
第三部分 程式交換、基本輸入
/輸出、塊設備
第14章 程式交換297
14.1 正文段297
14.2 sched(1940) 298
14.3 xswap(4368) 299
14.4 xalloc(4433) 299
14.5 xfree(4398) 300
第15章 基本輸入/輸出介紹301
15.1 buf.h檔案301
15.2 devtab(4551) 301
15.3 conf.h檔案301
15.4 conf.c檔案302
15.5 系統生成302
15.6 swap(5196) 302
15.7 競態條件303
15.8 可重入304
15.9 繼續分析“u.u_ssav” 304
第16章rk磁碟驅動器305
16.1 控制狀態暫存器rkcs 306
16.2 字計數暫存器rkwc 306
16.3 磁碟地址暫存器rkda 306
16.4 rk.c檔案306
16.5 rkstrategy(5389) 306
16.6 rkaddr(5420) 307
16.7 devstart(5096) 307
16.8 rkintr(5451) 307
16.9 iodone(5018) 308
第17章 快取處理309
17.1 標誌309
17.2 一個類超高速快取存儲309
17.3 clrbuf(5038) 309
17.4 incore(4899) 310
17.5 getblk(4921) 310
17.6 brelse(4869) 310
17.7 binit(5055) 311
17.8 bread(4754) 312
17.9 breada(4773) 312
17.10 bwrite(4809) 312
17.11 bawrite(4856) 313
17.12 bdwrite(4836) 313
17.13 bflush(5229) 313
17.14 physio(5259) 313
第四部分 檔案和目錄、檔案
系統、管道
第18章 檔案存取和控制315
18.1 原始碼第四部分315
18.2 檔案特徵315
18.3 系統調用316
18.4 控制表316
18.4.1file(5507) 316
18.4.2inode(5659) 316
18.5 要求專用的資源317
18.6 打開一個檔案317
18.7 creat(5781) 317
18.8 open1(5804) 317
18.9 open(5763) 318
18.10 再回到open1 318
18.11 close(5846) 318
18.12 closef(6643) 319
18.13 iput(7344) 319
18.14 刪除檔案319
18.15 讀和寫檔案319
18.16 rdwr(5731) 320
18.17 readi(6221) 321
18.18 writei(6276) 322
18.19 iomove(6364) 322
18.20 bmap(6415) 322
18.21 剩餘部分322
第19章 檔案目錄和目錄檔案323
19.1 檔案名稱323
19.2 目錄數據結構323
19.3 目錄檔案323
19.4 namei(7518) 324
19.5 一些注釋325
19.6 link(5909) 326
19.7 wdir(7477) 327
19.8 maknode(7455) 327
19.9 unlink(3510) 327
19.10 mknod(5952) 327
19.11 access(6746) 328
第20章 檔案系統329
20.1 超級塊(5561) 329
20.2 mount表(0272) 329
20.3 iinit(6922) 330
20.4 安裝330
20.5 smount(6086) 330
20.6 注釋331
20.7 iget(7276) 331
20.8 getfs(7167) 332
20.9 update(7201) 332
20.10 sumount(6144) 333
20.11 資源分配333
20.12 alloc(6956) 334
20.13 itrunc(7414) 334
20.14 free(7000) 335
20.15 iput(7344) 335
20.16 ifree(7134) 335
20.17 iupdat(7374) 335
第21章 管道337
21.1 pipe(7723) 337
21.2 readp(7758) 337
21.3 writep(7805) 338
21.4 plock(7862) 338
21.5 prele(7882) 338
第五部分 面向字元的特殊檔案
第22章 面向字元的特殊檔案339
22.1 lp11行式印表機驅動程式339
22.2 lpopen(8850) 340
22.3 注釋340
22.4 lpoutput(8986) 340
22.5 lpstart(8967) 341
22.6 lpint(8976) 341
22.7 lpwrite(8870) 342
22.8 lpclose(8863) 342
22.9 討論342
22.10 lpcanon(8879) 342
22.11 對讀者的建議343
22.12 pc11紙帶閱讀機/穿孔機驅動
程式344
第23章 字元處理345
23.1 cinit(8234) 346
23.2 getc(0930) 346
23.3 putc(0967) 347
23.4 字元集347
23.5 圖形字元348
23.6 unix慣例349
23.7 maptab(8117) 349
23.8 partab(7947) 349
第24章 互動式終端351
24.1 接口351
24.2 tty結構(7926) 351
24.3 注釋352
24.4 初始化352
24.5 stty(8183) 352
24.6 sgtty(8201) 353
24.7 klsgtty(8090) 353
24.8 ttystty(8577) 353
24.9 dl11/kl11終端設備處理程式353
24.10 設備暫存器354
24.11 接收器狀態暫存器354
24.12 接收器數據快取暫存器354
24.13 傳送器狀態暫存器354
24.14 傳送器數據快取暫存器 354
24.15 單匯流排地址354
24.16 軟體方面的考慮355
24.17 中斷矢量地址355
24.18 原始碼355
24.19 klopen(8023) 355
24.20 klclose(8055) 356
24.21 klxint(8070) 356
24.22 klrint(8078) 356
第25章tty.c檔案357
25.1 flushtty(8252) 357
25.2 wflushtty(8217) 357
25.3 字元輸入358
25.3.1 ttread(8535) 358