第一部 分綜述
第1章 BSD系統(tǒng)的歷史和目標
1.1 UNIX系統(tǒng)的歷史
1.1.1 UNIX系統(tǒng)的起源·
1.1.2 Research小組的UNIX系統(tǒng)
1.1.3 AT&TUNIXSystemIII和SystemV
1.1.4 伯克利軟件發(fā)布(BSD)
1.1.5 UNIX無處不在
1.2 BSD和其他系統(tǒng)·
1.3 BSD向開放源代碼的轉變
1.3.1 NetworkingRelease2
1.3.2 法律訴訟
1.3.3 4.4BSD·-·
1.3.4 4.4BSD.LiteRelease2
1.4 FreeBSD的開發(fā)模式
1.5 參考文獻
第2章 FreeBSD設計概述
2.1 FreeBSD的功能和內核
2.2 內核結構
2.3 內核服務
2.4 進程管理
2.4.1 信號
2.4.2 進程組和會話
2.5 內存管理
2.5.1 BSD內存管理設計要點
2.5.2 內核中的內存管理
2.6 I/O系統(tǒng)
2.6.1 描述符與I/O
2.6.2 描述符管理
2.6.3 設備
2.6.4 套接口IPC
2.6.5 分散/聚集i/0
2.6.6 多文件系統(tǒng)支持
2.7 設備
2.8 文件系統(tǒng)
2.9 網絡文件系統(tǒng)
2.10 終端
2.1l 進程問通信
2.12 網絡通信
2.13 網絡實現
2.14 系統(tǒng)運行
2.15 復習題
2.16 參考文獻
第3章 內核服務
3.1 內核結構
3.1.1 系統(tǒng)進程
3.1.2 系統(tǒng)入口
3.1.3 運行時刻的內核結構
3.1.4 內核的入口
3.1.5 從內核返回
3.2 系統(tǒng)調用
3.2.1 調用結果的處理
3.2.2 從系統(tǒng)調用返回
3.3 陷阱和中斷
3.3.1 陷阱
3.3.2 I/O設備中斷
3.3.3 軟件中斷
3.4 時鐘中斷
3.4.1 統(tǒng)計和進程調度
3.4.2 超時
3.5 內存管理服務
3.6 時間服務
3.6.1 真實時間
3.6.2 外部表示
3.6.3 調整時間
3.6.4 時間間隔
3.7 用戶、用戶組和其他身份標識
3.7.1 主機標識符
3.7.2 進程組和會話
3.8 資源服務
3.8.1 進程優(yōu)先級
3.8.2 資源利用
3.8.3 資源限制
3.8.4 文件系統(tǒng)配額
3.9 系統(tǒng)運行服務
3.10 復習題
3.11 參考文獻
第二部分 進程
第4章 進程管理
4.1 進程管理概述
4.1.1 多程序機制
4.1.2 調度
4.2 進程狀態(tài)
4.2.1 進程結構
4.2.2 線程結構
4.3 上下文切換
4.3.1 線程狀態(tài)
4.3.2 底層上下文切換
4.3.3 主動上下文切換
4.3.4 同步
4.3.5 互斥同步
4.3.6 鎖管理器的鎖
4.3.7 其他同步
4.4 線程調度
4.4.1 4.4BSD的調度程序
4.4.2 線程調度
4.4.3 線程優(yōu)先級的計算
4.4.4 線程優(yōu)先級例程
4.4.5 線程運行隊列和上下文切換
4.4.6 ULE調度程序
4.5 創(chuàng)建進程
4.6 終止進程
4.7 信號
4.7.1 信號的歷史
4.7.2 發(fā)送信號
4.7.3 接收信號
4.8 進程組和會話
4.8.1 會話
4.8.2 作業(yè)控制
4.9 監(jiān)管環(huán)境
4.9.1 監(jiān)管環(huán)境的語義
4.9.2 監(jiān)管環(huán)境的實現
4.9.3 監(jiān)管環(huán)境的限制
4.10 進程的調試
4.11 復習題
4.12 參考文獻
第5章 存儲管理
5.1 術語
5.1.1 進程與內存
5.1.2 調頁機制
5.1.3 替換算法
5.1.4 工作集模型
5.1.5 交換機制
5.1.6 虛擬內存的優(yōu)點
5.1.7 虛擬內存的硬件要求
5.2 FreeBSD虛擬內存系統(tǒng)概述
5.3 內核的存儲管理
5.3.1 內核映射和子映射
5.3.2 內核地址空間的分配
5.3.3 內核的存儲分配程序
5.3.4 內核的區(qū)域存儲分配程序
5.4 進程獨立擁有的資源
5.4.1 FreeBSD的進程虛擬地址空間
5.4.2 缺頁處理
5.4.3 映射到對象
5.4.4 對象
5.4.5 對象到頁面
5.5 共享存儲
5.5.1 mmap模型
5.5.2 共享映射
5.5.3 私有映射
5.5.4 壓縮影子鏈
5.5.5 私有快照
5.6 創(chuàng)建新進程
5.6.1 保留內核資源
5.6.2 復制用戶地址空間
5.6.3 不通過復制創(chuàng)建新進程
5.7 執(zhí)行一個文件
5.8 進程地址空間的操作
5.8.1 改變進程大小
5.8.2 文件映射
5.8.3 改變保護權限
5.9 終止進程
5.10 調頁器接口
5.10.1 vnode調頁器
5.10.2 設備調頁器
5.10.3 物理內存調頁器
5.10.4 交換調頁器
5.11 調頁機制
5.11.1 硬件高速緩存的設計
5.11.2 頁面填色
5.12 頁面替換
5.12.1 調頁參數
5.12.2 pageout守護進程
5.12.3 交換機制
5.12.4 換入進程
5.13 可移植性
5.13.1 pmap模塊的作用
5.13.2 初始化和啟動
5.13.3 分配和釋放映射
5.13.4 改變映射的訪問和固定屬性
5.13.5 管理頁表的使用信息
5.13.6 初始化物理頁面
5.13.7 管理內部數據結構
5.14 復習題
5.15 參考文獻
第三部分 I/O系統(tǒng)
第6章 I/O系統(tǒng)概述
6.1 從用戶到設備的I/O映射
6.1.1 設備驅動程序
6.1.2 I/O隊列
6.1.3 中斷處理
6.2 字符設備
6.2.1 原始設備和物3EI/O
6.2.2 面向字符的設備
6.2.3 字符設備驅動程序的入口點
6.3 磁盤設備
6.3.1 塊設備驅動程序的入口點
6.3.2 磁盤I/O請求的排序
6.3.3 磁盤標簽
6.4 描述符的管理和服務
6.4.1 打開文件項
6.4.2 管理描述符
6.4.3 異步I/O
6.4.4 文件描述符的上鎖機制
6.4.5 描述符上的多路I/0操作
6.4.6 select調用的實現·
6.4.7 數據在內核中的轉移
6.5 虛擬文件系統(tǒng)的接口
6.5.1 vnode的內容
6.5.2 對vnode的操作
6.5.3 路徑名轉換
6.5.4 文件系統(tǒng)的導出服務
6.6 與文件系統(tǒng)無關的服務
6.6.1 名字緩存
6.6.2 緩沖區(qū)管理
6.6.3 緩沖區(qū)管理的實現
6.7 可疊加的文件系統(tǒng)
6.7.1 簡單的文件系統(tǒng)層
6.7,2 聯(lián)合安裝的文件系統(tǒng)
6.7.3 其他文件系統(tǒng)
6.8 復習題一
6.9 參考文獻
第7章 設備
7.1 設備概述一
7.1.1 PC的I/O體系結構
7.1.2 FreeBSD海量存儲I/O子
系統(tǒng)的結構
7.1-3 設備的命名和訪問一
7.2 GEOM層
7.2.1 術語和拓撲規(guī)則·
7.2.2 改變拓撲
7.2.3 運行
7.2.4 拓撲的靈活性
7.3 CAM層
7.3.1 SCSI子系統(tǒng)
7.3.2 I/O請求通過CAM子系統(tǒng)的路徑
7.4 ATA層
7.5 配置設備
7.5.1 識別設備
7.5.2 自動配置數據結構·
7.5.3 資源管理
7.6 復習題
7.7 參考文獻
第8章 本地文件系統(tǒng)
8.1 文件系統(tǒng)的分層管理
8.2 inode的結構
8.2.1 inode格式的變化
8.2.2 擴展屬性
8.2.3 文件系統(tǒng)的新功能·
8.2.4 丈件標志·
8.2.5 動態(tài)的inode
8.2.6 管理inode
8.3 命名
8.3.1 目錄
8.3.2 在目錄中查找名字一
8.3.3 路徑名轉換
8.3.4 鏈接
8.4 配額
8.5 文件上鎖·
8.6 軟更新
8.6.1 文件系統(tǒng)中的更新依賴
8.6.2 依賴關系的數據結構
8.6.3 跟蹤位映射表的依賴關系
8.6.4 跟蹤inode的依賴關系一
8.6.5 跟蹤直接塊的依賴關系
8.6.6 跟蹤間接塊的依賴關系
8.6.7 跟蹤新間接塊的依賴關系
8.6,8 跟蹤新目錄項的依賴關系
8.6.9 跟蹤新目錄的依賴關系
8.6.10 跟蹤刪除目錄項時的依賴關系
8.6.11 截短文件
8.6.12 回收文件和目錄的inode節(jié)點
8.6.13 跟蹤目錄項重命名時的依賴關系
8.6.14 跟蹤刪除文件時的依賴關系
8,6.15 fsync對軟更新的要求
8.6.16 刪除文件時對軟更新的要求
8.6.17 fsck對軟更新的要求
8.6.18 軟更新的性能
8.7 文件系統(tǒng)的快照
8.7.1 創(chuàng)建文件系統(tǒng)快照
8.7.2 維護文件系統(tǒng)快照
8.7.3 大型文件系統(tǒng)的快照
8.7.4 快照性能
8.7.5 后臺fsck
8.7.6 用戶可見的快照
8.7.7 動態(tài)的轉儲
8.8 本地文件庫
8.8.1 文件庫概述
8.8.2 用戶的文件I/O
8.9 伯克利快速文件系統(tǒng)
8.9.1 伯克利快速文件系統(tǒng)的組成
8.9.2 引導塊
8.9.3 優(yōu)化存儲空間利用率
8.9.4 讀寫文件
8.9.5 布局策略
8.9.6 分配機制
8.9.7 將塊組成簇
8.9.8 基于擴展的分配
8.10 復習題
8.11 參考文獻
第9章 網絡文件系統(tǒng)
9.1 歷史和概述.
9.2 NFS的結構和操作
9.2.1 NFS協(xié)議
9.2.2 FreeBSD的NFS實現
9.2.3 客戶機/服務器的交互操作
9.2.4 RPC的傳輸問題
9.2.5 安全問題
9.3 提高性能的技術
9.3.1 租約
9.3.2 崩潰恢復
9.4 復習題
9.5 參考文獻
第l0章 終端處理
10.1 終端處理模式
10.2 行規(guī)程
10.3 用戶接口
10.4 tty結構·
10.5 進程組、會話和終端控制
10.6 C-1ist
10.7 RS-232和調制解調器控制
10.8 終端操作
10.8.1 打開終端
10.8.2 輸出到行規(guī)程
10.8.3 終端的輸出
10.8.4 終端的輸入
10.8.5 ioctl例程
10.8.6 調制解調器轉換
10.8.7 關閉終端設備
10.9 其他行規(guī)程
10.10 復習題
10.11 參考文獻
第四部分 進程間通信
第11章 進程間通信
11.1 進程問通信的模型
11.2 實現的結構和概述
1l.3 內存管理
11.3.1 mbuf
11.3.2 存儲管理算法·
11.3.3 mbuf工具例程
11.4 數據結構
11.4.1 通信域
11.4.2 套接口
11.4.3 套接口地址
11.4.4 鎖
11.5 建立連接
11.6 傳送數據
11.6.1 發(fā)送數據
11.6.2 接收數據
11.7 關閉套接口
11.8 本地進程間通信
l1.8.1 信號量
11.8.2 消息隊列
11.8.3 共享內存
11.9 復習題一
11.10 參考文獻.
第12章 網絡通信
12.1 內部結構
12.1.l 數據流
12.1.2 通信協(xié)議
12.1.3 網絡接口
12.2 套接口到協(xié)議的接口
12.2.1 協(xié)議的用戶請求例程·
12.2.2 協(xié)議的控制輸出例程·
12.3 協(xié)議到協(xié)議的接口
12.3.1 proutput
12.3.2 pr_input
12.3.3 pr-ctlinput
12.4 協(xié)議和網絡的接口
12.4.1 發(fā)送數據包
12.4.2 接收數據包
12.5 路由選擇
12.5.1 內核路由選擇表
12.5.2 路由選擇查找
12.5.3 路由選擇重定向
12.5.4 路由選擇表接口
12.5.5 用戶級的路由選擇策略
12.5.6 用戶級路由選擇接口:路由選擇套接口·
12.6 緩沖和擁塞控制
12.6.1 協(xié)議緩沖策略·
12.6.2 隊列限制
12.7 原始套接口
12.7.1 控制塊--
12.7.2 輸入處理
12.7.3 輸出處理
12.8 網絡子系統(tǒng)的其他主題
12.8.1 帶外數據
12.8.2 地址解析協(xié)議
12.9 復習題
12.10 參考文獻
第13章 網絡協(xié)議
13.1 IPv4網絡協(xié)議
13.1.1 IPv4地址
13.1.2 廣播地址
13.1.3 組播
13.1.4 端口與關聯(lián)
13.1.5 協(xié)議控制塊
13.2 UDP協(xié)議
13.2.1 初始化
13.2.2 輸出
13.2.3 輸入
13.2.4 控制操作
13.3 Internet協(xié)議(IP)
13.3.1 輸出
13.3.2 輸入
13.3.3 轉發(fā)
13.4 TCP協(xié)議
13.4.1 TCP連接狀態(tài)
13.4.2 序號變量
13.5 TCP算法“
13.5.1 定時器
13.5.2 往返時間的估計
13.5.3 建立連接
13.5.4 SYN緩存
13.5.5 關閉連接
13.6 TCP輸入處理
13.7 TCP輸出處理
13.7.1 發(fā)送數據
13.7.2 避免糊涂窗口綜合癥
13.7.3 避免小數據包
13.7.4 確認延遲和窗口更新
13.7.5 重發(fā)狀態(tài)
13.7.6 慢啟動
13.7.7 源擁塞的處理
13.7.8 緩沖與窗口大小分配.
13.7.9 使用慢啟動避免擁塞
13.7.10 快速重發(fā)·
13.8 ICMP協(xié)議
13.9 IPv6
13.9.1 IPv6地址..
13.9.2 IPv6數據包格式
13.9.3 套接口API的調整
13.9.4 自動配置
13.10 安全
13.10.1 IPSec概述
13.10.2 安全協(xié)議
13.10.3 密鑰管理
13.10.4 IPSec實現
13.10.5 密碼子系統(tǒng)
13.11復習題
13.12 參考文獻
第五部分 系統(tǒng)運行
第14章 啟動和關機
14.1 概述
14.2 引導
14.3 初始化內核
14.4 初始化內核模塊
14.4.1 基本服務
14.4.2 初始化內核線程
14.4.3 初始化設備模塊
14.4.4 內核的可加載模塊
14.4.5 啟動進程間通信
14.4.6 啟動內核線程
14.5 用戶級仞始化
14.5.1 /sbin/init
14.5.2 系統(tǒng)的啟動腳本
14.5.3 /usr/libexec/getty
14.5.4 /usr/bin/lo~in
14.6 系統(tǒng)運行
14.6.1 內核的配置
14.6.2 系統(tǒng)關機與自動重啟
14.6.3 系統(tǒng)調試
14.6.4 同內核傳遞信息
14.7 復習題
14.8 參考文獻
術語表