Linux内核完全注释:20周年版 封面

Linux内核完全注释:20周年版

评分 4.3
字数
11.2万字
章节数
201
ISBN
9787111740650

标签

内容简介

本书对早期的Linux操作系统内核(v0.11)全部源代码文件进行了详细的注释和说明,旨在帮助读者够在短时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。书中首先介绍了Linux系统的发展历史,着重说明了各个内核版本之间的重要区别,给出了选择0.11版作为研究对象的原因;然后依据内核源代码的组织结构对所有代码进行了详细注释。在注释的同时,还介绍了读者应该了解的相关知识,并给出了相关的硬件信息。本书还介绍了内核源代码的组织结构及相互关系。

编辑推荐

本书选取Linux内核早期版本v0.11作为解剖对象,对全部源代码逐文件详细注释,并补充相关硬件知识与代码组织结构说明。其价值在于:早期内核规模小、结构完整,读者能在较短时间内贯通从启动到进程管理的整体机理,而不至于在庞大代码中迷失。书中先交代各内核版本差异并说明选择0.11版的原因,为读者建立了明确的学习路径。注释之外还介绍应了解的背景知识,降低了直接读源码的门槛。适合作为操作系统课程之外的实践读本,也适合已有编程基础、想真正看懂内核如何运转的开发者。阅读时建议对照源码逐章推进,配合动手实验,避免只读不练。

适合谁读

适合

  • 有C语言和计算机组成基础、想系统理解操作系统机理的开发者
  • 计算机专业学生作为操作系统课程的配套实践读物
  • 准备深入学习Linux内核、需要从简单版本入门的读者
  • 对早期系统软件实现感兴趣的嵌入式或底层开发人员

不适合

  • 没有C语言和汇编基础、刚开始学习编程的初学者
  • 希望直接学习现代Linux内核新特性与驱动的读者
  • 只想了解操作系统概念、不打算阅读源代码的读者

阅读建议

  1. 先读发展历史与版本选择部分,明确0.11版的研究价值与局限。
  2. 对照源码逐文件阅读注释,每章配合画出调用关系或数据结构图。
  3. 在虚拟机或模拟环境中编译运行0.11内核,边读边验证关键流程。
  4. 读完后按启动、进程、内存等主题做横向梳理,形成自己的笔记。

出版社简介

机械工业出版社 中国 · 成立于 1950 年

机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。

