獻辭
致謝
序(一)
序(二)
歷史注記
上篇 UNIX操作系統(tǒng)版本6源代碼
UNIX操作系統(tǒng)過程分類索引
UNIX操作系統(tǒng)文件及過程
UNIX操作系統(tǒng)定義的符號列表
UNIX操作系統(tǒng)源代碼交叉引用列表
第一部 分初始化、進程初始化
第二部 分陷入、中斷、系統(tǒng)調用和進程管理
第三部 分程序交換、基本輸入l輸出、塊設備
第四部 分文件和目錄、文件系統(tǒng)、管道
第五部 分面向字符的特殊文件
下篇萊昂氏UNIX源代碼分析
前言
第1章 緒論
1.1 UNIX操作系統(tǒng)
1.2 公用程序
1.3 其他文檔
1.4 UNIX程序員手冊
1.5 UNIX文檔
l.6 UNIX操作系統(tǒng)源代碼
1.7 源代碼中各部分
1.8 源代碼文件
1.9 分析的使用
1.10 對程序設計水平的一條注釋
第2章 基礎知識
2.l 處理機
2.2 處理機狀態(tài)字
2.3 通用寄存器
2.4 指個集
2.5 尋址方式
2.5.1 寄存器方式
2.5.2 寄存器延遲方式..
2.5.3 自動增1方式
2.5.4 自動減1方式
2.5.5 變址方式
2.5.6 立即方式
2.5.7 相對方式
2.6 UNIX匯編程序
2.7 存儲管理
2.8 段寄存器—
2.9 頁說明寄存器
2.10 存儲分配
2.11 狀態(tài)寄存器—
2.12 i和d空間
21.3 啟動條件
2.14 專用設備寄存器
第3章 閱讀C程序
3.1 某些選出的例子
3.2 例1
3.3 例2
3.4 例3
3.5 例4
3.6 例5
3.7 例6
3.8 例7
3.9 例8
3.10 例9
3.11 例10
3.12 例11
3.13 例12
3.14 例13
3.15 例14
3.16 例15
3.17 例16
3.18 例17
第4章 概述
4.1 變量分配
4.2 全局變量
4.3 C預處理程序
4.4 第一部分
4.4.1 第1組h文件
4.4.2 匯編語言文件
4.4.3 在第一部分中的其他文件
4.5 第二部分
4.6 第三部分
4.7 第四部分
4.8 第五部分
第一部分初始化、進程初始化
第5章 兩個文件
5.l 文件malloc.c
5.1.l 列表維護規(guī)則
5.1.2 malloC(252)
5.1.3 mfree(2556)
5.1.4 結論—
5.2 文件Prf.c
5.2.l printf(234)
5.2.2 printn(2369)
5.2.3 putchar(2386)
5.2.4 panic(2419)
5.2.5 prdev(2433)、deverror(2447)
5.3包含的文件
第6章 系統(tǒng)動啟
6.1 操作員的動作
6.2 start(0612)
6.3 main(1550)
6.4 進程
6.5 Proct(0)的初始他
6.6 sched(1940)
6.7 sleep(2066)
6.8 SWtCh(2178)
6.9 再回到 main
第7章 進程
7.1 進程映像
7.2 proc結構(0358)
7.3 user結構(0413)
7.4 每個進程數據區(qū)
7.5 段
7.6 映像的執(zhí)行
7.7 核心態(tài)執(zhí)行
7.8 用戶態(tài)執(zhí)行
7.9 一個實例
7.10 設置段寄存器
7.11 estabur(1650)
7.12 sureg(1739)
7.13 newproc(1826)
第8章 進程管理
8.l 進程切換
8.2 中斷
8.3 程序交換
8.4 作業(yè)
8.5 匯編語言過程
8.6 savu(072)
8.7 rein(074)
8.8 aretu(073)
8.9 SWtCh(2178)
8.10 setpri(2156)
8.11 sleep(206)
8.12 wakeup(2133)
8.13 setrun(2134)
8.14 expand(2268)
8.15 再回到 swtch
8.16 臨界區(qū)
第二部分 陷入、中斷、系統(tǒng)調用和進程管理
第9章 硬件中斷和陷入
9.l 硬件中斷
9.2 中斷矢量
9.3 中斷處理程序
9.4 優(yōu)先級
9.5 中斷優(yōu)先級
9.6 中斷處理程序的規(guī)則
9.7 陷入
9.8 匯編語言trap
9.9 返回
第10章 匯編語言 trap例程
10.l 陷入和中斷源
10.2 fuibyte(0814)與fuiword(0844)
10.3 中斷
10.4 call(077)
10.5 用戶程序陷入
10.6 核心態(tài)棧
第11章 時鐘中斷
11.I clock(3725)
11.2 timeout(3845)
第12章 陷入與系統(tǒng)調用
12.l trap(269)
12.2 核心態(tài)陷入
12.3 用戶態(tài)陷入
12.4 系統(tǒng)調用:..
12.5 系統(tǒng)調用處理程序
12.6 文件Sysl.C
12.6.1 exeC(302)
12.6.2 fork(3322)
12.6.3 sbreak(3354)
12.7 文件SyS2.C和SyS3.C
12.8 文件SyS4.C
第13章 軟件中斷
13.1 設置期望動作
13.2 對進程造成中斷
13.3 作用
13.4 跟蹤
13.5 過程
13.5.l 期望動作的設置
13.5.2 造成軟件中斷
13.13 作用
13.5.4 跟蹤:
13.6 SSig(3614)
13.7 kill(3630)
13.8 signal(3949)
13.9 psignal(3963)
13.10 issig(3991)
13.11 psig(404刀
13.12 ocre(4094)
13.13 grow(4136)
13.14 exit(321)
13.15 rexit(3205)
13.16 wait(327)
13.17 跟蹤
13.18 stop(4016)
13.19 wait(3270)(繼續(xù))
13.20 ptrace( 64)
13.21 procxmt(4204)
第三部分 程序變換、基本輸入偷出、塊設備
第14章 程序交換
14.l 正文段
14.2 sobed(1940)
14.3 xswap(4368)
14.4 xalloc(4433)
14.5 xfree(4398)
第15章 基本輸入/輸出介紹
15.l bUf.h文件
15.2 devtab(4551)
15.3 conf.h文件
15.4 conf.c文件
15.5 系統(tǒng)生成
15.6 swap(sl 96)
15.7 競態(tài)條件
15.8 可重入
15.9 繼續(xù)分析u.uss.v
第6章 RK磁盤驅動器
16.1 控制狀態(tài)寄存器RKCS
16.2 字計數寄存器RKWC
16.3 磁盤地址寄存器RKDA
16.4 rk.c文件
16.5 rkstrategy(5389)
16.6 rkaddr(5420)
16.7 devstart(5096)
16.8 rkintr(5451)
16.9 iodone(5018)
第17章 緩存處理
17.l 標志
17.2 一個類超高速緩存存儲
17.3 clrbuf(503)
17.4 incore(4899)
17.5 getulk(4921)
17.6 brelse(4869)
17.7 binit5055)
17.8 bread(4754
17.9 breada(4773)
17.10 bwrite(480)
17.11 bawrite(4856)
17.12 bdwritC(483)
17.13 bflush(5229)
17.14 physic(5259)
第四部分 文件和目錄、文件系統(tǒng)、管道
第18章 文件存取和控制
18.l 源代碼第四部分
18.2 文件特征
18.3 系統(tǒng)調用
18.4 控制表
18.4.l file(5507)
18.4.2 inode(5659)
18.5 要求專用的資源—
18.6 打開一個文件
18.7 creat(5781)
18.8 openl(5804)
18.9 oped(5763)
18.10 再回到 openl
18.11 close(5846)
18.12 closef(6643)
18.13 iput(7344)
18.14 刪除文件
18.15 讀和寫文件
18.16 rdwr(5731)
18.17 readi(6221)
18.18 writei(6276)
18.19 iomove(6364)
18.20 bmap(6415)
18.21 剩余部分
第19章 文件目錄和目錄文件
19.1 文件名
19.2 目錄數據結構
19.3 目錄文件
19.4 namei(7518 )
19.5 一些注釋
19.6 link(5909)
19.7 wdir(747)
19.8 maknode(7455)
19.9 unlink(351)
19.10 mknod(5952
19.11 access(6746)
第20章 文件系統(tǒng)
20.l 超級塊(5561)
20.2 mount表(0272)
20.3 iinit(692)
20.4 安裝
20.5 smount(6086)
20.6 注釋
20.7 iget(727)
20.8 getfs(7167)
20.9 updatC(720)
20.10 sumount(6 144)
20.11資源分配
20.12 alloc(6956)
20.13 itrunc(7414)
20.14 free(7000)
20.15 iput(734)
20.16 ifree(71 34)
20.17 iupdat(737)
第21章 管道
21.l pipe(7723)
21.2 readp(7758
21.3 writep(780)
21.4 plOCk(786)
21.5 prele(788)
第五部分 面向字符的特殊文件
第22章 面向字符的特殊文件
22.1 LPll行式打印機驅動程序
22.2 lpopen(885)
223 注釋
22.4 lpoutput(8986)
22.5 lpstart(8967)
22.6 lpint(8976)
22.7 lpwrite(887)
22.8 lpclose(886)
22.9 討論
22.10 lpcanon(887)
22.11 對讀者的建議
22.12 PCll紙帶閱讀機/穿孔機驅動程序
第23章 字符處理
23.I cinit(8234)
23.2 getc(093)
23.3 plltC(096)
23.4 字符集
23.5 圖形字符、
23.6 UNIX慣例
23.7 maptab(sll7)
23.8 pariah(7947)
第24章 交互式終端
24.1 接口
24.2 tty結構(792)
24 3 注釋
24.4 初始化
24.5 stty(sl 83)
24.6 sgtty(8201)
24.7 klsgtty(8090)
24.8 ttystty(8577)
24.9 DLll/KLll終端設備處理程序
24.10 設備寄存器
24.11 接收器狀態(tài)寄存器
24.12 接收器數據緩存寄存器
24 13 發(fā)送器狀態(tài)寄存器
24.14 發(fā)送器數據級存寄存器
24.15 單總線地址
24.16 軟件方面的考慮
24.17 中斷矢量地址
24.18 源代碼
24.19 klopen(8023)
24.20 klclose(8055)
24.21 klxint(8070)
24.22 klrint(8078)
第25章 tty.c又件
25.l flushtty(8252)
25.2 Wflllshtty(821)
25.3 字符輸入
25.3.l ttread(853)
25.3.2 canon(8274)
25.3.3 前一個字符不是外
25.3.4 前一個字符是“/”
25.3.5 字符準備
25.3.6 已得到1行
253.7 注釋
25.3.8 ttyinput(8333)
25.4 字符輸出
25.4.l ttwrite(8550)
25.4.2 ttstart(8505)
25.4.3 ttrstrt(8486)
25.4.4 ttyOUtpUt(8373)
25.4.5 具有受限字符集的終端
25.5 結束語
第26章 練習
羅斯跋
奧德爾跋
古德哈特跋
克林森跋
雷杰斯跋
作者小傳