Linux內(nèi)核源代碼

出版時(shí)間:2002-1-1  出版社:人民郵電出版社  作者:范磊  頁(yè)數(shù):615  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

本書(shū)從操作系統(tǒng)的基本原理入手,全面分析了內(nèi)核數(shù)據(jù)結(jié)構(gòu)之間的關(guān)系,從而深入剖析了Linux操作系統(tǒng)的內(nèi)在機(jī)制和實(shí)現(xiàn)方法。
本書(shū)共分13章,詳細(xì)地分析了Linux操作系統(tǒng)的各個(gè)功能模塊,包括系統(tǒng)初始化、中斷、系統(tǒng)調(diào)用、進(jìn)程管理、進(jìn)程間通信模塊、內(nèi)存管理、文件系統(tǒng)、虛擬文件系統(tǒng)、設(shè)備驅(qū)動(dòng)、網(wǎng)絡(luò)、多對(duì)稱(chēng)處理等,并且在每章后列出了精選的Linux內(nèi)核源代碼程序。
本書(shū)是一本具有很強(qiáng)指導(dǎo)性的學(xué)習(xí)參考書(shū)。本書(shū)適用于Linux系統(tǒng)管理員、Linux系統(tǒng)程序員以及大專(zhuān)院校相關(guān)專(zhuān)業(yè)的師

書(shū)籍目錄

