序
第1章 概述
1.1 Linux的誕生和發(fā)展
1.1.1 UNIX操作系統(tǒng)的誕生
1.1.2 MINIX操作系統(tǒng)
1.1.3 GNU計(jì)劃
1.1.4 POSIX標(biāo)準(zhǔn)
1.1.5 Linux操作系統(tǒng)的誕生
1.1.6 Linux操作系統(tǒng)版本的變遷
1.1.7 Linux名稱(chēng)的由來(lái)
1.1.8 早期Linux系統(tǒng)開(kāi)發(fā)的主要貢獻(xiàn)者
1.2 內(nèi)容綜述
1.3 本章小結(jié)
第2章 微型計(jì)算機(jī)組成結(jié)構(gòu)
2.1 微型計(jì)算機(jī)組成原理
2.2 I/O端口尋址和訪(fǎng)問(wèn)控制方式
2.2.1 I/O端口和尋址
2.2.2 接口訪(fǎng)問(wèn)控制
2.3 主存儲(chǔ)器、BIOS和CMOS存儲(chǔ)器
2.3.1 主存儲(chǔ)器
2.3.2 基本輸入/輸出程序BIOS
2.3.3 CMOS存儲(chǔ)器
2.4 控制器和控制卡
2.4.1 中斷控制器
2.4.2 DMA控制器
2.4.3 定時(shí)/計(jì)數(shù)器
2.4.4 鍵盤(pán)控制器
2.4.5 串行控制卡
2.4.6 顯示控制
2.4.7 軟盤(pán)和硬盤(pán)控制器
2.5 本章小結(jié)
第3章 內(nèi)核編程語(yǔ)言和環(huán)境
3.1 as86匯編器
3.1.1 as86匯編語(yǔ)言語(yǔ)法
3.1.2 as86匯編語(yǔ)言程序
3.1.3 as86匯編語(yǔ)言程序的編譯和鏈接
3.1.4 as86和1d86使用方法和選項(xiàng)
3.2 CNU as匯編
3.2.1 編譯as匯編語(yǔ)言程序
3.2.2 as匯編語(yǔ)法
3.2.3 指令語(yǔ)句、操作數(shù)和尋址
3.2.4 區(qū)與重定位
3.2.5 符號(hào)
3.2.6 as匯編命令
3.2.7 編寫(xiě)16位代碼
3.2.8 AS匯編器命令行選項(xiàng)
3.3 C語(yǔ)言程序
3.3.1 C程序編譯和鏈接
3.3.2 嵌入?yún)R編
3.3.3 圓括號(hào)中的組合語(yǔ)句
3.3.4 寄存器變量
3.3.5 內(nèi)聯(lián)函數(shù)
3.4 C與匯編程序的相互調(diào)用
3.4.1 C函數(shù)調(diào)用機(jī)制
3.4.2 在匯編程序中調(diào)用C函數(shù)
3.4.3 在C程序中調(diào)用匯編函數(shù)
3.5 Linux 0.12目標(biāo)文件格式
3.5.1 目標(biāo)文件格式
3.5.2 Linux0.12中的目標(biāo)文件格式
3.5.3 鏈接程序輸出
3.5.4 鏈接程序預(yù)定義變量一
3.5.5 System.map文件
3.6 Make程序和Makefile文件
3.6.1 Makefite文件內(nèi)容
3.6.2 Makefile文件中的規(guī)則
3.6.3 Makefile文件示例
3.6.4 make處理Makefile文件的方式
3.6.5 Makefile中的變量
3.6.6 讓make自動(dòng)推斷命令
3.6.7 隱含規(guī)則中的自動(dòng)變量
3.7本章 小結(jié)
第4章 80x86保護(hù)模式及其編程
4.1 80x86系統(tǒng)寄存器和系統(tǒng)指令
4.1.1 標(biāo)志寄存器
4.1.2 內(nèi)存管理寄存器
4.1.3 控制寄存器
4.1.4 系統(tǒng)指令
4.2 保護(hù)模式內(nèi)存管理
4.2.1 內(nèi)存尋址
4.2.2 地址變換
4.2.3 保護(hù)
4.3 分段機(jī)制
4.3.1 段的定義
4.3.2 段描述符表
4.3.3 段選擇符
4.3.4 段描述符
4.3.5 代碼和數(shù)據(jù)段描述符類(lèi)型
4.3.6 系統(tǒng)描述符類(lèi)型
4.4 分頁(yè)機(jī)制
4.4.1 頁(yè)表結(jié)構(gòu)
4.4.2 頁(yè)表項(xiàng)格式
4.4.3 虛擬存儲(chǔ)
4.5 保護(hù)
4.5.1 段級(jí)保護(hù)
4.5.2 訪(fǎng)問(wèn)數(shù)據(jù)段時(shí)的特權(quán)級(jí)檢查
4.5.3 代碼段之間轉(zhuǎn)移控制時(shí)的特權(quán)級(jí)檢查
4.5.4 頁(yè)級(jí)保護(hù)
4.5.5 組合頁(yè)級(jí)和段級(jí)保護(hù)
4.6 中斷和異常處理
4.6.1 異常和中斷向量
4.6.2 中斷源和異常源
4.6.3 異常分類(lèi)
4.6.4 程序或任務(wù)的重新執(zhí)行
4.6.5 開(kāi)啟和禁止中斷
4.6.6 異常和中斷的優(yōu)先級(jí)
4.6.7 中斷描述符表
4.6.8 IDT描述符
4.6.9 異常與中斷處理
4.6.10 中斷處理任務(wù)
4.6.11 錯(cuò)誤碼
4.7 任務(wù)管理
4.7.1 任務(wù)的結(jié)構(gòu)和狀態(tài)
4.7.2 任務(wù)的執(zhí)行
4.7.3 任務(wù)管理數(shù)據(jù)結(jié)構(gòu)
4.7.4 任務(wù)切換
4.7.5 任務(wù)鏈
4.7.6 任務(wù)地址空間
4.8 保護(hù)模式編程初始化
4.8.1 進(jìn)入保護(hù)模式時(shí)的初始化操作
4.8.2 模式切換
4.9 一個(gè)簡(jiǎn)單的多任務(wù)內(nèi)核實(shí)例
4.9.1 多任務(wù)程序結(jié)構(gòu)和工作原理
4.9.2 引導(dǎo)啟動(dòng)程序boot.s
4.9.3 多任務(wù)內(nèi)核程序head.s
第5章 Linux內(nèi)核體系結(jié)構(gòu)
5.1 Linux內(nèi)核模式
5.2 Linux內(nèi)核系統(tǒng)體系結(jié)構(gòu)
5.3 Linux內(nèi)核對(duì)內(nèi)存的管理和使用
5.3.1 物理內(nèi)存
5.3.2 內(nèi)存地址空間概念
5.3.3 內(nèi)存分段機(jī)制
5.3.4 內(nèi)存分頁(yè)管理
5.3.5 CPu多任務(wù)和保護(hù)方式
5.3.6 虛擬地址、線(xiàn)性地址和物理地址之間的關(guān)系
5.3.7 用戶(hù)申請(qǐng)內(nèi)存的動(dòng)態(tài)分配
5.4 中斷機(jī)制
5.4.1 中斷操作原理
5.4.2 80x86微機(jī)的中斷子系統(tǒng)
5.4.3 中斷向量表
5.4.4 I.inux內(nèi)核的中斷處理
5.4.5 標(biāo)志寄存器的中斷標(biāo)志
5.5 Linux的系統(tǒng)調(diào)用
5.5.1 系統(tǒng)調(diào)用接口
5.5.2 系統(tǒng)調(diào)用處理過(guò)程
5.5.3 Linux系統(tǒng)調(diào)用的參數(shù)傳遞方式
5.6 系統(tǒng)時(shí)間和定時(shí)
5.6.1 系統(tǒng)時(shí)間
5.6.2 系統(tǒng)定時(shí)
5.7 Linux進(jìn)程控制
5.7.1 任務(wù)數(shù)據(jù)結(jié)構(gòu)
5.7.2 進(jìn)程運(yùn)行狀態(tài)
5.7.3 進(jìn)程初始化
5.7.4 創(chuàng)建新進(jìn)程
5.7.5 進(jìn)程調(diào)度
5.7.6 終止進(jìn)程
5.8 Linux系統(tǒng)中堆棧的使用方法
5.8.1 初始化階段
5.8.2 任務(wù)的堆棧
5.8.3 任務(wù)內(nèi)核態(tài)堆棧與用戶(hù)態(tài)堆棧之間的切換
5.9 Linux0.12采用的文件系統(tǒng)
5.10 Linux內(nèi)核源代碼的目錄結(jié)構(gòu)
5.10.1 內(nèi)核主目錄linux
5.10.2 引導(dǎo)啟動(dòng)程序目錄boot
5.10.3 文件系統(tǒng)目錄fs
5.10.4 頭文件主目錄include
5.10.5 內(nèi)核初始化程序目錄init
5.10.6 內(nèi)核程序主目錄kernel
5.10.7 內(nèi)核庫(kù)函數(shù)目錄lib
5.10.8 內(nèi)存管理程序目錄mm
5.10.9 編譯內(nèi)核工具程序目錄tools
5.1l 內(nèi)核系統(tǒng)與應(yīng)用程序的關(guān)系
5.12 linux/MakeftIe文件
5.12.1 功能描述
5.12.2 代碼注釋
5.13 本章 小結(jié)
第6章 引導(dǎo)啟動(dòng)程序
6.1 總體功能
6.2 bootsect.S程序
6.2.1 功能描述
6.2.2 代碼注釋
6.2.3 其他信息
6.3 setup.S程序
6.3.1 功能描述
6.3.2 代碼注釋
6.3.3 其他信息
6.4 lead.s程序
6.4.1 功能描述
6.4.2 代碼注釋
6.4.3 其他信息
6.5 本章 小結(jié)
第7章 初始化程序
7.1 main.c程序
7.1.1 功能描述
7.1.2 代碼注釋
7.1.3 其他信息
7.2 環(huán)境初始化工作
7.3 本章 小結(jié)
第8章 內(nèi)核代碼
8.1 總體功能
8.1.1 中斷處理程序
8.1.2 系統(tǒng)調(diào)用處理相關(guān)程序
8.1.3 其他通用類(lèi)程序
8.2 asm.s程序
8.2.1 功能描述
8.2.2 代碼注釋
8.2.3 Intel保留中斷向量的定義
8.3 traps.c程序
8.3.1 功能描述
8.3.2 代碼注釋
8.4 syscall.s程序
8.4.1 功能描述
8.4.2 代碼注釋
8.4.3 其他信息
8.5 mktime.c程序
8.5.1 功能描述
8.5.2 代碼注釋
8.5.3 閏年的計(jì)算方法
8.6 sched.c程序
8.6.1 功能描述
8.6.2 代碼注釋
8.6.3 其他信息
8.7 signal.c程序
8.7.1 功能描述
8.7.2 代碼注釋
8.7.3 進(jìn)程信號(hào)說(shuō)明
8.8 exit.c程序
8.8.1 功能描述
8.8.2 代碼注釋
8.9 fork.c程序
8.9.1 功能描述
8.9.2 代碼注釋
8.9.3 任務(wù)狀態(tài)段信息
8.10 sys.c程序
8.10.1 功能描述
8.10.2 代碼注釋
8.1l vsprimtfc程序
8.11.1 功能描述
8.11.2 代碼注釋
8.11.3 vsprintf的格式字符串
8.11.4 與當(dāng)前版本的區(qū)別
8.12 printk.c程序
8.12.1 功能描述
8.12.2 代碼注釋
8.13 panic.c程序
8.13.1 功能描述
8.13.2 代碼注釋
8.14 本章 小結(jié)
第9章 塊設(shè)備驅(qū)動(dòng)程序
9.1 總體功能
9.1.1 塊設(shè)備請(qǐng)求項(xiàng)和請(qǐng)求隊(duì)列
9.1.2 塊設(shè)備訪(fǎng)問(wèn)調(diào)度處理
9.1.3 塊設(shè)備操作方式
9.2 blk.h文件
9.2.1 功能描述
9.2.2 代碼注釋
9.3 hd.c程序
9.3.1 功能描述
9.3.2 代碼注釋
9.3.3 其他信息
9.4 nrwblk.c程序
9.4.1 功能描述
9.4.2 代碼注釋
9.5 ramdisk.c程序
9.5.1 功能描述
9.5.2 代碼注釋
9.6 floppy.c程序
9.6.1 功能描述
9.6.2 代碼注釋
9.6.3 其他信息
第10章 字符設(shè)備驅(qū)動(dòng)程序
10.1 總體功能
10.1.1 終端驅(qū)動(dòng)程序基本原理
10.1.2 Linux支持的終端設(shè)備類(lèi)型
10.1.3 終端基本數(shù)據(jù)結(jié)構(gòu)
lO.1.4 規(guī)范模式和非規(guī)范模式
10.1.5 控制臺(tái)終端和串行終端設(shè)備
10.1.6 終端驅(qū)動(dòng)程序接口
10.2 keyboard.S程序
10.2.1 功能描述
10.2.2 代碼注釋
10.2.3 其他信息
10.3 console.c程序
10.3.1 功能描述
10.3.2 代碼注釋
10.3.3 其他信息
10.4 serial.c程序
10.4.l 功能描述
10.4.2 代碼注釋
lO.4.3 異步串行通信控制器UART
10.5 rsio.s程序
10.5.1 功能描述
10.5.2 代碼注釋
10.6 ttyi0.c程序
10.6.1 功能描述
10.6.2 代碼注釋
10.6.3 控制字符vnME、VMlN
10.7 ttyjoctl.c程序
10.7.1 功能描述
10.7.2 代碼注釋
第11章 數(shù)學(xué)協(xié)處理器
第12章 文件系統(tǒng)
第13章 內(nèi)存管理
第14章 頭文件
第15章 庫(kù)文件
第16章 建造工具
第17章 實(shí)驗(yàn)環(huán)境設(shè)置與使用方法
附錄
參考文獻(xiàn)