複製鏈接
請複製以下鏈接發送給好友

萊昂氏UNIX源代碼分析

鎖定
《萊昂氏UNIX源代碼分析》是2006年8月機械工業出版社出版的圖書,作者是(澳)JohnLions。 [1] 
中文名
萊昂氏UNIX源代碼分析 [2] 
作    者
(澳)John Lions
原作品
Lions' Commentary on Unix 6 edition
譯    者
尤晉元
出版社
機械工業出版社
出版時間
2006年8月
ISBN
9787111080183

目錄

萊昂氏UNIX源代碼分析書本簡介

該書最早於1976年在作者當時所在的澳大利亞新南威爾士大學內部流通,但是由於有關公司希望保守在UNIX內核方面的商業機密,該書多年來從未正式出版。但本書一直受到UNIX黑客的關注,私下廣為流傳於世,是一部傑出、經典之作。在各方有識之士的努力下,該書終於於1996年正式出版。全書語言簡潔、透徹;作為一本自學UNIX的教材,二十多年來一直鼓舞和激勵着計算機和高級操作系統方面的專業人員和學生。 [3] 
本書由上、下兩篇組成。上篇為UNIX版本6的源代碼,下篇是萊昂先生對UNIX操作系統版本6源代碼的詳細分析。本書語言簡潔、透徹,曾作為未公開出版物廣泛流傳了二十多年,是一部傑出經典之作。本書適合UNIX操作系統編程人員、大專院校師生學習參考使用。 [3]  [2] 

萊昂氏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.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.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.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
參考資料