第1章  Linux操作系統(tǒng)概述	1
1.1 Linux的歷史 2
1.2 Linux開(kāi)發(fā)過(guò)程 4
1.3 Linux的現(xiàn)狀 4
1.3.1 RedHat 6.0 (http://www.redhat.com) 5
1.3.2 Slackware 3.4 (http://www.cdrom.com) 5
1.3.3 Debian 1.3.1 (http://www.debian.org) 5
1.3.4 SuSE Linux 5.2 (http://www.suse.com) 5
1.3.5 Turbo Linux 4.0 簡(jiǎn)體中文標(biāo)準(zhǔn)版10CD 6
1.3.6 紅旗Linux 6
1.4 分析內(nèi)核的意義 6
1.4.1 開(kāi)發(fā)“自己的”操作系統(tǒng) 6
1.4.2 開(kāi)發(fā)高水平軟件 7
1.4.3 計(jì)算機(jī)科學(xué)的教學(xué)和科研 7
1.5 小結(jié)與練習(xí) 8
1.5.1 小結(jié) 8
1.5.2 習(xí)題與思考 8
第2章 內(nèi)核體系結(jié)構(gòu)概述 9
2.1 內(nèi)核設(shè)計(jì)目標(biāo) 10
2.1.1 清晰性 10
2.1.2 兼容性 10
2.1.3 可移植性 11
2.1.4 健壯性和安全性 12
2.1.5 速度 12
2.2 內(nèi)核體系結(jié)構(gòu)初識(shí) 12
2.3 內(nèi)核體系結(jié)構(gòu)的深入了解 14
2.4 Linux 內(nèi)核的類(lèi)型 15
2.4.1 層次(Layer) 15
2.4.2 Linux內(nèi)核類(lèi)型 16
2.5 了解Linux內(nèi)核源代碼 18
2.5.1 內(nèi)核源代碼結(jié)構(gòu) 18
2.5.2 體系結(jié)構(gòu)相關(guān)和體系結(jié)構(gòu)無(wú)關(guān)的代碼 23
2.6 Linux內(nèi)核源代碼的部分特點(diǎn) 23
2.6.1 gcc特性的使用 23
2.6.2 內(nèi)核代碼習(xí)慣用語(yǔ) 24
2.6.3 減少#if和#ifdef的使用 25
2.7 代碼樣例 25
2.7.1 printk函數(shù) 26
2.7.2 等待隊(duì)列 29
2.7.3 內(nèi)核模塊 32
2.8 配置與編譯內(nèi)核 34
2.8.1 配置內(nèi)核 34
2.8.2 構(gòu)建內(nèi)核 35
2.8.3 備份的重要性 35
2.8.4 發(fā)布改進(jìn) 36
2.8.5 多版本的內(nèi)核代碼 37
2.9 小結(jié)與練習(xí) 37
2.9.1 小結(jié) 37
2.9.2 習(xí)題與思考 37
第3章 系統(tǒng)初始化 39
3.1 初始化流程 40
3.1.1 系統(tǒng)加電或復(fù)位 41
3.1.2 BIOS啟動(dòng) 41
3.1.3 Boot Loader 41
3.1.4 操作系統(tǒng)內(nèi)核的初始化 41
3.2 初始化的任務(wù) 42
3.2.1 處理器對(duì)初始化的影響 42
3.2.2 其他硬件設(shè)備對(duì)初始化的影響 42
3.3 操作系統(tǒng)的初始化 42
3.3.1 引導(dǎo)PC機(jī)(BIOS啟動(dòng)和LILO引導(dǎo)) 43
3.3.2 準(zhǔn)備Linux內(nèi)核 44
3.3.3 初始化Linux內(nèi)核 46
3.3.4 Bogo MIPS 48
3.3.5 分析內(nèi)核選項(xiàng) 49
3.4 init進(jìn)程 53
3.5 本章代碼 54
3.6 小結(jié)與練習(xí) 76
3.6.1 小結(jié) 76
3.6.2 習(xí)題與思考 76
第4章 進(jìn)程 77
4.1 進(jìn)程在內(nèi)核中的表示方法 78
4.2 進(jìn)程的狀態(tài) 81
4.3 引用計(jì)數(shù) 81
4.4 優(yōu)先級(jí) 81
4.5 創(chuàng)建進(jìn)程 83
4.5.1 fork和__clone 83
4.5.2 分配PID 84
4.5.3 進(jìn)程的運(yùn)行 84
4.6 進(jìn)程調(diào)度 87
4.6.1 調(diào)度策略 87
4.6.2 調(diào)度函數(shù) 89
4.6.3 計(jì)算goodness值 91
4.6.4 非實(shí)時(shí)優(yōu)先級(jí) 92
4.6.5 實(shí)時(shí)優(yōu)先級(jí) 93
4.7 遵守限制 95
4.7.1 權(quán)能 95
4.7.2 用戶ID和組ID 98
4.7.3 資源限制 98
4.8 進(jìn)程的結(jié)束 99
4.8.1 exit函數(shù)組 99
4.8.2 wait函數(shù)組 100
4.9 本章代碼 101
4.10 小結(jié)與練習(xí) 146
4.10.1 小結(jié) 146
4.10.2 習(xí)題與思考 146
第5章 中斷和中斷處理 147
5.1 硬件基礎(chǔ) 149
5.1.1 可編程中斷控制器 149
5.1.2 初始化中斷處理數(shù)據(jù)結(jié)構(gòu) 150
5.1.3 中斷處理任務(wù) 151
5.2 中斷及其有關(guān)數(shù)據(jù)結(jié)構(gòu) 152
5.2.1 中斷和中斷請(qǐng)求IRQ 152
5.2.2 數(shù)據(jù)結(jié)構(gòu) 153
5.3 初始化中斷請(qǐng)求 154
5.4 中斷處理 157
5.5 本章代碼 160
5.6 小結(jié)與練習(xí) 185
5.6.1 小結(jié) 185
5.6.2 習(xí)題與思考 185
第6章 系統(tǒng)調(diào)用 187
6.1 什么是系統(tǒng)調(diào)用 188
6.2 基本原理 189
6.3 系統(tǒng)調(diào)用的初始化 190
6.3.1 在處理系統(tǒng)調(diào)用時(shí)使用“陷阱門(mén)”的原因 190
6.3.2 利用“陷阱門(mén)”完成向高特權(quán)級(jí)(內(nèi)核)切換 190
6.3.3 “陷阱門(mén)”特權(quán)切換時(shí)堆棧的變化 191
6.4 如何激活系統(tǒng)調(diào)用 191
6.4.1 system_call函數(shù) 192
6.4.2 lcall7函數(shù) 196
6.5 系統(tǒng)調(diào)用樣例 197
6.5.1 sys_ni_syscal函數(shù) 197
6.5.2 sys_time函數(shù) 198
6.5.3 sys_reboot 199
6.5.4 sys_sysinfo函數(shù) 200
6.6 本章代碼 201
6.7 小結(jié)與練習(xí) 224
6.7.1 小結(jié) 224
6.7.2 習(xí)題與思考 224
第7章 內(nèi)存管理 225
7.1 虛擬內(nèi)存 226
7.1.1 虛擬內(nèi)存的抽象模型 226
7.1.2 交換和分頁(yè) 228
7.1.3 地址空間 229
7.1.4 內(nèi)存管理單元(MMU) 229
7.1.5 頁(yè)目錄和頁(yè)表 230
7.1.6 轉(zhuǎn)換后備緩存 232
7.1.7 段 232
7.2 進(jìn)程的內(nèi)存組織 233
7.2.1 struct vm_area_struct 233
7.2.2 struct vm_operations_struct 234
7.2.3 struct mm_struct 235
7.2.4 VMA的操作 235
7.3 分頁(yè) 236
7.3.1 頁(yè)面保護(hù)詳述 236
7.3.2 寫(xiě)拷貝 237
7.3.3 頁(yè)面錯(cuò)誤 237
7.3.4 頁(yè)面調(diào)出 242
7.4 交換設(shè)備 243
7.4.1 get_swap_page函數(shù) 244
7.4.2 swap_free函數(shù) 244
7.4.3 sys_swapoff函數(shù) 245
7.4.4 sys_swapon函數(shù) 245
7.5 內(nèi)存映射mmap 247
7.5.1 do_mmap函數(shù) 247
7.5.2 merge_segments函數(shù) 248
7.5.3 do_munmap函數(shù) 249
7.5.4 unmap_fixup函數(shù) 250
7.6 用戶空間和內(nèi)核空間的動(dòng)態(tài)內(nèi)存 251
7.6.1 brk 251
7.6.2 vmalloc和vfree 252
7.7 主存儲(chǔ)器信息轉(zhuǎn)儲(chǔ) 255
7.8 緩存和刷新機(jī)制 257
7.8.1 linux使用的緩存 257
7.8.2 緩沖區(qū)高速緩存 258
7.9 內(nèi)存的初始化 260
7.9.1 內(nèi)存的初始化過(guò)程 260
7.9.2 進(jìn)入用戶模式 261
7.10 本章代碼 261
7.11 小結(jié)與練習(xí) 306
7.11.1 小結(jié) 306
7.11.2 習(xí)題與思考 306
第8章 虛擬文件系統(tǒng) 307
8.1 概述 308
8.2 VFS中的重要數(shù)據(jù)結(jié)構(gòu) 309
8.2.1 VFS的超級(jí)塊 310
8.2.2 VFS的索引節(jié)點(diǎn) 311
8.2.3 與進(jìn)程聯(lián)系的三個(gè)結(jié)構(gòu) 312
8.2.4 有關(guān)操作的數(shù)據(jù)結(jié)構(gòu) 314
8.3 高速緩存 317
8.3.1 塊高速緩存 317
8.3.2 索引節(jié)點(diǎn)高速緩存 320
8.3.3 目錄高速緩存 320
8.4 文件系統(tǒng)的注冊(cè)、安裝與卸載 321
8.4.1 文件系統(tǒng)的注冊(cè) 321
8.4.2 文件系統(tǒng)的安裝 322
8.4.3 文件系統(tǒng)的卸載 323
8.5 限額機(jī)制 323
8.6 文件系統(tǒng)的系統(tǒng)調(diào)用 325
8.6.1 open系統(tǒng)調(diào)用 325
8.6.2 read系統(tǒng)調(diào)用 326
8.6.3 fcntl系統(tǒng)調(diào)用 327
8.7 本章代碼 328
8.8 小結(jié)與練習(xí) 360
8.8.1 小結(jié) 360
8.8.2 習(xí)題與思考 360
第9章 EXT2文件系統(tǒng) 361
9.1 基本概念 362
9.1.1 一組字節(jié)到邏輯塊的映射 363
9.1.2 邏輯塊到物理塊的映射 363
9.2 EXT2的磁盤(pán)布局和數(shù)據(jù)結(jié)構(gòu) 364
9.2.1 EXT2的磁盤(pán)布局 364
9.2.2 EXT2 超級(jí)塊 365
9.2.3 EXT2索引節(jié)點(diǎn) 367
9.2.4 EXT2 組描述符 370
9.2.5 位圖 370
9.2.6 索引節(jié)點(diǎn)表及舉例 371
9.2.7 EXT2 目錄 372
9.2.8 在一個(gè) EXT2 文件系統(tǒng)中查找一個(gè)文件 373
9.2.9 在 EXT2 文件系統(tǒng)中改變一個(gè)文件的大小 373
9.3 文件的訪問(wèn)權(quán)限和安全 375
9.4 連接文件 377
9.5 錯(cuò)誤處理 377
9.6 分配策略 378
9.6.1 分配新塊的算法 378
9.6.2 分配新的索引節(jié)點(diǎn)的算法 378
9.7 本章代碼 379
9.8 小結(jié)與練習(xí) 410
9.8.1 小結(jié) 410
9.8.2 習(xí)題與思考 410
第10章 進(jìn)程間通信 411
10.1 管道(pipe) 412
10.1.1 Linux管道機(jī)制的實(shí)現(xiàn) 413
10.1.2 管道的應(yīng)用 414
10.1.3 命名管道(FIFO) 415
10.2 System V IPC機(jī)制 416
10.2.1 消息隊(duì)列 416
10.2.2 信號(hào)量 428
10.3 共享內(nèi)存 437
10.4 信號(hào) 443
10.4.1 信號(hào)的引入 443
10.4.2 信號(hào)掩碼 444
10.4.3 系統(tǒng)調(diào)用 445
10.4.4 進(jìn)程與信號(hào)的關(guān)系 446
10.5 本章代碼 447
10.6 小結(jié)與練習(xí) 502
10.6.1 小結(jié) 502
10.6.2 習(xí)題與思考 502
第11章 設(shè)備驅(qū)動(dòng) 503
11.1 Linux的設(shè)備管理 504
11.1.1 I/O軟件 505
11.1.2 設(shè)備驅(qū)動(dòng)程序 506
11.1.3 Linux驅(qū)動(dòng)程序的幾個(gè)通用函數(shù) 508
11.2 中斷 509
11.2.1 硬件對(duì)中斷的支持 510
11.2.2 Linux對(duì)中斷的管理 511
11.2.3 Linux對(duì)中斷的處理 512
11.3 塊設(shè)備驅(qū)動(dòng)程序 512
11.3.1 塊設(shè)備驅(qū)動(dòng)程序的登記 513
11.3.2 塊設(shè)備基于緩沖區(qū)的數(shù)據(jù)交換 513
11.3.3 RAM盤(pán)驅(qū)動(dòng)程序的實(shí)現(xiàn) 514
11.3.4 硬盤(pán)驅(qū)動(dòng)程序的實(shí)現(xiàn) 515
11.4 字符設(shè)備驅(qū)動(dòng)程序 517
11.4.1 字符設(shè)備的注冊(cè) 517
11.4.2 工作內(nèi)存 518
11.4.3 基本入口點(diǎn) 519
11.5 網(wǎng)絡(luò)設(shè)備的初始化 519
11.6 本章代碼 520
11.7 小結(jié)與練習(xí) 542
11.7.1 小結(jié) 542
11.7.2 習(xí)題與思考 542
第12章 網(wǎng)絡(luò) 543
12.1 概述 544
12.1.1 Linux的網(wǎng)絡(luò)層次結(jié)構(gòu) 544
12.1.2 面向?qū)ο蟮脑O(shè)計(jì)方法實(shí)現(xiàn)網(wǎng)絡(luò)層次 544
12.2 網(wǎng)絡(luò)協(xié)議 545
12.2.1 網(wǎng)絡(luò)參考模型 545
12.2.2 TCP/IP協(xié)議工作原理及數(shù)據(jù)流 546
12.2.3 Internet協(xié)議 548
12.3 套接字(socket) 551
12.3.1 套接字在網(wǎng)絡(luò)中的地位和作用 551
12.3.2 套接字接口的種類(lèi) 552
12.3.3 套接字的工作原理 553
12.3.4 socket的通信過(guò)程 554
12.3.5 socket為用戶提供的系統(tǒng)調(diào)用 557
12.4 套接字緩沖區(qū)(sk_buff) 557
12.4.1 套接字緩沖區(qū)的特點(diǎn) 557
12.4.2 套接字緩沖區(qū)操作基本原理 558
12.4.3 sk_buff數(shù)據(jù)結(jié)構(gòu)的核心內(nèi)容 559
12.4.4 套接字緩沖區(qū)提供的函數(shù) 561
12.4.5 套接字緩沖區(qū)的上層支持例程 562
12.5 網(wǎng)絡(luò)設(shè)備接口 563
12.5.1 基本結(jié)構(gòu) 563
12.5.2 命名規(guī)則 564
12.5.3 設(shè)備注冊(cè) 564
12.5.4 網(wǎng)絡(luò)設(shè)備數(shù)據(jù)結(jié)構(gòu) 565
12.5.5 支持函數(shù) 567
12.6 本章代碼 570
12.7 小結(jié)與練習(xí) 578
12.7.1 小結(jié) 578
12.7.2 習(xí)題與思考 578
第13章 多對(duì)稱(chēng)處理 579
13.1 并行程序設(shè)計(jì)概念及其原語(yǔ) 581
13.1.1 原子操作 581
13.1.2 test-and-set原語(yǔ) 583
13.1.3 信號(hào)量 584
13.1.4 自旋鎖 589
13.2 APIC和CPU-TO-CPU通信 591
13.3 SMP對(duì)內(nèi)核的影響 592
13.3.1 對(duì)調(diào)度的影響 592
13.3.2 smp_local_timer_interrupt函數(shù) 595
13.3.3 lock_kernel函數(shù)和unlock_kernel函數(shù) 596
13.3.4 softirq_trylock函數(shù) 597
13.3.5 cli宏和sti宏 597
13.3.6 irq_enter函數(shù)和irq_exit函數(shù) 598
13.4 本章代碼 599
13.5 小結(jié)與練習(xí) 606
13.5.1 小結(jié) 606
13.5.2 習(xí)題與思考 606
附錄 部分習(xí)題參考答案 607

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    Linux內(nèi)核源代碼 PDF格式下載


用戶評(píng)論 (總計(jì)0條)

 
 

 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7