注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)LinuxLinux內(nèi)核編程

Linux內(nèi)核編程

Linux內(nèi)核編程

定 價:¥49.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第1章 概述
1.1 UNIX發(fā)展史 1
1.2 標(biāo)準(zhǔn)和通用接口 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 內(nèi)核版本信息 5
1.6 基于Power的Linux 5
1.7 操作系統(tǒng)的概念 6
1.8 內(nèi)核組織 7
1.9 Linux內(nèi)核概述 7
1.9.1 用戶接口 7
1.9.2 用戶身份鑒別 8
1.9.3 文件和文件系統(tǒng) 8
1.9.4 進(jìn)程 12
1.9.5 系統(tǒng)調(diào)用 15
1.9.6 Linux調(diào)度程序 15
1.9.7 Linux設(shè)備驅(qū)動程序 16
1.10 可移植性和體系結(jié)構(gòu)相關(guān)性 16
小結(jié) 17
習(xí)題 17
第2章 內(nèi)核探索工具集  18
2.1 內(nèi)核中常見的數(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 內(nèi)聯(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 內(nèi)核探測工具一覽 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 內(nèi)核發(fā)言:傾聽來自內(nèi)核的消息 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
小結(jié) 44
項目:Hellomode 44
習(xí)題 47
第3章 進(jìn)程:程序執(zhí)行的基本模型  48
3.1 引入程序 49
3.2 進(jìn)程描述符 51
3.2.1 與進(jìn)程屬性相關(guān)的域 53
3.2.2 與調(diào)度相關(guān)的域 54
3.2.3 涉及進(jìn)程間相互關(guān)系的域 56
3.2.4 進(jìn)程信任度相關(guān)的域 58
3.2.5 進(jìn)程權(quán)能相關(guān)的域 59
3.2.6 進(jìn)程限制相關(guān)的域 60
3.2.7 文件系統(tǒng)和地址空間相關(guān)的域 61
3.3 進(jìn)程的創(chuàng)建:fork()、vfork和clone()系統(tǒng)調(diào)用 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 進(jìn)程生命周期 68
3.4.1 進(jìn)程的狀態(tài) 68
3.4.2 進(jìn)程狀態(tài)轉(zhuǎn)換 69
3.5 進(jìn)程的終止 72
3.5.1 sys exit()函數(shù) 73
3.5.2 do exit()函數(shù) 73
3.5.3 父進(jìn)程通知和sys wait4() 75
3.6 了解進(jìn)程的動態(tài):調(diào)度程序的基本構(gòu)架 77
3.6.1 基本結(jié)構(gòu) 78
3.6.2 從等待中醒來或者激活 79
3.7 等待隊列 83
3.7.1 添加到等待隊列 85
3.7.2 等待事件 86
3.7.3 喚醒進(jìn)程 88
3.8 異步執(zhí)行流程 90
3.8.1 異常 90
3.8.2 中斷 92
小結(jié) 109
項目:current系統(tǒng)變量 110
習(xí)題 112
第4章 內(nèi)存管理  113
4.1 頁 115
4.1.1 標(biāo)志 116
4.2 內(nèi)存區(qū) 117
4.2.1 內(nèi)存區(qū)描述符 117
4.2.2 內(nèi)存區(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分配器有關(guān)的全局變量 133
4.5.2 創(chuàng)建緩存 134
4.5.3 slab創(chuàng)建與cache grow() 139
4.5.4 Slab的銷毀:退還內(nèi)存與kmem cache destroy() 141
4.6 內(nèi)存請求路徑 142
4.6.1 kmalloc() 142
4.6.2 kmem cache alloc() 143
4.7 進(jìn)程內(nèi)存結(jié)構(gòu) 144
4.7.1 mm struct 144
4.7.2 vm area struct 146
4.8 進(jìn)程映像分布于線性地址空間 147
4.9 頁表 150
4.10 缺頁 150  
4.10.1 x86缺頁異常 151
4.10.2 缺頁處理程序 151
4.10.3 PowerPC缺頁異常 158
小結(jié) 158
項目:進(jìn)程內(nèi)存映射 159
習(xí)題 160
第5章 輸入/輸出  161
5.1 硬件如何實現(xiàn)總線、橋、端口和接口 161
5.2 設(shè)備 165
5.2.1 塊設(shè)備概述 165
5.2.2 請求隊列和I/O調(diào)度 166
5.2.3 示例:“通用”塊設(shè)備驅(qū)動程序 174
5.2.4 設(shè)備操作 176
5.2.5 字符設(shè)備概述 177
5.2.6 網(wǎng)絡(luò)設(shè)備 177
5.2.7 時鐘設(shè)備 177
5.2.8 終端設(shè)備 178
5.2.9 直接存儲器存取 178
小結(jié) 178
項目:創(chuàng)建并口驅(qū)動程序 178
習(xí)題 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ù)結(jié)構(gòu) 193
6.2.2 全局鏈表和局部鏈表的引用 203
6.3 與VFS相關(guān)的結(jié)構(gòu) 204
6.3.1 fs struct結(jié)構(gòu) 205
6.3.2 files struct結(jié)構(gòu) 205
6.4 頁緩沖 208
6.4.1 address space結(jié)構(gòu) 209
6.4.2 buffer head結(jié)構(gòu) 210
6.5 VFS的系統(tǒng)調(diào)用和文件系統(tǒng)層 212
6.5.1 open() 213
6.5.2 close() 217
6.5.3 read() 220
6.5.4 write() 235
小結(jié) 236
習(xí)題 237
第7章 調(diào)度和內(nèi)核同步  238
7.1 Linux調(diào)度程序 239
7.1.1 選擇下一個進(jìn)程 239
7.1.2 上下文切換 244
7.1.3 讓出CPU 251
7.2 搶占 259
7.2.1 顯式內(nèi)核搶占 259
7.2.2 隱式用戶搶占 259
7.2.3 隱式內(nèi)核搶占 260
7.3 自旋鎖和信號量 262
7.4 系統(tǒng)時鐘:關(guān)于時間和定時器 264
7.4.1 實時時鐘:現(xiàn)在幾點了? 264
7.4.2 讀取PPC實時時鐘 266
7.4.3 讀取x86的實時時鐘 268
小結(jié) 269
習(xí)題 270
第8章 內(nèi)核引導(dǎo)  271
8.1 BIOS和Open Firmware 272
8.2 引導(dǎo)裝入程序(Boot Loaders) 272
8.2.1 GRUB 273
8.2.2 LILO 275
8.2.3 PowerPC和Yaboot 276
8.3 體系結(jié)構(gòu)相關(guān)的內(nèi)存初始化 277
8.3.1 PowerPC的硬件內(nèi)存管理 277
8.3.2 基于Intel x86體系結(jié)構(gòu)的硬件內(nèi)存管理 286
8.3.3 PowerPC和x86的代碼匯集 294
8.4 原始的RAM盤 294 8.5 開始:start kernel() 295
8.5.1 調(diào)用lock kernel() 296
8.5.2 調(diào)用page address init() 298
8.5.3 調(diào)用printk(linux banner) 300
8.5.4 調(diào)用setup arch 300
8.5.5 調(diào)用setup per cpu areas() 303
8.5.6 調(diào)用smp prepare boot cpu() 304
8.5.7 調(diào)用sched init() 305
8.5.8 調(diào)用build all zonelists() 307
8.5.9 調(diào)用page alloc init 307
8.5.10 調(diào)用parse args() 308
8.5.11 調(diào)用trap init() 310
8.5.12 調(diào)用rcu init() 310
8.5.13 調(diào)用init IRQ() 311
8.5.14 調(diào)用softirq init() 312
8.5.15 調(diào)用time init() 312
8.5.16 調(diào)用console init() 313
8.5.17 調(diào)用profile init() 314
8.5.18 調(diào)用local irq enable() 314
8.5.19 配置initrd 315
8.5.20 調(diào)用mem init() 315
8.5.21 調(diào)用late time init() 320
8.5.22 調(diào)用calibrate delay() 320
8.5.23 調(diào)用pgtable cache init() 321
8.5.24 調(diào)用buffer init() 322
8.5.25 調(diào)用security scaffolding startup() 323
8.5.26 調(diào)用vfs caches init() 323
8.5.27 調(diào)用radix tree init() 329
8.5.28 調(diào)用signal init() 330
8.5.29 調(diào)用page writeback init() 330
8.5.30 調(diào)用proc root init() 332
8.5.31 調(diào)用init idle() 334
8.5.32 調(diào)用rest init() 334
8.6 init線程(或進(jìn)程1) 335
小結(jié) 339
習(xí)題 339
第9章 構(gòu)建Linux內(nèi)核  340
9.1 工具鏈 340
9.1.1 編譯程序 341
9.1.2 跨編譯程序 341
9.1.3 鏈接程序 342
9.1.4 ELF二進(jìn)制目標(biāo)文件 342
9.2 編譯內(nèi)核源代碼 346
9.2.1 解釋源代碼 346
9.2.2 編譯內(nèi)核映像 349
小結(jié) 355
習(xí)題 355
第10章 向內(nèi)核添加代碼  356
10.1 瀏覽源代碼 356
10.1.1 熟悉文件系統(tǒng) 356
10.1.2 Filps和Fops 357
10.1.3 用戶空間和內(nèi)核空間 359
10.1.4 等待隊列 360
10.1.5 工作隊列和中斷 363
10.1.6 系統(tǒng)調(diào)用 365
10.1.7 其他類型的驅(qū)動程序 365
10.1.8 設(shè)備模型和sysfs系統(tǒng)文件 368
10.2 編寫源代碼 370
10.2.1 設(shè)備基礎(chǔ) 370
10.2.2 符號輸出 372
10.2.3 IOCTL 373
10.2.4 輪詢與中斷 375
10.2.5 工作隊列和Tasklets 379
10.2.6 增加系統(tǒng)調(diào)用的代碼 380
10.3 編譯和調(diào)試 382
小結(jié) 383
習(xí)題 384
參考文獻(xiàn)  385

本目錄推薦

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