?? readme.txt
字號:
目 錄
獻辭
致謝
序(一)
序(二)
歷史注記
上篇 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.2 malloc(2528) 242
5.1.3 mfree(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.1 exec(3020) 285
12.6.2 fork(3322) 286
12.6.3 sbreak(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.1 file(5507) 316
18.4.2 inode(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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -