![]() ![]() 目 錄 雷蒙序 簡介 Linux文檔工程小組“公告” 譯者序 第一部分 Linux內核 前言 第1章 硬件基礎與軟件基礎 6 1.1 硬件基礎 6 1.1.1 CPU 7 1.1.2 存儲器 8 1.1.3 總線 8 1.1.4 控制器和外設 8 1.1.5 地址空間 9 1.1.6 時鐘 9 1.2 軟件基礎 9 1.2.1 計算機語言 9 1.2.2 什么是操作系統 11 1.2.3 內核數據結構 13 第2章 內存管理 15 2.1 虛擬內存抽象模型 15 2.1.1 請求調頁 17 2.1.2 交換 17 2.1.3 共享虛擬內存 18 2.1.4 物理尋址模式和虛擬尋址模式 18 2.1.5 訪問控制 18 2.2 高速緩存 19 2.3 Linux頁表 20 2.4 頁分配和回收 21 2.4.1 頁分配 22 2.4.2 頁回收 22 2.5 內存映射 22 2.6 請求調頁 23 2.7 Linux頁緩存 24 2.8 頁換出和淘汰 25 2.8.1 減少緩沖區和頁緩存大小 25 2.8.2 換出System V共享內存頁 26 2.8.3 換出和淘汰頁 27 2.9 交換緩存 27 2.10 頁換入 28 第3章 進程 29 3.1 Linux進程 29 3.2 標識符 31 3.3 調度 32 3.4 文件 34 3.5 虛擬內存 35 3.6 創建進程 36 3.7 時間和定時器 37 3.8 執行程序 38 3.8.1 ELF 39 3.8.2 腳本文件 40 第4章 進程間通信機制 41 4.1 信號機制 41 4.2 管道 42 4.3 套接字 44 4.3.1 System V的進程間通信機制 44 4.3.2 消息隊列 44 4.3.3 信號量 45 4.3.4 共享存儲區 47 第5章 PCI 49 5.1 PCI的地址空間 49 5.2 PCI配置頭 50 5.3 PCI的I/O和存儲地址空間 51 5.4 PCI-ISA橋 51 5.5 PCI-PCI 橋 51 5.5.1 PCI-PCI橋:PCI I/O和存儲地址 空間的窗口 51 5.5.2 PCI-PCI橋:PCI配置周期和PCI 總線編號 52 5.6 Linux PCI初始化 53 5.6.1 Linux內核PCI數據結構 53 5.6.2 PCI設備驅動程序 53 5.6.3 PCI的BIOS函數 56 5.6.4 PCI修正過程 57 第6章 中斷處理與設備驅動程序 60 6.1 中斷與中斷處理 60 6.1.1 可編程中斷控制器 61 6.1.2 初始化中斷處理數據結構 61 6.1.3 中斷處理 62 6.2 設備驅動程序 63 6.2.1 測試與中斷 64 6.2.2 直接存儲器訪問(DMA) 65 6.2.3 存儲器 66 6.2.4 設備驅動程序與內核的接口 66 6.2.5 硬盤 69 6.2.6 網絡設備 74 第7章 文件系統 77 7.1 第二個擴展文件系統EXT2 78 7.1.1 EXT2系統的inode節點 79 7.1.2 EXT2系統的超級塊 80 7.1.3 EXT2系統的組描述符 80 7.1.4 EXT2系統的目錄 81 7.1.5 在EXT2文件系統中查找文件 81 7.1.6 在EXT2文件系統中改變文件 的大小 82 7.2 虛擬文件系統 83 7.2.1 VFS文件系統的超級塊 84 7.2.2 VFS文件系統的inode節點 84 7.2.3 注冊文件系統 85 7.2.4 裝配文件系統 85 7.2.5 在虛擬文件系統中查找文件 87 7.2.6 卸載文件系統 87 7.2.7 VFS文件系統的inode緩存 87 7.2.8 目錄緩存 88 7.3 緩沖區緩存 88 7.3.1 bdflush內核守護進程 90 7.3.2 update進程 90 7.4 /proc文件系統 91 7.5 特殊設備文件 91 第8章 網絡 92 8.1 TCP/IP網絡概述 92 8.2 Linux中的TCP/IP網絡層次結構 95 8.3 BSD套接字接口 96 8.4 INET的套接字層 97 8.4.1 創建BSD套接字 98 8.4.2 為INET BSD Socket綁定地址 99 8.4.3 建立INET BSD Socket連接 99 8.4.4 INET BSD Socket偵聽 100 8.4.5 接受連接請求 100 8.5 IP層 100 8.5.1 套接字緩沖區 100 8.5.2 接收IP報文 101 8.5.3 發送IP報文 102 8.5.4 數據分片 102 8.6 地址解析協議 103 8.7 IP路由 104 第9章 內核機制與模塊 107 9.1 內核機制 107 9.1.1 Bottom Half控制 107 9.1.2 任務隊列 108 9.1.3 定時器 109 9.1.4 等待隊列 110 9.1.5 自旋鎖 110 9.1.6 信號量 110 9.2 模塊 111 9.2.1 模塊載入 112 9.2.2 模塊卸載 113 第10章 處理器 115 10.1 X86 115 10.2 ARM 115 10.3 Alpha AXP處理器 115 第11章 Linux內核源代碼 117 11.1 怎樣得到Linux內核源碼 117 11.2 內核源碼的編排 117 11.3 從何處看起 118 第12章 Linux數據結構 120 附錄A 有用的Web和FTP站點 138 附錄B 詞匯表 139 第二部分 Linux內核模塊編程指南 致謝 前言 第1章 Hello, World 145 1.1 內核模塊的Makefiles文件 146 1.2 多重文件內核模塊 147 第2章 字符設備文件 149 第3章 /proc文件系統 158 第4章 把/proc用于輸入 162 第5章 把設備文件用于輸入 170 第6章 啟動參數 182 第7章 系統調用 185 第8章 阻塞處理 190 第9章 替換printk 199 第10章 任務調度 202 第11章 中斷處理程序 207 第12章 對稱多處理 211 第13章 常見錯誤 212 附錄A 2.0和2.2之間的差異 213 附錄B 其他資源 214 附錄C 給出你的評價 215 第三部分 Linux程序員指南 第1章 Linux操作系統 219 第2章 Linux內核 220 第3章 Linux libc包 221 第4章 系統調用 222 第5章 “瑞士軍刀”:ioctl 223 第6章 Linux進程間通信 224 6.1 介紹 224 6.2 半雙工Unix管道 224 6.2.1 基本概念 224 6.2.2 用C語言創建管道 225 6.2.3 簡便方法 229 6.2.4 管道的原子操作 233 6.2.5 關于半雙工管道需要注意的幾個 問題 233 6.3 命名管道 234 6.3.1 基本概念 234 6.3.2 創建FIFO 234 6.3.3 FIFO操作 235 6.3.4 FIFO上的阻塞動作 236 6.3.5 SIGPIPE信號 237 6.4 系統V IPC 237 6.4.1 基本概念 237 6.4.2 消息隊列 239 6.4.3 信號量 251 6.4.4 semtool:交互式信號量操作 程序 260 6.4.5 共享內存 267 第7章 聲音編程 274 7.1 內部揚聲器編程 274 7.2 聲卡編程 274 第8章 字符單元圖形 276 8.1 libc中的I/O函數 277 8.1.1 格式化輸出 277 8.1.2 格式化輸入 278 8.2 termcap庫 278 8.2.1 前言 278 8.2.2 獲得終端描述 279 8.2.3 查看終端描述 279 8.2.4 termcap權能 280 8.3 Ncurses簡介 280 8.4 初始化 282 8.5 窗口 283 8.6 輸出 284 8.6.1 格式化輸出 285 8.6.2 插入字符/行 286 8.6.3 刪除字符/行 286 8.6.4 方框和直線 287 8.6.5 背景字符 287 8.7 輸入 288 8.8 選項 289 8.8.1 輸出選項 289 8.8.2 輸入選項 290 8.8.3 終端屬性 291 8.8.4 使用選項 291 8.9 更新終端 292 8.10 視頻屬性與顏色 293 8.11 光標和屏幕坐標 294 8.12 滾動 294 8.13 小鍵盤 295 8.14 軟標簽 295 8.15 雜項 295 8.16 低級訪問 296 8.17 屏幕轉儲 296 8.18 Termcap模擬 296 8.19 Terminfo函數 296 8.20 調試函數 297 8.21 Terminfo權能 297 8.21.1 布爾型權能 297 8.21.2 數值型權能 298 8.21.3 字符串型權能 299 8.22 [N]Curses函數概述 306 第9章 I/O端口編程 307 9.1 鼠標編程 307 9.2 調制解調器編程 308 9.3 打印機編程 308 9.4 游戲桿編程 308 第10章 把應用程序移植到Linux上 309 10.1 介紹 309 10.2 信號處理 309 10.2.1 SVR4、BSD和POSIX.1下 的信號 310 10.2.2 Linux信號選項 310 10.2.3 Linux下的信號 310 10.2.4 Linux支持的信號 311 10.3 終端I/O 311 10.4 進程信息和控制 311 10.4.1 kvm過程 312 10.4.2 ptrace和/proc文件系統 312 10.4.3 Linux下的進程控制 312 10.5 可移植條件編譯 313 10.6 補充說明 314 附錄 以字母順序排列的系統調用 315 第四部分 Linux內核概念系統結構 摘要 323 前言 324 第1章 系統結構 325 1.1 系統概述 325 1.2 內核的目標 325 1.3 內核結構的概述 325 1.4 支持多個開發人員 327 1.5 系統數據結構 328 1.5.1 任務列表 328 1.5.2 內存映射 328 1.5.3 索引節點 328 1.5.4 數據連接 329 第2章 子系統的系統結構 330 2.1 進程調度程序系統結構 330 2.1.1 目標 330 2.1.2 模塊 330 2.1.3 數據表達 331 2.1.4 依賴性、數據流和控制流 331 2.2 內存管理程序系統結構 331 2.2.1 目標 331 2.2.2 模塊 331 2.2.3 數據表示 331 2.2.4 數據流、控制流和依賴性 332 2.3 虛擬文件系統系統結構 333 2.3.1 目標 333 2.3.2 模塊 333 2.3.3 數據表示 333 2.3.4 數據流、控制流和依賴性 334 2.4 網絡接口系統結構 334 2.4.1 目標 334 2.4.2 模塊 334 2.4.3 數據表示 335 2.4.4 數據流、控制流和依賴性 335 2.5 進程間通信系統結構 335 第3章 結論 336 附錄A 術語定義 337 附錄B 參考文獻 338 第五部分 Linux內核具體系統結構 摘要 341 第1章 前言 342 1.1 目標 342 1.2 Linux介紹 342 1.3 軟件系統結構的背景知識 342 1.4 方法與途徑 343 1.5 適用本書的讀者 344 1.6 本部分的章節安排 344 第2章 系統結構 345 第3章 子系統結構 346 3.1 進程調度程序 346 3.1.1 目標 346 3.1.2 外部接口 346 3.1.3 子系統描述 346 3.1.4 數據結構 347 3.1.5 子系統結構 348 3.1.6 子系統依賴性 348 3.2 內存管理程序 348 3.2.1 目標 348 3.2.2 外部接口 349 3.2.3 子系統描述 349 3.2.4 數據結構 350 3.2.5 子系統結構 350 3.2.6 子系統依賴性 351 3.3 虛擬文件系統 352 3.3.1 目標 352 3.3.2 外部接口 352 3.3.3 子系統描述 353 3.3.4 設備驅動程序 353 3.3.5 邏輯文件系統 354 3.3.6 模塊 354 3.3.7 數據結構 355 3.3.8 子系統結構 355 3.3.9 子系統依賴性 355 3.4 進程間通信 355 3.4.1 目標 355 3.4.2 外部接口 357 3.4.3 子系統描述 357 3.4.4 數據結構 358 3.4.5 子系統結構 359 3.4.6 子系統依賴性 359 3.5 網絡接口 360 3.5.1 目標 360 3.5.2 外部接口 361 3.5.3 子系統描述 361 3.5.4 數據結構 362 3.5.5 子系統結構 363 3.5.6 子系統依賴性 363 第4章 結論 365 附錄A 術語定義 366 附錄B 參考文獻 368 第六部分 附 錄 附錄A Linux文檔工程拷貝許可證 372 附錄B GNU通用公共許可證 374 |
thanks |
![]() ![]() |
謝謝分享 |
謝樓主 |
下來看看,想轉linux了 |
好東西,謝謝樓主 |
學習,學習,努力學習 |
![]() |
牛 |