LInux核心分析及編程

LInux核心分析及編程

《LInux核心分析及編程》是電子工業出版社出版的圖書,作者是倪繼利 。

基本介紹

  • 書名:LInux核心分析及編程
  • 作者:倪繼利 
  • ISBN:9787121015182
  • 出版社:電子工業出版社I
基本信息,內容簡介,目錄,

基本信息

作 者:倪繼利 著 叢 書 名:出 版 社:電子工業出版社ISBN:9787121015182 出版時間:2005-09-01 版 次:1 頁 數:822 裝 幀:平裝 開 本:16開 所屬分類:圖書 > 計算機與網際網路 > 程式語言與程式設計

內容簡介

本書作者在整理自己多年研發筆記的基礎上,以精心挑選的典型開發實例,向讀者詳細講述了Linux核心原始碼的各部分結構、原理及組成框架,主要分析了Linux最新版本(2.6.11)的核心原始碼,幫助讀者深入理解Linux核心,精通Linux核心編程。全書分為20章,內容包括進程管理、進程間通信、記憶體管理、檔案系統、I/O接口及資源管理、核心的編譯及調試原理、網路通信、核心安全、USB驅動程式等。
對於想了解Linux開發,以及從事Linux核心編程的開發人員來說,本書是一本集大成之作,它既有講解透徹的原理,也有詳細實用的示例,更有作者多年從事實際開發工作的心得。本書主要針對從事Linux核心編程的中高級讀者及軟體工程師,也很合適作為大學教材和參考書。

目錄

