前言
第1章概述1
1.1 Linux的誕生和發(fā)展1
1.1.1 UNIX、MINIX、GNU和POSIX1
1.1.2 Linux操作系統(tǒng)的誕生和版本的變遷1
1.2 內容綜述3
1.3 本章小結5
1.4 習題6
第2章Linux內核體系結構7
2.1 Linux內核模式和體系結構7
2.2 Linux中斷機制9
2.3 Linux系統(tǒng)定時10
2.4 Linux內核進程控制11
2.4.1 任務數據結構11
2.4.2 進程運行狀態(tài)11
2.4.3 進程初始化12
2.4.4 創(chuàng)建新進程14
2.4.5 進程調度14
2.4.6 終止進程15
2.5 Linux內核對內存的使用方法16
2.6 Linux系統(tǒng)中堆棧的使用方法19
2.6.1 初始化階段19
2.6.2 任務的堆棧20
2.6.3 內核態(tài)與用戶態(tài)堆棧之間的切換21
2.7 Linux內核源代碼的目錄結構21
2.7.1 引導啟動程序目錄boot22
2.7.2 文件系統(tǒng)目錄fs22
2.7.3 頭文件主目錄include23
2.7.4 內核初始化程序目錄init23
2.7.5 內核程序主目錄kernel24
2.7.6 內核庫函數目錄lib25
2.7.7 內存管理程序目錄mm26
2.7.8 編譯內核工具程序目錄tools26
2.8 內核系統(tǒng)與用戶程序的關系26
2.9 Linux內核的編譯實驗環(huán)境26
2.10 linux/Makefile文件28
2.11 本章小結34
2.12 習題35
第3章內核引導啟動程序36
3.1 總體功能描述36
3.2 程序分析37
3.2.1 bootsect.s程序37
3.2.2 setup.s程序44
3.2.3 head.s程序52
3.3 本章小結60
3.4 習題60
第4章內核初始化過程61
4.1 main.c程序分析61
4.2 本章小結68
4.3 習題69
第5章進程調度與系統(tǒng)調用70
5.1 總體功能描述70
5.1.1 中斷處理程序70
5.1.2 系統(tǒng)調用處理相關程序71
5.2 程序分析72
5.2.1 asm.s程序72
5.2.2 traps.c程序77
5.2.3 systemcall.s程序83
5.2.4 mktime.c程序91
5.2.5 sched.c程序92
5.2.6 signal.c程序103
5.2.7 exit.c程序108
5.2.8 fork.c程序112
5.2.9 sys.c程序117
5.2.10 vsprintf.c程序122
5.2.11 printk.c程序127
5.2.12 panic.c程序128
5.3 本章小結129
5.4 習題129
第6章輸入輸出系統(tǒng)——塊設備驅動程序130
6.1 總體功能描述130
6.1.1 塊設備請求項和請求隊列130
6.1.2 塊設備操作方式132
6.2 程序分析133
6.2.1 blk.h文件133
6.2.2 hd.c程序136
6.2.3 llrwblk.c程序149
6.2.4 ramdisk.c程序154
6.2.5 floppy.c程序157
6.3 本章小結170
6.4 習題170
第7章輸入輸出系統(tǒng)——字符設備驅動程序171
7.1 總體功能描述171
7.1.1 終端驅動程序基本原理171
7.1.2 終端基本數據結構172
7.1.3 規(guī)范模式和非規(guī)范模式174
7.1.4 控制臺驅動程序175
7.1.5 串行終端驅動程序176
7.1.6 終端驅動程序接口177
7.2 程序分析177
7.2.1 keyboard.S程序177
7.2.2 console.c程序191
7.2.3 serial.c程序210
7.2.4 rsio.s程序213
7.2.5 tty_io.c程序216
7.2.6 tty_ioctl.c程序225
7.3 本章小結230
7.4 習題230
第8章數學協(xié)處理器231
8.1 mathemulation.c程序分析231
8.2 本章小結232
8.3 習題232
第9章文件系統(tǒng)233
9.1 總體功能描述233
9.1.1 MINIX文件系統(tǒng)233
9.1.2 高速緩沖區(qū)237
9.1.3 文件系統(tǒng)底層函數237
9.1.4 文件中數據的訪問操作237
9.2 程序分析239
9.2.1 buffer.c程序239
9.2.2 bitmap.c程序251
9.2.3 inode.c程序255
9.2.4 super.c程序264
9.2.5 namei.c程序272
9.2.6 filetable.c程序292
9.2.7 blockdev.c程序292
9.2.8 filedev.c程序295
9.2.9 pipe.c程序297
9.2.10 chardev.c程序300
9.2.11 readwrite.c程序303
9.2.12 truncate.c程序306
9.2.13 open.c程序307
9.2.14 exec.c程序312
9.2.15 stat.c程序322
9.2.16 fcntl.c程序323
9.2.17 ioctl.c程序325
9.3 本章小結326
9.4 習題326
第10章內存管理328
10.1 總體功能描述328
10.1.1 內存分頁管理機制328
10.1.2 Linux中內存的管理和分配331
10.1.3 寫時復制機制332
10.2 程序分析332
10.2.1 memory.c程序332
10.2.2 page.s程序345
10.3 本章小結346
10.4 習題346
第11章包含文件347
11.1 程序分析347
11.1.1 include/目錄下的文件347
11.1.2 a.out.h文件347
11.1.3 const.h文件356
11.1.4 ctype.h文件356
11.1.5 errno.h文件357
11.1.6 fcntl.h文件359
11.1.7 signal.h文件360
11.1.8 stdarg.h文件362
11.1.9 stddef.h文件363
11.1.10 string.h文件363
11.1.11 termios.h文件372
11.1.12 time.h文件379
11.1.13 unistd.h文件380
11.1.14 utime.h文件385
11.1.15 incl