注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡操作系統(tǒng)LinuxLinux內核編程

Linux內核編程

Linux內核編程

定 價:¥49.00

作 者: (美)羅瑞吉 著;陳莉君 譯
出版社: 機械工業(yè)出版社
叢編項:
標 簽: Linux

購買這本書可以去


ISBN: 9787111192176 出版時間: 2006-07-01 包裝: 平裝
開本: 16開 頁數(shù): 386 字數(shù):  

內容簡介

  本書是一本Linux內核編程的權威指南,其獨特的由表及里學習途徑使得內核編程更易于理解。本書從用戶空間到內核,把內核的實現(xiàn)原理與用戶級編程的基本原則相聯(lián)系,系統(tǒng)地跟蹤了實現(xiàn)功能。這種途徑有助于在你所了解的Linux知識基礎上,加深對內核組成及工作機理的理解。 為了理解內核代碼并掌控其行為,作者逐步引入所有的工具和匯編語言編程技術,并一一比較x86和PowerPC的實現(xiàn),揭示了含糊不清的實現(xiàn)功能。另外,書中對源代碼例子和實際項目都加有適當注釋。本書是第一本全面涵蓋快速增長的PowerPC Linux開發(fā)平臺的書,也是惟一一本用Linux構建系統(tǒng)徹底討論內核配置的書。 本書主要內容● 數(shù)據(jù)結構 ● x86和PPC匯編語言 ● 查看內核內部狀態(tài) ● Linux進程模型 ● 用戶空間和內核空間 ● 中斷和異常 ● 內存分配和跟蹤 ● 跟蹤子系統(tǒng)行為 ● I/O交互 ● 文件系統(tǒng)和文件操作 ● 調度和同步 ● 內核啟動過程 ● 內核構建過程 ● 配置選項 ● 設備驅動程序 本書介紹了Linux內核編程需要的所有技巧和技術,無論對于系統(tǒng)程序員、軟件工程師、系統(tǒng)分析員、測試人員還是Linux的熱衷者來說,都是不可或缺的參考書。

作者簡介

  Claudia Salzberg Rodriguez就職于IBM Linux技術中心,負責內核及相關編程工具的開發(fā)。在擔任Linux系統(tǒng)程序員的5年多時間里,她一直針對Intel和PPC平臺,進行從嵌入式到高性能系統(tǒng)的Linux開發(fā)。

圖書目錄

