深入分析Linux内核源代码--文字版.pdf

5星(超过95%的资源)
所需积分/C币:50 2017-05-07 17:51:35 3.66MB PDF
65
收藏 收藏
举报

深入分析Linux内核源代码--文字版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
http://showmecode.cn/inks/book 如果说 Linux的出现是一个偶然,那么,席卷全球的 Linux热海则是一个奇迹, Linux 正以势不可挡的趋势迅猛发展,其发展前景是无法预测的。 有人说,“ Linux不就是类UNIX吗?”是的,它的外在表现形式确实与UNX完全兼容, 这也是它赖以生存的基木条件。但是,它的内涵则完全不同,这首先体现在其源代码全部重 写及开放,其次是它的快速更新和发展,而更重要的是世界范围内众多计算机爱好者能通过 Internet参与开发,由此可见,借助于 Internet的肥沃土壤, Linux的迅速发展是毫无置疑 的! 实际上, Linux最本质的东西体现在其“自由”和“开放”的思想,“自由”意味着世 界范围内的知识共享,而“开放”则意味着 linux对所有的人都敞开大门,在这开放而自由 的天地甲,你的创造激情可以得到充分的发挥。 Linux内核源代码的开放给希望深入操作系统內部世界的人敞开无私的胸怀,我们有幸 走进了这个世界,这是一个神奇、错综复杂而乂充满诱惑的世界,让喜欢迎接挑战的人们可 以充分检验自己的勇气和耐力。 Linux内核全部源代码是·个庞大的世界,大约有200多万行,占60N左右的空间。因 此,如何在这庞大而复杂的世界中抓住主要内容,如何找到进入 Linux内部的突破口,又如 何能把 Linux源代码变为自己的需要,这就是本书要探讨的内容。 首先,木书的第一章领你走入 Linux的大门,让你对 Linux内核的结构有一个整体的了 解。然后,第二章介绍了分析 Linux源代码应具备的基本硬件知识,这是续向 Linux内核 迈进的必备条件。中断作为操作系统中发生最频繁的个活动,本书用章的内谷详绀描述 了中断在操作系统中的只体实现机制。 众所周知,操作系统中最核心的内容就是进程管理、內存管理和文件管理。本书用大量 的篇幅描述了这三部分内容,尤其对最复杂的虚拟内存管理进行了详细的分析,其中对内存 初始化部分的详细描述将对嵌入式系统的开发者有所帮助。 在对 Linux内核有一定了解后,读者可能希望能够利用内核函数进行内核级程序的开发, 例如开发一个没备驱动程序。Linuⅹ的模块杋制就是支持一般用户进行内核级绽程。另外, 读者在进行内核级编程时还可以快速查阅本书附录部分提供的 Linux内核APT函数。 网络也是 Linux中最复杂的部分之,这部分内容足可以写本书。本书仅以面向对象 的思想为核心,分别对网络部分中的四个主要对象:协议、套接字、套接字缓冲区及网络设 备接凵进行了分析。有了对这四个对象的分析,再结合文件系统、设备驱动程序的内容,读 者就可以具体分析自凵感兴趣的相关内容。 Linux在不断地发展,本书介纽的版本为 Linux2.4.16。尽管本书力图反映 Linux内核 较本质的东西,但由于笔者的知识有限,对有些问题的理解难免有偏差,甚至可能有“Bug” 希望读者能尽可能多地发现它,以共同对本书进行改进和完善。 http://showmecode.cn/inks/book 在本书的编写的过程中,笔者查阅了大量的资料,也阅读了大量的派代码,但本书中反 映的内容也仅仅是 Linux的主要内容。因为一本书的组织形成是一种线性结构,而知识本身 的组织结构是一种树型结构,甚全是多线索的树状结构,因此,在本书的编写过程中,笔者 深感书的表现能力非常有限,一本书根本无法囊括全部。在参考书目中,我们将给出主要的 参考书及主要网站的相关内容。 本书的第一版是巛 Linux操作系统内核分析》,在第一版的编写过程中,康华、季进宝、 陈轶飞、张波、张蕾及胡清俊等参与了编写。第一版出版后得到了很多读者的充分肯定和赞 扬,并授权台湾地区出版。在本次改版的过程中,依然保留了第一版的凤格,但加深了对进 程管理、内存管理及文件管理等众多内容的剖析。 这次改版由」时间仓促,加之作者的水平有限,书中有些术语的表达可能不妥,有些内 容的分析也可能不够准确,敬请读者朋友批评指正。我的联系方式是:cajun@XIyou.edu.cnc 编者 2002年7月 http://showmecode.cn/inks/book 目录 第一章走进Lnux 1.1与Lnux的成长… 1.2凵inⅸx的开发模式和运作机制 1.3走进LnuⅨ内核 1.3.1 Li nux内核的特征 ·: 1.3.2凵nu内核版本的变化 ··· 1.4分析凵nux内核的意义 :;·::: 112445789 1.4.1开发适合自己的操作系统 1.4.2开发高水平软件 1.4.3有助于计算机科学的教学和科研· 1.5凵nu∝内核结构 1.5.1nu内核在整个操作系统中的位置 1.5.2LnⅨ内核的作用 1.5.3凵nuⅨ内核的抽象结构 1.6凵nuⅨ内核源代码 12 1.6.1多版本的内核源代码 13 1.6.2凵nux内核源代码的结构 13 1.6.3从何处开始阅读源代码… 14 1.7凵nux内核源代码分析工具· 16 1.7.1凵nu超文本交叉代码检索工具 16 1.7.2WnM平台下的源代码阅读工具( Sour ce I nsi ght) 17 第二章凵nⅨ运行的硬件基础· 19 2.1i386的寄存器 21.1通用寄存器… 19 2.1.2段寄存器 2.1.3状态和控制寄存器 2.1.4系统地址寄存器… 23 21.5调试寄存器和测试寄存器 24 2.2内存地址 25 23段机制和描述符 26 2.3.1段机制… http://showmecode.cn/inks/book 深入分析 Linux内核源代码 2.3.2描述符的概念 27 2.3.3系统段描述符 2.3.4描述符表 2.3.5选择符与描述符表寄存器 23.6描述符投影寄存器 2.3.7凵nux中的段 24分页机制 34 24.1分页机构 24.2页面高速缓存 2.5凵nu中的分页机制…… 2.5.1与页相关的数据结构及宏的定义 2.5.2对页目录及页表的处理 42 2.6Lnux中的汇编语言 2.6.1A&与Inte汇编语言的比较 2.6.2A汇编语言的相关知识 26.3gcc嵌入式汇编… 2.6.4|nte386汇编指令摘要 第三章中断机制 3.1中断基本知识 3.1.1中断向 3.1.2外设可屏蔽中断… 3.1.3异常及非屏蔽中断 3.1.4中断描述符表 3.1.5相关汇编指令 3.2中断描述符表的初始化… 3.2.1外部中断向量的设置 3.2.2中断描述符表|D的预初始化… 3.2.3中断向量表的最终初始化 3异常处理 3.3.1在內核栈中保存寄存器的值· 3.3.2中断请求队列的初始化 70 3.3.3中断请求队列的数据结构 70 3.4中断处理 ·.· 34.1中断和异常处理的硬件处理 34.2凵nu对中断的处理 3.4.3与堆栈有关的常量、数据结构及宏 34.4中断处理程序的执行 3.4.5从中断返回… http://showmecode.cn/inks/book 录 3.5中断的后半部分处理机 3.5.1为什么把中断分为两部分来处理 3.5.2实现机制… 3.5.3数据结构的定义 35.4软中断、hh及 t ask et的初始化 3.5.5后半部分的执行 92 3.5.6把hh移植到 task et 第四章进程描述 999 41进程和程序( Process and pr ogr an 4.2Lnu中的进程概述 4.3 task struct结构描述· ·: 4.4 task struct结构在内存中的存放… ··· 107 4.4.1进程内核栈 :;·::: 44.2当前进程( cur rent宏) 108 4.5进程组织方式 4.5.1哈希表 109 4.5.2双向循环链表 110 4.5.3运行队列 …111 4.5.4进程的运行队列链表 4.5.5等待队列 112 4.6内核线程… …115 4.7进程的权能 116 4.8内核同步 117 1信号量 118 4.8.2原子操作 118 4.8.3自旋锁、读写自旋锁和大读者自旋锁 119 第五章进程调度与切换 5.1凵nu时间系统… 123 5.1.1时钟硬件 5.1.2时钟运作机制 5.1.3Linu时间基准 5.1.4凵nwx的时间系统 126 5.2时钟中断 126 5.21时钟中断的产生 5.2.2凵nux实现时钟中断的全过程 53LnuⅨ的调度程序— Schedul e() 13 5.3.1基本原理 http://showmecode.cn/inks/book 深入分析 Linux内核源代码 5.3.2Linu进程调度时机 133 5.3.3进程调度的依据 5.3.4进程可运行程度的衡量 136 5.3.5进程调度的实现 5.4进程切换… 5.4.1硬件支持… 5.4.2进程切换 第六章凵nuⅨ内存管理… 6.1 Li nux的内存管理概述 14 6.1.1凵nux虚拟内存的实现结构 148 6.1.2内核空间和用户空间 ·: 6.1.3虚拟內存实现机制问的关系 ··· 6.2凵nux内存管理的初始化 :;·::: 6.2.1启用分页机制 152 6.2.2物理内存的探测 6.2.3物理内存的描述 163 6.2.4页面管理机制的初步建立 166 6.2.5页表的建立… …173 6.2.6内存管理区…… 6.3内存的分配和回收 6.3.1伙伴算法 6.3.2物理页面的分配和释放 6.3.3Sab分配机制… 6.3.4内核空间非连续内存区的管理 201 6.4地址映射机制… 204 δ.4.1描述虚拟空间的数据结构… 205 6.4.2进程的虚拟空间 209 6.4.3内存映射 .·· 212 请页机制 218 6.5.1页故障的产生 218 6.5.2页错误的定位… 219 6.5.3进程地址空间中的缺页异常处理 6.5.4请求调页… 6.5.5写时复制 223 6.5.6对本节的几点说明 6.6交换机制 25 6.6.1交换的基本原理 225 6.6.2页面交换守护进程 swapo http://showmecode.cn/inks/book 录 6.6.3交换空间的数据结构 233 6.6.4交换空间的应用 234 6.7缓存和刷新机制 236 6.7.1n使用的缓存 26 6.7.2缓冲区高速缓存 ∴237 6.7.3翻译后援存储器(TB 240 6.7.4刷新机制 242 6.8进程的创建和执行· 245 6.8.1进程的创建… 245 6.8.2程序执行 252 6.8.3执行函数… 255 第七章进程间通信 263 7.1管道 :;·::: 26 7.1.1凵nuⅨ管道的实现机制 264 7.1.2管道的应用… 265 7.1.3命名管道 CFFC 7.2信号( si gnal) 267 7.2.1信号种类 …268 7.2.2信号掩码… 270 2.3系统调用 271 7.2.4典型系统调用的实现 272 2.5进程与信号的关系 274 7.2.6信号举例… 275 3 System V的PC机韦 276 7.3.1信号量… 276 7.3.2消息队列 282 7.3.3共享内存 285 第八章虚拟文件系统 8.1概述 289 8.2S中的数据结构… 8.2.1超级块 292 822VS的索引节点 8.2.3目录项对象 8.24与进程相关的文件结构 8.2.5主要数据结构间的关系 302 8.2.6有关操作的数据结构 302 8.3高速缓存 http://showmecode.cn/inks/book 深入分析 Linux内核源代码 8.3.1块高速缓存… 308 8.3.2索引节点高速缓存 312 8.3.3目录高速缓存 315 8.4文件系统的注册、安装与卸载 316 84.1文件系统的注册 316 84.2文件系统的安装 …319 8.4.3文件系统的卸载 326 8.5限数机制 8.6具体文件系统举例 328 86.1管道文件系统 pi pefs 8.6.2磁盘文件系统BFS 87文件系统的系统调用 8.7.1open系统调用 8.7.2read系统调用 8.7.3fcnt系统调用 336 8.8凵nu2.4文件系统的移植问题 337 第九章Et2文件系统… 343 9.1基本概念 343 9.2t2的磁盘布局和数据结构 345 9.2.1t2的磁盘布局 345 9.2.2Bt2的超级块 346 9.2.3t2的索引节点 9.2.4组描述符 352 9.2.5位图 9.2.6索引节点表及实例分析 9.27Bt2的目录项及文件的定位 358 3文件的访问权限和安全… 9.4链接文件 .·· 9.5分配策略 9.5.1数据块寻址 9.5.2文件的洞 368 9.5.3分配一个数据块 第十章模块机制 373 10.1概述 373 10.1.1什么是模块· 373 10.1.2为什么要使用模块? 374 10.1.3Ln∝内核模块的优缺点∴ …374

