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

Linux內(nèi)核編程預(yù)售商品

Linux內(nèi)核編程預(yù)售商品

定 價(jià):¥75.00

作 者: (美) 羅德里格斯,(美) 費(fèi)舍爾,(美)斯莫斯基 著
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: LINUX

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115251947 出版時(shí)間: 2011-05-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)以Linux操作系統(tǒng)為基礎(chǔ),詳細(xì)介紹了Linux 內(nèi)核子系統(tǒng),并輔以大量?jī)?nèi)核源代碼和示例程序進(jìn)行演示,引領(lǐng)讀者深入Linux內(nèi)核。本書(shū)的主要內(nèi)容包括:Linux 基礎(chǔ)知識(shí)、內(nèi)核探索工具集、進(jìn)程的整個(gè)生命周期、內(nèi)存區(qū)、頁(yè)面、Slab 分配器、用于輸入/輸出的各種設(shè)備、文件系統(tǒng)、搶占、自旋鎖、信號(hào)量、內(nèi)核引導(dǎo)、構(gòu)建Linux內(nèi)核,以及向內(nèi)核添加代碼等,同時(shí)還簡(jiǎn)單介紹了一些應(yīng)用工具和實(shí)用程序。每章末尾都給出一些練習(xí),涉及內(nèi)核運(yùn)行的操作及工作原理。本書(shū)適合對(duì)Linux 內(nèi)核感興趣的各層次讀者,無(wú)論對(duì)Linux 初學(xué)者還是Linux程序開(kāi)發(fā)人員,本書(shū)都是一本很有價(jià)值的參考書(shū)。

作者簡(jiǎn)介

  Claudia Salzberg Rodriguez就職于IBMLinux技術(shù)中心,負(fù)責(zé)內(nèi)核及相關(guān)編程工具的開(kāi)發(fā)。在擔(dān)任程序員的10多年時(shí)間里,她一直針對(duì)Intel和PPC平臺(tái)進(jìn)行Linux嵌入式系統(tǒng)到高性能系統(tǒng)的開(kāi)發(fā)。Gordon Fischer曾為很多底層設(shè)備開(kāi)發(fā)過(guò)Linux和Unix設(shè)備驅(qū)動(dòng)程序,并針對(duì)Intel和PPC平臺(tái)上的企業(yè)級(jí)系統(tǒng)中使用Linux內(nèi)核。Steven Smolski有近30年的半導(dǎo)體行業(yè)從業(yè)經(jīng)驗(yàn)。從事過(guò)內(nèi)存、處理器以及ASICS的研發(fā)和測(cè)試,為L(zhǎng)inux、AIX以及Windows都?寫(xiě)過(guò)應(yīng)用程序和驅(qū)動(dòng)程序,還進(jìn)行過(guò)嵌入式操作系統(tǒng)的開(kāi)發(fā)。

圖書(shū)目錄

第1 章 概述   1
1.1  UNIX 的歷史   2
1.2  標(biāo)準(zhǔn)和通用接口   3
1.3  自由軟件和開(kāi)放源碼   3
1.4  Linux 發(fā)布版概覽   3
1.41  Debian   4
1.42  Red Hat/Fedora 4
1.43  Mandriva   4
1.44  SUSE    4
1.45  Gentoo    4
1.46  Yellow Dog   5
1.47  其他發(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  用戶標(biāo)識(shí)符   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ū)動(dòng)程序   15
1.10  可移植性和體系結(jié)構(gòu)的相關(guān)性   16
1.11  小結(jié)   16
1.12  習(xí)題   16
第2 章  內(nèi)核探索工具集   18
2.1  內(nèi)核中常見(jiàn)的數(shù)據(jù)類(lèi)型   18
2.1.1  鏈表   18
2.1.2  查找   21
2.1.3  樹(shù)   22
2.2  匯編   24
2.2.1  PowerPC    24
2.2.2  x86    27
2.3  匯編語(yǔ)言示例   29
2.3.1  x86 中的匯編示例   30
2.3.2  PowerPC 中的匯編示例   31
2.4  內(nèi)聯(lián)匯編   33
2.4.1  輸出操作數(shù)   34
2.4.2  輸入操作數(shù)   34
2.4.3  已修改過(guò)的寄存器(已修改的元素列表) 34
2.4.4  參數(shù)的編號(hào)方式   34
2.4.5  約束條件   34
2.4.6  asm    35
2.4.7  __volatile__   35
2.5  特殊的C 語(yǔ)言用法   38
2.5.1  asmlinkage   38
2.5.2  UL   39
2.5.3  內(nèi)聯(lián)   39
2.5.4  const 和volatile   39
2.6  內(nèi)核探索工具一覽   40
2.6.1  objdump/readelf   40
2.6.2  hexdump    41
2.6.3  nm   41
2.6.4  objcopy    42
2.6.5  ar   42
2.7  內(nèi)核發(fā)言:傾聽(tīng)來(lái)自內(nèi)核的消息   42
2.7.1  printk()   42
2.7.2  dmesg   42
2.7.3  /var/log/messages   42
2.8  其他奧秘   43
2.8.1  __init   43
2.8.2  likely()和unlikely()   43
2.8.3  IS_ERR 和PTR_ERR   44
2.8.4  通告程序鏈   44
2.9  小結(jié)   45
2.9.1  項(xiàng)目:Hellomod    45
2.9.2  第一步:構(gòu)造Linux 模塊的框架   45
2.9.3  第二步:編譯模塊   46
2.9.4  第三步:運(yùn)行代碼   47
2.10  習(xí)題   48
第3 章  進(jìn)程:程序執(zhí)行的基本模型   49
3.1  程序   51
3.2  進(jìn)程描述符   52
3.2.1  與進(jìn)程屬性相關(guān)的字段   54
3.2.2  與調(diào)度相關(guān)的字段   55
3.2.3  涉及進(jìn)程間相互關(guān)?的字段   58
3.2.4  與進(jìn)程信任狀相關(guān)的字段   59
3.2.5  與進(jìn)程權(quán)能相關(guān)的字段   60
3.2.6  與進(jìn)程限制相關(guān)的字段   61
3.2.7  與文件系統(tǒng)及地址空間相關(guān)的字段   63
3.3  進(jìn)程的創(chuàng)建:系統(tǒng)調(diào)用fork()、vfork 和clone()   64
3.3.1  fork()函數(shù)   65
3.3.2  vfork()函數(shù)   66
3.3.3  clone()函數(shù)   67
3.3.4  do_fork()函數(shù)   68
3.4  進(jìn)程的生命周期   70
3.4.1  進(jìn)程的狀態(tài)   70
3.4.2  進(jìn)程狀態(tài)的轉(zhuǎn)換   71
3.5  進(jìn)程的終止   74
3.5.1  sys_exit() 函數(shù)   75
3.5.2  do_exit()函數(shù)   75
3.5.3  通知父進(jìn)程和sys_wait4()   77
3.6  了解進(jìn)程的動(dòng)態(tài):調(diào)度程序的基本構(gòu)架   80
3.6.1  基本結(jié)構(gòu)   80
3.6.2  從等待中醒來(lái)或者激活   81
3.7  等待隊(duì)列   86
3.7.1  添加到等待隊(duì)列   88
3.7.2  等待事件   89
3.7.3  喚醒進(jìn)程   91
3.8  異步執(zhí)行流程   93
3.8.1  異?! ?93
3.8.2  中斷   95
3.9  小結(jié)   114
3.9.1  項(xiàng)目:系統(tǒng)變量current   114
3.9.2  項(xiàng)目源碼   115
3.9.3  運(yùn)行代碼   116
3.10  習(xí)題   116
第4 章  內(nèi)存管理   117
4.1  頁(yè)   119
4.2  內(nèi)存管理區(qū)   121
4.2.1  內(nèi)存管理區(qū)描述符   122
4.2.2  內(nèi)存管理區(qū)操作輔助函數(shù)   124
4.3  頁(yè)面   124
4.3.1  請(qǐng)求頁(yè)面的函數(shù)   124
4.3.2  釋放頁(yè)面的函數(shù)   126
4.3.3  伙伴系統(tǒng)   126
4.4  Slab 分配器   130
4.4.1  緩存描述符   133
4.4.2  通用緩存描述符   135
4.4.3  Slab 描述符   136
4.5  Slab 分配器的生命周期   138
4.5.1  與Slab 分配器有關(guān)的全局變量   138
4.5.2  創(chuàng)建緩存   139
4.5.3  創(chuàng)建slab 與cache_grow()   144
4.5.4  Slab 的銷(xiāo)毀:退還內(nèi)存與kmem_cache_destroy()   146
4.6  內(nèi)存請(qǐng)求路徑   147
4.6.1  kmalloc()   147
4.6.2  kmem_cache_alloc()   148
4.7  Linux 進(jìn)程的內(nèi)存結(jié)構(gòu)   149
4.7.1  mm_struct   150
4.7.2  vm_area_struct   152
4.8  進(jìn)程映像的分布及線性地址空間   153
4.9  頁(yè)表   155
4.10  缺頁(yè)   156
4.10.1  x86 缺頁(yè)異?! ?156
4.10.2  缺頁(yè)處理程序   157
4.10.3  PowerPC 缺頁(yè)異常   164
4.11  小結(jié)   164
4.12  項(xiàng)目:進(jìn)程內(nèi)存映射   165
4.13  習(xí)題   166
第5 章  輸入/輸出   167
5.1  總線、橋、端口和接口的硬件實(shí)現(xiàn)   167
5.2  設(shè)備   171
5.2.1  塊設(shè)備概述   172
5.2.2  請(qǐng)求隊(duì)列和I/O 調(diào)度   173
5.2.3  示例:“通用”塊設(shè)備驅(qū)動(dòng)程序   180
5.2.4  設(shè)備操作   182
5.2.5  字符設(shè)備   183
5.2.6  網(wǎng)絡(luò)設(shè)備   184
5.2.7  時(shí)鐘設(shè)備   184
5.2.8  終端設(shè)備   184
5.2.9  直接存儲(chǔ)器存取   184
5.3  小結(jié)   185
5.4  項(xiàng)目:創(chuàng)建并口驅(qū)動(dòng)程序   185
5.4.1  并口的硬件   185
5.4.2  運(yùn)行在并口上的軟件   187
5.5  習(xí)題   192
第6 章  文件系統(tǒng)   194
6.1  文件系統(tǒng)的基本概念   194
6.1.1  文件和文件名   194
6.1.2  文件類(lèi)型   195
6.1.3  文件的附加屬性   195
6.1.4  目錄和路徑名   196
6.1.5  文件操作   197
6.1.6  文?描述符   197
6.1.7  磁盤(pán)塊、磁盤(pán)分區(qū)以及實(shí)現(xiàn)   197
6.1.8  性能   198
6.2  Linux 虛擬文件系統(tǒng)   198
6.2.1  VFS 的數(shù)據(jù)結(jié)構(gòu)   200
6.2.2  全局鏈表和局部鏈表的引用   211
6.3  與VFS 相關(guān)的結(jié)構(gòu)   212
6.3.1  fs_struct 結(jié)構(gòu)   212
6.3.2  files_struct 結(jié)構(gòu)   213
6.4  頁(yè)緩存   216
6.4.1  address_space 結(jié)構(gòu)   217
6.4.2  buffer_head 結(jié)構(gòu)   219
6.5  VFS 的系統(tǒng)調(diào)用和文件系統(tǒng)層   221
6.5.1  open()   221
6.5.2  close()    227
6.5.3  read()   229
6.5.4  write()    244
6.6  小結(jié)   246
6.7  習(xí)題   246
第7 章  進(jìn)程調(diào)度和內(nèi)核同步   247
7.1  Linux 的調(diào)度程序   248
7.1.1  選擇下一個(gè)進(jìn)程   248
7.1.2  上下文切換   253
7.1.3  讓出CPU    261
7.2  內(nèi)核搶占   269
7.2.1  顯式內(nèi)核搶占   269
7.2.2  隱式用戶搶占   270
7.2.3  隱式內(nèi)核搶占   270
7.3  自旋鎖和信號(hào)量   272
7.4  系統(tǒng)時(shí)鐘:關(guān)于時(shí)間和定時(shí)器   274
7.4.1  實(shí)時(shí)時(shí)鐘:現(xiàn)在幾點(diǎn)了   274
7.4.2  讀取PPC 的實(shí)時(shí)時(shí)鐘   276
7.4.3  讀取x86 的實(shí)時(shí)時(shí)鐘   278
7.5  小結(jié)   280
7.6  習(xí)題   280
第8 章  內(nèi)核引導(dǎo)   281
8.1  BIOS 和Open Firmware  282
8.2  引導(dǎo)加載程序   282
8.2.1  GRUB   283
8.2.2  LILO   286
8.2.3  PowerPC 和Yaboot   286
8.3  與體系結(jié)構(gòu)相關(guān)的內(nèi)存初始化   287
8.3.1  PowerPC 的硬件內(nèi)存管理   287
8.3.2  基于Intel x86 體系結(jié)構(gòu)的硬件內(nèi)存管理   296
8.3.3  PowerPC 和x86 的代碼匯集   305
8.4  原始的RAM 盤(pán)   305
8.5  開(kāi)始:start_kernel()   306
8.5.1  調(diào)用lock_kernel()   307
8.5.2  調(diào)用page_address_init()   309
8.5.3  調(diào)用printk(linux_banner)   311
8.5.4  調(diào)用setup_arch   311
8.5.5  調(diào)用setup_per_cpu_areas()   315
8.5.6  調(diào)用smp_prepare_boot_cpu()    316
8.5.7  調(diào)用sched_init()    317
8.5.8  調(diào)用build_all_zonelists()   319
8.5.9  調(diào)用page_alloc_init   319
8.5.10  調(diào)用parse_args()    320
8.5.11  調(diào)用trap_init()   322
8.5.12  調(diào)用rcu_init()   323
8.5.13  調(diào)用init_IRQ()   323
8.5.14  ?用softirq_init()   324
8.5.15  調(diào)用time_init()   325
8.5.16  調(diào)用console_init()   326
8.5.17  調(diào)用profile_init()   326
8.5.18  調(diào)用local_irq_enable()   327
8.5.19  配置initrd   327
8.5.20  調(diào)用mem_init()   327
8.5.21  調(diào)用late_time_init()    333
8.5.22  調(diào)用calibrate_delay()   333
8.5.23  調(diào)用pgtable_cache_init()   334
8.5.24  調(diào)用buffer_init()   335
8.5.25  調(diào)用security_scaffolding_startup()   336
8.5.26  調(diào)用vfs_caches_init()   336
8.5.27  調(diào)用radix_tree_init()   343
8.5.28  調(diào)用signal_init()   344
8.5.29  調(diào)用page_writeback_init()   344
8.5.30 調(diào)用proc_root_init()    346
8.5.31  調(diào)用init_idle()   347
8.5.32  調(diào)用rest_init()   348
8.6   init 線程(或進(jìn)程1)   349
8.7  小結(jié)   353
8.8  習(xí)題   353
第9 章  構(gòu)建Linux 內(nèi)核   354
9.1  工具鏈   354
9.1.1  編譯程序   355
9.1.2  交叉編譯   355
9.1.3  鏈接程序   356
9.1.4  ELF 二進(jìn)制目標(biāo)文件   356
9.2  內(nèi)核源代碼的構(gòu)建   360
9.2.1  解釋源代碼   360
9.2.2  構(gòu)建內(nèi)核映像   364
9.3  小結(jié)   369
9.4  習(xí)題   369
第10 章  向內(nèi)核添加代碼   371
10.1  瀏覽源代碼   371
10.11  熟悉文件系統(tǒng)   371
10.12  filp 和fops   372
10.13  用戶空間和內(nèi)核空間   374
10.14  等待隊(duì)列   375
10.15  工作隊(duì)列及中斷   378
10.16  系統(tǒng)調(diào)用   380
10.17  其他類(lèi)型的驅(qū)動(dòng)程序   380
10.18  設(shè)備模型和sysfs 文件系統(tǒng)   383
10.2  編寫(xiě)代碼   386
10.2.1  設(shè)備基礎(chǔ)   386
10.2.2  符號(hào)輸出   388
10.2.3  IOCTL    388
10.2.4  輪詢與中斷   391
10.2.5  工作隊(duì)列和tasklet   395
10.2.6  增加系統(tǒng)調(diào)用的代碼   396
10.3  構(gòu)建和調(diào)試   398
10.4  小結(jié)   399
10.5  習(xí)題   400

本目錄推薦

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