第1章 概述
1.1 UNIX發(fā)展史 1
1.2 標準和通用接口 2
1.3 自由軟件和開放源碼 3
1.4 Linux發(fā)布版的快速瀏覽 3
1.4.1 Debian 4
1.4.2 Red Hat/Fedora 4
1.4.3 Mandriva 4
1.4.4 SUSE 4
1.4.5 Gentoo 4
1.4.6 Yellow Dog 4
1.4.7 其他發(fā)布版 5
1.5 內核版本信息 5
1.6 基于Power的Linux 5
1.7 操作系統(tǒng)的概念 6
1.8 內核組織 7
1.9 Linux內核概述 7
1.9.1 用戶接口 7
1.9.2 用戶身份鑒別 8
1.9.3 文件和文件系統(tǒng) 8
1.9.4 進程 12
1.9.5 系統(tǒng)調用 15
1.9.6 Linux調度程序 15
1.9.7 Linux設備驅動程序 16
1.10 可移植性和體系結構相關性 16
小結 17
習題 17
第2章 內核探索工具集  18
2.1 內核中常見的數(shù)據(jù)類型 18
2.1.1 鏈表 18
2.1.2 查找 21
2.1.3 樹 21
2.2 匯編 23
2.2.1 PowerPC 24
2.2.2 x86 26
2.3 匯編語言示例 28
2.3.1 x86中的匯編示例 29
2.3.2 PowerPC中的匯編示例 31
2.4 內聯(lián)匯編 33
2.4.1 輸出操作數(shù) 33
2.4.2 輸入操作數(shù) 33
2.4.3 修改過的寄存器(或者已修改元素列表) 33
2.4.4 參數(shù)的編號方式 34
2.4.5 約束條件 34
2.4.6 asm 34
2.4.7 volatile  34
2.5 特殊的C語言用法 37
2.5.1 asmlinkage 37
2.5.2 UL 38
2.5.3 inline 38
2.5.4 const和volatile 38
2.6 內核探測工具一覽 39
2.6.1 objdump/readelf 39
2.6.2 hexdump 40
2.6.3 nm 41
2.6.4 objcopy 41
2.6.5 ar 41
2.7 內核發(fā)言:傾聽來自內核的消息 41
2.7.1 printk() 41  
2.7.2 dmesg 41
2.7.3 /var/log/messages 42
2.8 其他 42
2.8.1 init 42
2.8.2 likely()和unlikely() 42
2.8.3 IS ERR和PTR ERR 43
2.8.4 通告程序鏈 44
小結 44
項目:Hellomode 44
習題 47
第3章 進程:程序執(zhí)行的基本模型  48
3.1 引入程序 49
3.2 進程描述符 51
3.2.1 與進程屬性相關的域 53
3.2.2 與調度相關的域 54
3.2.3 涉及進程間相互關系的域 56
3.2.4 進程信任度相關的域 58
3.2.5 進程權能相關的域 59
3.2.6 進程限制相關的域 60
3.2.7 文件系統(tǒng)和地址空間相關的域 61
3.3 進程的創(chuàng)建:fork()、vfork和clone()系統(tǒng)調用 62
3.3.1 fork()函數(shù) 64
3.3.2 vfork()函數(shù) 64
3.3.3 clone()函數(shù) 65
3.3.4 do fork()函數(shù) 66
3.4 進程生命周期 68
3.4.1 進程的狀態(tài) 68
3.4.2 進程狀態(tài)轉換 69
3.5 進程的終止 72
3.5.1 sys exit()函數(shù) 73
3.5.2 do exit()函數(shù) 73
3.5.3 父進程通知和sys wait4() 75
3.6 了解進程的動態(tài):調度程序的基本構架 77
3.6.1 基本結構 78
3.6.2 從等待中醒來或者激活 79
3.7 等待隊列 83
3.7.1 添加到等待隊列 85
3.7.2 等待事件 86
3.7.3 喚醒進程 88
3.8 異步執(zhí)行流程 90
3.8.1 異常 90
3.8.2 中斷 92
小結 109
項目:current系統(tǒng)變量 110
習題 112
第4章 內存管理  113
4.1 頁 115
4.1.1 標志 116
4.2 內存區(qū) 117
4.2.1 內存區(qū)描述符 117
4.2.2 內存區(qū)操作輔助函數(shù)組 119
4.3 頁面 120
4.3.1 請求頁面函數(shù)族 120
4.3.2 釋放頁面的函數(shù)族 121
4.3.3 伙伴系統(tǒng) 122
4.4 Slab分配器 126
4.4.1 緩存描述符 127
4.4.2 通用目的緩存描述符 131
4.4.3 slab描述符 131
4.5 slab分配器的生命周期 133
4.5.1 slab分配器有關的全局變量 133
4.5.2 創(chuàng)建緩存 134
4.5.3 slab創(chuàng)建與cache grow() 139
4.5.4 Slab的銷毀:退還內存與kmem cache destroy() 141
4.6 內存請求路徑 142
4.6.1 kmalloc() 142
4.6.2 kmem cache alloc() 143
4.7 進程內存結構 144
4.7.1 mm struct 144
4.7.2 vm area struct 146
4.8 進程映像分布于線性地址空間 147
4.9 頁表 150
4.10 缺頁 150  
4.10.1 x86缺頁異常 151
4.10.2 缺頁處理程序 151
4.10.3 PowerPC缺頁異常 158
小結 158
項目:進程內存映射 159
習題 160
第5章 輸入/輸出  161
5.1 硬件如何實現(xiàn)總線、橋、端口和接口 161
5.2 設備 165
5.2.1 塊設備概述 165
5.2.2 請求隊列和I/O調度 166
5.2.3 示例:“通用”塊設備驅動程序 174
5.2.4 設備操作 176
5.2.5 字符設備概述 177
5.2.6 網(wǎng)絡設備 177
5.2.7 時鐘設備 177
5.2.8 終端設備 178
5.2.9 直接存儲器存取 178
小結 178
項目:創(chuàng)建并口驅動程序 178
習題 186
第6章 文件系統(tǒng)  187
6.1 文件系統(tǒng)的一般概念 187
6.1.1 文件和文件名 187
6.1.2 文件類型 188
6.1.3 附加文件屬性 188
6.1.4 目錄和路徑名 189
6.1.5 文件的操作 189
6.1.6 文件描述符 189
6.1.7 磁盤塊,磁盤分區(qū)及其實現(xiàn) 190
6.1.8 性能 191
6.2 Linux的虛擬文件系統(tǒng) 191
6.2.1 VFS的數(shù)據(jù)結構 193
6.2.2 全局鏈表和局部鏈表的引用 203
6.3 與VFS相關的結構 204
6.3.1 fs struct結構 205
6.3.2 files struct結構 205
6.4 頁緩沖 208
6.4.1 address space結構 209
6.4.2 buffer head結構 210
6.5 VFS的系統(tǒng)調用和文件系統(tǒng)層 212
6.5.1 open() 213
6.5.2 close() 217
6.5.3 read() 220
6.5.4 write() 235
小結 236
習題 237
第7章 調度和內核同步  238
7.1 Linux調度程序 239
7.1.1 選擇下一個進程 239
7.1.2 上下文切換 244
7.1.3 讓出CPU 251
7.2 搶占 259
7.2.1 顯式內核搶占 259
7.2.2 隱式用戶搶占 259
7.2.3 隱式內核搶占 260
7.3 自旋鎖和信號量 262
7.4 系統(tǒng)時鐘:關于時間和定時器 264
7.4.1 實時時鐘:現(xiàn)在幾點了? 264
7.4.2 讀取PPC實時時鐘 266
7.4.3 讀取x86的實時時鐘 268
小結 269
習題 270
第8章 內核引導  271
8.1 BIOS和Open Firmware 272
8.2 引導裝入程序(Boot Loaders) 272
8.2.1 GRUB 273
8.2.2 LILO 275
8.2.3 PowerPC和Yaboot 276
8.3 體系結構相關的內存初始化 277
8.3.1 PowerPC的硬件內存管理 277
8.3.2 基于Intel x86體系結構的硬件內存管理 286
8.3.3 PowerPC和x86的代碼匯集 294
8.4 原始的RAM盤 294 8.5 開始:start kernel() 295
8.5.1 調用lock kernel() 296
8.5.2 調用page address init() 298
8.5.3 調用printk(linux banner) 300
8.5.4 調用setup arch 300
8.5.5 調用setup per cpu areas() 303
8.5.6 調用smp prepare boot cpu() 304
8.5.7 調用sched init() 305
8.5.8 調用build all zonelists() 307
8.5.9 調用page alloc init 307
8.5.10 調用parse args() 308
8.5.11 調用trap init() 310
8.5.12 調用rcu init() 310
8.5.13 調用init IRQ() 311
8.5.14 調用softirq init() 312
8.5.15 調用time init() 312
8.5.16 調用console init() 313
8.5.17 調用profile init() 314
8.5.18 調用local irq enable() 314
8.5.19 配置initrd 315
8.5.20 調用mem init() 315
8.5.21 調用late time init() 320
8.5.22 調用calibrate delay() 320
8.5.23 調用pgtable cache init() 321
8.5.24 調用buffer init() 322
8.5.25 調用security scaffolding startup() 323
8.5.26 調用vfs caches init() 323
8.5.27 調用radix tree init() 329
8.5.28 調用signal init() 330
8.5.29 調用page writeback init() 330
8.5.30 調用proc root init() 332
8.5.31 調用init idle() 334
8.5.32 調用rest init() 334
8.6 init線程(或進程1) 335
小結 339
習題 339
第9章 構建Linux內核  340
9.1 工具鏈 340
9.1.1 編譯程序 341
9.1.2 跨編譯程序 341
9.1.3 鏈接程序 342
9.1.4 ELF二進制目標文件 342
9.2 編譯內核源代碼 346
9.2.1 解釋源代碼 346
9.2.2 編譯內核映像 349
小結 355
習題 355
第10章 向內核添加代碼  356
10.1 瀏覽源代碼 356
10.1.1 熟悉文件系統(tǒng) 356
10.1.2 Filps和Fops 357
10.1.3 用戶空間和內核空間 359
10.1.4 等待隊列 360
10.1.5 工作隊列和中斷 363
10.1.6 系統(tǒng)調用 365
10.1.7 其他類型的驅動程序 365
10.1.8 設備模型和sysfs系統(tǒng)文件 368
10.2 編寫源代碼 370
10.2.1 設備基礎 370
10.2.2 符號輸出 372
10.2.3 IOCTL 373
10.2.4 輪詢與中斷 375
10.2.5 工作隊列和Tasklets 379
10.2.6 增加系統(tǒng)調用的代碼 380
10.3 編譯和調試 382
小結 383
習題 384
參考文獻  385

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號