目录

  1. 版权信息
  2. 出版说明
  3. 前言
  4. 第1章 概述
  5. 1.1 Linux的诞生和发展
  6. 1.1.1 UNIX、MINIX、GNU和POSIX
  7. 1.1.2 Linux操作系统的诞生和版本的变迁
  8. 1.2 内容综述
  9. 1.3 本章小结
  10. 1.4 习题
  11. 第2章 Linux内核体系结构
  12. 2.1 Linux内核模式和体系结构
  13. 2.2 Linux中断机制
  14. 2.3 Linux系统定时
  15. 2.4 Linux内核进程控制
  16. 2.4.1 任务数据结构
  17. 2.4.2 进程运行状态
  18. 2.4.3 进程初始化
  19. 2.4.4 创建新进程
  20. 2.4.5 进程调度
  21. 2.4.6 终止进程
  22. 2.5 Linux内核对内存的使用方法
  23. 2.6 Linux系统中堆栈的使用方法
  24. 2.6.1 初始化阶段
  25. 2.6.2 任务的堆栈
  26. 2.6.3 内核态与用户态堆栈之间的切换
  27. 2.7 Linux内核源代码的目录结构
  28. 2.7.1 引导启动程序目录boot
  29. 2.7.2 文件系统目录fs
  30. 2.7.3 头文件主目录include
  31. 2.7.4 内核初始化程序目录init
  32. 2.7.5 内核程序主目录kernel
  33. 2.7.6 内核库函数目录lib
  34. 2.7.7 内存管理程序目录mm
  35. 2.7.8 编译内核工具程序目录tools
  36. 2.8 内核系统与用户程序的关系
  37. 2.9 Linux内核的编译实验环境
  38. 2.10 linux/Makefile文件
  39. 2.11 本章小结
  40. 2.12 习题
  41. 第3章 内核引导启动程序
  42. 3.1 总体功能描述
  43. 3.2 程序分析
  44. 3.2.1 bootsect.s程序
  45. 3.2.2 setup.s程序
  46. 3.2.3 head.s程序
  47. 3.3 本章小结
  48. 3.4 习题
  49. 第4章 内核初始化过程
  50. 4.1 main.c程序分析
  51. 4.2 本章小结
  52. 4.3 习题
  53. 第5章 进程调度与系统调用
  54. 5.1 总体功能描述
  55. 5.1.1 中断处理程序
  56. 5.1.2 系统调用处理相关程序
  57. 5.2 程序分析
  58. 5.2.1 asm.s程序
  59. 5.2.2 traps.c程序
  60. 5.2.3 system_call.s程序
  61. 5.2.4 mktime.c程序
  62. 5.2.5 sched.c程序
  63. 5.2.6 signal.c程序
  64. 5.2.7 exit.c程序
  65. 5.2.8 fork.c程序
  66. 5.2.9 sys.c程序
  67. 5.2.10 vsprintf.c程序
  68. 5.2.11 printk.c程序
  69. 5.2.12 panic.c程序
  70. 5.3 本章小结
  71. 5.4 习题
  72. 第6章 输入输出系统——块设备驱动程序
  73. 6.1 总体功能描述
  74. 6.1.1 块设备请求项和请求队列
  75. 6.1.2 块设备操作方式
  76. 6.2 程序分析
  77. 6.2.1 blk.h文件
  78. 6.2.2 hd.c程序
  79. 6.2.3 ll_rw_blk.c程序
  80. 6.2.4 ramdisk.c程序
  81. 6.2.5 floppy.c程序
  82. 6.3 本章小结
  83. 6.4 习题
  84. 第7章 输入输出系统——字符设备驱动程序
  85. 7.1 总体功能描述
  86. 7.1.1 终端驱动程序基本原理
  87. 7.1.2 终端基本数据结构
  88. 7.1.3 规范模式和非规范模式
  89. 7.1.4 控制台驱动程序
  90. 7.1.5 串行终端驱动程序
  91. 7.1.6 终端驱动程序接口
  92. 7.2 程序分析
  93. 7.2.1 keyboard.S程序
  94. 7.2.2 console.c程序
  95. 7.2.3 serial.c程序
  96. 7.2.4 rs_io.s程序
  97. 7.2.5 tty_io.c程序
  98. 7.2.6 tty ioctl.c程序
  99. 7.3 本章小结
  100. 7.4 习题
  101. 第8章 数学协处理器
  102. 8.1 math_emulate.c程序分析
  103. 8.2 本章小结
  104. 8.3 习题
  105. 第9章 文件系统
  106. 9.1 总体功能描述
  107. 9.1.1 MINIX文件系统
  108. 9.1.2 高速缓冲区
  109. 9.1.3 文件系统底层函数
  110. 9.1.4 文件中数据的访问操作
  111. 9.2 程序分析
  112. 9.2.1 buffer.c程序
  113. 9.2.2 bitmap.c程序
  114. 9.2.3 inode.c程序
  115. 9.2.4 super.c程序
  116. 9.2.5 namei.c程序
  117. 9.2.6 file_table.c程序
  118. 9.2.7 block_dev.c程序
  119. 9.2.8 file_dev.c程序
  120. 9.2.9 pipe.c程序
  121. 9.2.10 char_dev.c程序
  122. 9.2.11 read_write.c程序
  123. 9.2.12 truncate.c程序
  124. 9.2.13 open.c程序
  125. 9.2.14 exec.c程序
  126. 9.2.15 stat.c程序
  127. 9.2.16 fcntl.c程序
  128. 9.2.17 ioctl.c程序
  129. 9.3 本章小结
  130. 9.4 习题
  131. 第10章 内存管理
  132. 10.1 总体功能描述
  133. 10.1.1 内存分页管理机制
  134. 10.1.2 Linux中内存的管理和分配
  135. 10.1.3 写时复制机制
  136. 10.2 程序分析
  137. 10.2.1 memory.c程序
  138. 10.2.2 page.s程序
  139. 10.3 本章小结
  140. 10.4 习题
  141. 第11章 包含文件
  142. 11.1 程序分析
  143. 11.1.1 include/目录下的文件
  144. 11.1.2 a.out.h文件
  145. 11.1.3 const.h文件
  146. 11.1.4 ctype.h文件
  147. 11.1.5 errno.h文件
  148. 11.1.6 fcntl.h文件
  149. 11.1.7 signal.h文件
  150. 11.1.8 stdarg.h文件
  151. 11.1.9 stddef.h文件
  152. 11.1.10 string.h文件
  153. 11.1.11 termios.h文件
  154. 11.1.12 time.h文件
  155. 11.1.13 unistd.h文件
  156. 11.1.14 utime.h文件
  157. 11.1.15 include/asm/目录下的文件
  158. 11.1.16 io.h文件
  159. 11.1.17 memory.h文件
  160. 11.1.18 segment.h文件
  161. 11.1.19 system.h文件
  162. 11.1.20 include/linux/目录下的文件
  163. 11.1.21 config.h文件
  164. 11.1.22 fdreg.h头文件
  165. 11.1.23 fs.h文件
  166. 11.1.24 hdreg.h文件
  167. 11.2.25 head.h文件
  168. 11.1.26 kernel.h文件
  169. 11.1.27 mm.h文件
  170. 11.1.28 sched.h文件
  171. 11.1.29 sys.h文件
  172. 11.1.30 tty.h文件
  173. 11.1.31 include/sys/目录中的文件
  174. 11.1.32 stat.h文件
  175. 11.1.33 times.h文件
  176. 11.1.34 types.h文件
  177. 11.1.35 utsname.h文件
  178. 11.1.36 wait.h文件
  179. 11.2 本章小结
  180. 11.3 习题
  181. 第12章 内核库文件
  182. 12.1 程序分析
  183. 12.1.1 _exit.c程序
  184. 12.1.2 close.c程序
  185. 12.1.3 ctype.c程序
  186. 12.1.4 dup.c程序
  187. 12.1.5 errno.c程序
  188. 12.1.6 execve.c程序
  189. 12.1.7 malloc.c程序
  190. 12.1.8 open.c程序
  191. 12.1.9 setsid.c程序
  192. 12.1.10 string.c程序
  193. 12.1.11 wait.c程序
  194. 12.1.12 write.c程序
  195. 12.2 本章小结
  196. 12.3 习题
  197. 第13章 内核组建工具
  198. 13.1 build.c程序分析
  199. 13.2 本章小结
  200. 13.3 习题
  201. 参考文献

常见问题

为什么选择v0.11这样古老的版本?
早期内核代码量小、结构完整,便于在有限时间内把握操作系统核心机理。书中说明了各版本间的重要区别及选择0.11版的原因,目的是先建立整体理解,再迁移到现代内核的学习。
阅读前需要哪些基础?
需要具备C语言阅读能力,了解基本的计算机组成与汇编常识,并对进程、内存等操作系统概念有初步认识。缺少这些基础时,建议先补充相关课程内容再进入源码注释。
只读注释不写代码可以吗?
可以读通,但理解深度有限。建议配合编译运行和调试,亲手验证启动流程与关键数据结构,注释中的说明才更容易转化为自己的理解。
这本书能代替操作系统教材吗?
不能完全代替。它侧重源码注释与实现说明,理论体系的系统讲解仍需教材支撑。更适合作为教材之外的实践读本,两者配合使用效果更好。

读者评论

查询本书

本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。

作者简介

赵炯 作者

赵炯,公开资料有限,目前仅知其代表作《Linux内核完全注释:20周年版》一种,常见分类为计算机综合。从这部作品来看,赵炯的写作重心在于操作系统内核的源码解读与注释,面向希望深入理解Linux内核实现细节的读者。这类注释性著作通常以逐行或逐模块剖析源码的方式展开,注重把抽象机制落实到具体代码,对读者的编程基础与操作系统知识有一定要求。就现有信息而言,赵炯更接近一位专注技术文本整理与讲解的作者,而非以多产或跨领域写作见长;其作品的实际影响与读者反馈,仍需更多公开资料加以佐证。

同类高分