...展开详情
试读 127P 深入分析Linux内核源代码--文字版.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
weixin_43481935 very good 很好的学习资料
2019-10-27
回复
胡秀韬 书是好书,只可惜有点旧。
2018-06-18
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
深入分析Linux内核源代码--文字版.pdf 50积分/C币 立即下载
1/127
深入分析Linux内核源代码--文字版.pdf第1页
深入分析Linux内核源代码--文字版.pdf第2页
深入分析Linux内核源代码--文字版.pdf第3页
深入分析Linux内核源代码--文字版.pdf第4页
深入分析Linux内核源代码--文字版.pdf第5页
深入分析Linux内核源代码--文字版.pdf第6页
深入分析Linux内核源代码--文字版.pdf第7页
深入分析Linux内核源代码--文字版.pdf第8页
深入分析Linux内核源代码--文字版.pdf第9页
深入分析Linux内核源代码--文字版.pdf第10页
深入分析Linux内核源代码--文字版.pdf第11页
深入分析Linux内核源代码--文字版.pdf第12页
深入分析Linux内核源代码--文字版.pdf第13页
深入分析Linux内核源代码--文字版.pdf第14页
深入分析Linux内核源代码--文字版.pdf第15页
深入分析Linux内核源代码--文字版.pdf第16页
深入分析Linux内核源代码--文字版.pdf第17页
深入分析Linux内核源代码--文字版.pdf第18页
深入分析Linux内核源代码--文字版.pdf第19页
深入分析Linux内核源代码--文字版.pdf第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >