深入理解Linux内核(第三版)
深入理解Linux内核(第三版)
Daniel P. Bovet, Marco Cesati
陈莉君, 张琼声, 张宏伟 译
出版时间:2007年09月
页数:896
为了透彻理解Linux的工作机理,以及为何它在各种系统上能顺畅运行,你需要深入到内核的心脏。CPU与外部世界的所有交互活动都是由内核处理的;哪些程序会分享处理器的时间,以什么样的顺序来分享。内核不遗余力地管理有限的内存,以使数以千计的进程有效地共享系统资源。内核还精心组织数据传送,使得CPU不再受限于慢速硬盘。
《深入理解Linux内核》第三版将引领你畅游内核中用到的最主要数据结构、算法和编程技巧。如果你的确想了解计算机内部的实现机理,那么作者透过现象探寻本质,提供了颇有价值的深入分析。本书针对具体的Intel平台,讨论了其重要特征,逐行剖析了相关的代码片段。但是,本书涵盖的内容不仅仅局限于代码的机理,还解释了Linux运作方式的理论支撑。
本书第三版涵盖Linux 2.6,从中可以看到几乎内核每个子系统都有相当大的变化,首当其冲的是内存管理和块设备部分。本书集中讨论了如下内容:
●内存管理,包括文件缓冲、进程交换以及直接内存访问(DMA)
●虚拟文件系统层和第二及第三扩展文件系统
●进程创建及调度
●信号、中断及设备驱动程序的主要接口
●定时
●内核中的同步
●进程间通信(IPC)
●程序执行
本书将使你熟悉Linux所有的内在工作机理,但本书不仅仅是一种学术演练。你将了解到什么条件会促使Linux产生最佳性能,你还会看到,Linux在各种环境下如何满足进程调度、文件访问及内存管理期间系统提出的快速响应要求。本书有助于你充分展现Linux系统的魅力。
  1. 前言
  2. 第一章 绪论
  3. Linux与其他类Unix内核的比较
  4. 硬件的依赖性
  5. Linux版本
  6. 操作系统基本概念
  7. Unix 文件系统概述
  8. Unix内核概述
  9. 第二章 内存寻址
  10. 内存地址
  11. 硬件中的分段
  12. Linux中的分段
  13. 硬件中的分页
  14. Linux中的分页
  15. 第三章 进程
  16. 进程、轻量级进程和线程
  17. 进程描述符
  18. 进程切换
  19. 创建进程
  20. 撤消进程
  21. 第四章 中断和异常
  22. 中断信号的作用
  23. 中断和异常
  24. 中断和异常处理程序的嵌套执行
  25. 初始化中断描述符表
  26. 异常处理
  27. 中断处理
  28. 软中断及tasklet
  29. 工作队列
  30. 从中断和异常返回
  31. 第五章 内核同步
  32. 内核如何为不同的请求提供服务
  33. 同步原语
  34. 对内核数据结构的同步访问
  35. 避免竞争条件的实例
  36. 第六章 定时测量
  37. 时钟和定时器电路
  38. Linux计时体系结构
  39. 更新时间和日期
  40. 更新系统统计数
  41. 软定时器和延迟函数
  42. 与定时测量相关的系统调用
  43. 第七章 进程调度
  44. 调度策略
  45. 调度算法
  46. 调度程序所使用的数据结构
  47. 调度程序所使用的函数
  48. 多处理器系统中运行队列的平衡
  49. 与调度相关的系统调用
  50. 第八章 内存管理
  51. 页框管理
  52. 内存区管理
  53. 非连续内存区管理
  54. 第九章 进程地址空间
  55. 进程的地址空间
  56. 内存描述符
  57. 线性区
  58. 缺页异常处理程序
  59. 创建和删除进程的地址空间
  60. 堆的管理
  61. 第十章 系统调用
  62. POSIX API和系统调用
  63. 系统调用处理程序及服务例程
  64. 进入和退出系统调用
  65. 参数传递
  66. 内核封装例程
  67. 第十一章 信号
  68. 信号的作用
  69. 产生信号
  70. 传递信号
  71. 与信号处理相关的系统调用
  72. 第十二章 虚拟文件系统
  73. 虚拟文件系统(VFS)的作用
  74. VFS的数据结构
  75. 文件系统类型
  76. 文件系统处理
  77. 路径名查找
  78. VFS系统调用的实现
  79. 文件加锁
  80. 第十三章 I/O体系结构和设备驱动程序
  81. I/O体系结构
  82. 设备驱动程序模型
  83. 设备文件
  84. 设备驱动程序
  85. 字符设备驱动程序
  86. 第十四章 块设备驱动程序
  87. 块设备的处理
  88. 通用块层
  89. I/O调度程序
  90. 块设备驱动程序
  91. 打开块设备文件
  92. 第十五章 页高速缓存
  93. 页高速缓存
  94. 把块存放在页高速缓存中
  95. 把脏页写入磁盘
  96. sync()、fsync()和fdatasync()系统调用
  97. 第十六章 访问文件
  98. 读写文件
  99. 内存映射
  100. 直接I/O传送
  101. 异步I/O
  102. 第十七章 回收页框
  103. 页框回收算法
  104. 反向映射
  105. PFRA实现
  106. 交换
  107. 第十八章 Ext2和Ext3文件系统
  108. Ext2的一般特征
  109. Ext2磁盘数据结构
  110. Ext2的内存数据结构
  111. 创建Ext2文件系统
  112. Ext2的方法
  113. 管理Ext2磁盘空间
  114. Ext3文件系统
  115. 第十九章 进程通信
  116. 管道
  117. FIFO
  118. System V IPC
  119. POSIX消息队列
  120. 第二十章 程序的执行
  121. 可执行文件
  122. 可执行格式
  123. 执行域
  124. exec函数
  125. 附录一 系统启动
  126. 附录二 模块
  127. 参考文献
  128. 源代码索引
书名:深入理解Linux内核(第三版)
译者:陈莉君, 张琼声, 张宏伟 译
国内出版社:中国电力出版社
出版时间:2007年09月
页数:896
书号:978-7-5083-5394-4
原版书出版商:O'Reilly Media
Daniel P. Bovet
 
Daniel P. Bovet于1968年在加州大学洛杉矶分校获得计算机科学博士学位,现任意大利罗马大学Tor Vergata分校教授。由于以前缺乏现代的、设计良好的操作系统源代码,他等待了25年后才得以用适当的方法讲授操作系统课程。现在,借助于廉价PC机和Linux,Dan和Marco能够在课程中讲述操作系统的所有方面,从系统启动到系统调整,并且可以布置有一定的深度、又能满足学生们需要的作业。(这些真正被宠坏了的年轻人在家中的PC机上工作,从来没有用过那些穿孔卡片。)实际上,Dan对Linus Torvalds及其同事们的成就非常着迷,他花费了几年的时间试图揭示Linux的一些秘密。自然,在所有这些工作之后,他会就其研究成果写一本书。
 
 
Marco Cesati
 
Marco Cesati分别于1992年和1995年在罗马大学La Sapienza分校获得数学学位和计算机科学博士学位。现任罗马大学Tor Vergata分校工程学院计算机科学系的助理研究员。过去,他曾经是该大学(作为博士研究生)及其他几家研究机构(作为咨询顾问)的系统管理员和Unix程序员。最近三年,他一直致力于教授学生们如何以新奇和有趣的方式修改Linux内核。