第1章數據類型及鍊表1
1.1數據類型所占空間1
1.2有關移植性的其他問題3
1.2.1時間間隔3
1.2.2頁面大小3
1.2.3位元組存儲順序3
1.2.4數據對齊4
1.3核心通用鍊表4
1.3.1hlist哈希鍊表7
1.3.2RCU操作保護的鍊表8
1.4AT&T的彙編格式9
1.5核心中的時間延遲11
第2章進程及進程調度13
2.1進程結構13
2.2進程創建24
2.2.1對象快取的分配24
2.2.2系統調用sys_fork25
2.3核心執行緒26
2.4工作佇列27
2.4.1工作佇列的結構及宏定義28
2.4.2工作佇列的建立29
2.5進程調度33
2.5.1runqueue結構34
2.5.2進程調度初始化36
2.5.3負載平衡的啟動38
2.5.4負載平衡的方法42
2.5.5函式schedule分析46
2.5.6調度器的實時性能51
2.6Linux核心搶占51
第3章核心同步機制55
3.1核心中的互斥機制55
3.1.1自旋鎖55
3.1.2原子操作59
3.1.3信號量60
3.2RCU64
3.2.1RCU原理介紹64
3.2.2RCU套用實例66
3.2.3RCU相關數據結構67
3.2.4核心RCU機制的建立68
3.2.5RCU回調處理73
3.3核心與用戶空間的通信機制74
3.3.1熱插拔操作74
3.3.2核心發訊息到用戶空間通信機制75
3.3.3核心空間調用用戶空間程式78
第4章記憶體管理81
4.1記憶體地址類型和記憶體保護82
4.1.1地址類型82
4.1.2記憶體保護83
4.280386的段頁式管理機制84
4.2.1描述符及分段84
4.2.2物理記憶體分頁機制85
4.3IA-64Linux地址空間劃分86
4.4進程的記憶體組織88
4.4.1記憶體管理的數據結構88
4.4.2VMA在/proc檔案系統中的顯示90
4.5虛擬記憶體管理91
4.5.1大容量對象快取91
4.5.2記憶體映射94
4.5.3物理記憶體的反向映射110
4.5.4虛擬記憶體的加鎖和保護113
4.6物理記憶體管理114
4.6.1物理記憶體的結構114
4.6.2物理頁點陣圖116
4.6.3物理記憶體的初始化過程117
4.6.4物理頁面的分配和回收121
4.6.5快取及slab125
4.6.6快取分配的套用129
4.6.7分配快取函式的分析129
4.6.8交換空間135
4.6.9請頁機制137
4.6.10守護進程kswapd139
4.6.11記憶體管理相關的高速快取144
4.6.12記憶體緩衝池144
4.6.13大塊記憶體頁147
第5章虛擬檔案系統149
5.1VFS的超級塊.dentry和節點結構150
5.2與進程聯繫的檔案系統相關結構153
5.3系統有關操作函式集的結構155
5.3.1super_operations155
5.3.2inode_operations156
5.3.3file_operations156
5.3.4dquot_operations157
5.4檔案系統的建立過程157
5.5檔案系統的註冊.安裝與卸載159
5.5.1檔案系統的註冊159
5.5.2檔案系統的安裝與卸載160
5.6檔案系統的系統調用過程160
5.6.1系統調用open161
5.6.2read系統調用170
5.7檔案系統的各種快取172
5.7.1塊快取buffer172
5.7.2inode快取182
5.7.3目錄條目dentry快取185
5.8快取同步操作——sys_sync系統調用189
5.8.1多個節點同步回寫操作函式
5.8.1sync_inodes189
5.8.2單個節點同步回寫操作函式sync_inodes_sb190
5.8.3節點地址空間數據回寫操作函式194
5.8.4塊設備節點映射的數據同步回寫
5.8.4函式sync_blockdev200
5.9pdflush執行緒池203
5.9.1pdflush執行緒池的實現203
5.9.2pdflush執行緒使用實例
5.9.2——wakeup_bdflush206
5.10限額機制207
第6章EXT2檔案系統208
6.1EXT2檔案系統的幾個數據結構210
6.1.1EXT2超級塊210
6.1.2EXT2超級塊信息結構211
6.1.3超級塊的操作函式結構212
6.1.4EXT2的索引節點inode212
6.1.5EXT2檔案系統的節點信息結構214
6.1.6節點操作函式結構215
6.1.7檔案操作函式結構215
6.1.8EXT2檔案系統的組描述符215
6.2EXT2檔案系統建立過程215
6.3ext2_read_inode函式分析220
6.4ext2_write_inode函式分析221
6.5檔案的讀寫223
6.6檔案擴展時的數據塊分配策略228
6.7EXT2的目錄項及檔案的定位234
6.8連結檔案237
第7章其他檔案系統238
7.1ramfs記憶體檔案系統238
7.1.1ramfs檔案系統模組初始化238
7.1.2ramfs檔案系統操作函式集240
7.1.3檔案讀寫操作240
7.1.4目錄及節點操作函式集241
7.2/proc檔案系統242
7.2.1/proc檔案系統在調試中的作用243
7.2.2/proc檔案系統實現分析245
7.2.3在/proc中讀寫設備信息示例250
7.3VFAT檔案系統255
7.3.1FAT檔案系統的組成255
7.3.2引導記錄區DBR及定義256
7.3.3FAT檔案系統結構定義260
7.3.4VFAT檔案系統的註冊超級塊261
7.3.5超級塊操作函式集的實現264
7.3.6目錄操作函式集265
7.4Devfs檔案系統270
7.5sysfs檔案系統275
7.5.1核心對象相關結構276
7.5.2sysfs檔案系統的建立過程277
7.5.3sysfs提供給對象模型的調用函式278
7.5.4sysfs建立bus子系統280
7.5.5bus子系統的接口函式282
7.5.6在sysfs中建立pci目錄示例283
第8章I/O連線埠資源管理288
8.1I/O資源的描述288
8.1.1記憶體屏障289
8.1.2資源管理函式290
8.2中斷處理295
8.2.1硬體提供的中斷機制295
8.2.2Linux的中斷處理297
8.2.3中斷向量的設定和相關數據的
8.2.3初始化298
8.2.4中斷處理全過程299
8.2.5tasklet機制303
8.2.6中斷處理在/proc檔案系統中的報告311
8.2.7並口中斷處理程式示例311
8.3DMA315
8.3.1DMA控制器硬體結構315
8.3.2DMA通道使用的地址316
8.3.3DMA操作函式317
8.3.4DMA映射318
8.3.5DMA池321
8.3.6一個簡單的使用DMA例子324
8.4電源管理325
8.4.1ACPI規範介紹326
8.4.2ACPI的一些基本概念328
8.4.3ACPI的運行329
8.4.4ACPI驅動程式分析332
8.4.5pci的ACPI電源管理的實現337
8.4.6APM電源管理模式341
第9章模組機制348
9.1簡單模組示例348
9.2核心空間和用戶空間349
9.2.1處理器保護級349
9.2.2用戶空間和核心空間許可權350
9.2.3用戶空間和核心空間範圍及函式
9.2.3參數傳遞350
9.2.4核心態和用戶態之間數據傳遞352
9.3模組的使用過程353
9.4實現機制354
9.4.1模組在/proc檔案系統中的顯示354
9.4.2模組結構354
9.4.3模組數據宏操作356
9.4.4實現函式的分析359
9.5modutils介紹369
第10章設備驅動程式371
10.1設備檔案及設備訪問方式372
10.1.1輪詢與中斷372
10.1.2直接記憶體訪問(DMA)372
10.1.3設備驅動使用記憶體372
10.1.4設備檔案及接口372
10.2設備驅動程式模型374
10.2.1驅動模型中的描述結構374
10.2.2驅動程式向新的模型上遷移383
10.2.3即插即用386
10.2.4檔案系統中與設備驅動相關
10.2.4的結構389
10.3字元設備操作過程390
10.4塊設備偽檔案系統393
10.4.1塊設備檔案系統初始化393
10.4.2檔案操作函式集394
10.5通用硬碟GENHD398
10.6通用塊層403
10.6.1bio相關結構404
10.6.2bio_vec池405
10.6.3碎片鍊表406
10.6.4請求及請求佇列結構407
10.6.5通用的命令標誌請求410
10.6.6I/O調度器411
10.7塊設備的讀寫請求佇列及提交過程415
10.7.1初始化塊設備的請求佇列415
10.7.2塊設備讀寫請求的傳遞過程417
10.8IOCTL設備控制操作423
10.9編寫設備驅動程式的基本步驟425
10.9.1如何添加一個字元設備425
10.9.2如何添加一個塊設備425
第11章FLASH快閃記憶體及SD/MMC卡設備
第11章驅動程式427
11.1MTD記憶體技術設備427
11.1.1MTD記憶體技術設備層次結構428
11.1.2設備層和原始設備層的函式
11.1.2調用關係430
11.1.3MTD相關結構430
11.1.4MTD塊設備初始化432
11.1.5MTD塊設備的讀寫操作439
11.1.6MTD核心初始化442
11.1.7MTD字元設備443
11.1.8具體flash晶片的探測及映射444
11.1.9驅動程式實例分析447
11.2SD/MMC卡塊設備驅動程式449
11.2.1MMC抽象設備層相關結構449
11.2.2MC抽象設備層MMC塊設備
11.2.2驅動程式453
11.2.3具體MMC控制器驅動程式示例462
第12章Linux系統初始化468
12.1BootLoader468
12.1.1PC的BootLoader468
12.1.2嵌入式系統BootLoader473
12.2Linux核心啟動過程478
第13章系統調用481
13.1設定0x80號中斷481
13.2系統調用現場保護482
13.3Linux系統調用的流程484
13.3.1系統調用過程484
13.3.2中斷INT0x80入口處理484
第14章Linux網路系統分層結構488
14.1Linux網路系統分層結構488
14.2數據包結構489
14.2.1msghdr結構489
14.2.2socket結構490
14.2.3sk_buff結構及管理490
14.2.4sock結構495
14.3sockfs檔案系統497
14.4利用socket通信499
14.4.1socket層500
14.4.2IP層收發數據包函式506
14.4.3網路核心層513
14.5網卡驅動程式525
14.5.1NAPI525
14.5.28139CP網卡驅動程式526
14.6netlink533
14.6.1核心netlink調用函式535
14.6.2示例536
第15章執行檔案的運行過程544
15.1動態連結與靜態連結544
15.2位置無關代碼(PIC)的彙編
15.2語言編程548
15.3執行檔格式550
15.3.1a.out檔案格式分析550
15.3.2COFF檔案格式分析551
15.3.3ELF檔案格式分析552
15.3.4符號的重定位557
15.3.5ELF檔案載入過程558
15.4執行檔載入代碼分析559
第16章進程間通信567
16.1管道567
16.2訊息佇列575
16.2.1訊息佇列結構575
16.2.2訊息佇列檔案系統576
16.2.3訊息佇列系統調用函式579
16.3共享記憶體585
16.3.1共享記憶體相關結構586
16.3.2tmpfs檔案系統587
16.3.3共享記憶體系統調用593
16.4信號599
16.4.1信號相關的結構600
16.4.2設定信號回響601
16.4.3信號分發603
16.4.4信號回響607
16.5用戶空間信號量操作610
16.5.1信號量相關結構610
16.5.2系統調用函式的實現611
第17章Linux的安全策略618
17.1Linux常用安全技術618
17.1.1PAM機制618
17.1.2入侵檢測系統618
17.1.3加密檔案系統619
17.1.4安全審計620
17.1.5基於ACL的自主訪問控制620
17.1.6強制訪問控制621
17.1.7防火牆621
17.2Linux能力機制621
17.3Flask安全體系結構概述622
17.4SELinux安全策略配置語言624
17.4.1基本概念625
17.4.2Linux與SELinux在安全管理
17.4.2上的區別626
17.4.3安全模型626
17.4.4策略語言及配置樣例626
17.5SELinux的內部結構634
17.6SELinux的實現636
17.6.1任務的安全管理637
17.6.2AVC分析640
17.6.3security_compute_av函式644
17.7策略庫的結構647
17.7.1sidtab結構648
17.7.2symtab結構649
17.7.3avtab結構649
17.7.4class_datum結構649
17.7.5role_datum結構650
17.7.6user_datum結構651
17.7.7role_tran結構651
17.7.8cond_node結構652
17.8安全審計的管理653
17.9sel_fs檔案系統654
17.10防火牆660
17.10.1Netfilter框架661
17.10.2iptables管理工具662
17.10.3Netfilter例子663
第18章核心配置與編譯664
18.1配置檔案的生成664
18.2配置語言665
18.3主Makefile分析667
18.3.1主Makefile中的分析667
18.3.2嵌入式核心的交叉編譯671
18.4Rule.make及子目錄編譯673
18.4.1編譯選項變化引起增量編譯673
18.4.2子目錄的編譯673
18.4.3Rule.make分析674
18.4.4驅動程式配置示例680
第19章Linux核心調試683
19.1strace命令683
19.2oops訊息分析683
19.3調試工具684
19.4printk列印調試688
19.4.1printk688
19.4.2如何記錄訊息689
19.4.3sys_syslog系統調用690
19.4.4printk函式分析692
19.4.5控制台694
19.4.6tty代碼分析695
19.4.7tty_register_ldisc函式701
19.5ptrace調試跟蹤702
19.5.1調試暫存器702
19.5.2TSS中的調度陷阱704
19.5.3INT3704
19.5.4程式的單步執行705
19.5.5ptrace系統調用705
19.5.6系統調用跟蹤710
19.5.7調試陷阱處理711
19.5.8調試器運行方法712
第20章USB匯流排驅動程式715
20.1USB的拓樸結構715
20.2USB2.0協定717
20.2.1包標誌符及傳輸控制概述717
20.2.2匯流排枚舉718
20.2.3USB設備請求719
20.2.4描述符719
20.2.5OTG規範720
20.3USB匯流排驅動程式結構722
20.3.1USB主機驅動程式的體系722
20.3.2USB驅動程式的編寫723
20.3.3設備結構間的關係725
20.4USB驅動程式初始化727
20.5usbfs檔案系統729
20.5.1usbfs檔案系統初始化729
20.5.2usbfs檔案操作731
20.6USB請求塊(URB)732
20.6.1URB結構732
20.6.2URB的操作733
20.7同步訊息處理735
20.7.1同步請求完成模型736
20.7.2控制與查詢737
20.8用主機控制器驅動層(HCD層)737
20.8.1USB匯流排的註冊與註銷738
20.8.2HCD操作函式739
20.8.3註冊根集線器741
20.9集線器Hub741
20.9.1Hub初始化742
20.9.2Hub設備的各種事件處理744
20.9.3ehci-hcd控制器752
20.10USB大存儲設備758
20.10.1Bulk-Only傳輸協定759
20.10.2SCSI體系結構模型及命令描述塊761
20.10.3大存儲類主機驅動程式765
20.11USB從設備驅動程式(Gadget)779
20.11.1Gadget相關結構781
20.11.2GadgetAPI783
20.11.3pxa2xx控制器786
20.11.4gadgetfs檔案系統794
20.11.5大存儲設備驅動程式804
附錄ALinux系統調用819
主要參考文獻823

相關詞條

熱門詞條

聯絡我們