标签
内容简介
本书对早期的Linux操作系统内核(v0.11)全部源代码文件进行了详细的注释和说明,旨在帮助读者够在短时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。书中首先介绍了Linux系统的发展历史,着重说明了各个内核版本之间的重要区别,给出了选择0.11版作为研究对象的原因;然后依据内核源代码的组织结构对所有代码进行了详细注释。在注释的同时,还介绍了读者应该了解的相关知识,并给出了相关的硬件信息。本书还介绍了内核源代码的组织结构及相互关系。
编辑推荐
本书选取Linux内核早期版本v0.11作为解剖对象,对全部源代码逐文件详细注释,并补充相关硬件知识与代码组织结构说明。其价值在于:早期内核规模小、结构完整,读者能在较短时间内贯通从启动到进程管理的整体机理,而不至于在庞大代码中迷失。书中先交代各内核版本差异并说明选择0.11版的原因,为读者建立了明确的学习路径。注释之外还介绍应了解的背景知识,降低了直接读源码的门槛。适合作为操作系统课程之外的实践读本,也适合已有编程基础、想真正看懂内核如何运转的开发者。阅读时建议对照源码逐章推进,配合动手实验,避免只读不练。
适合谁读
适合
- 有C语言和计算机组成基础、想系统理解操作系统机理的开发者
- 计算机专业学生作为操作系统课程的配套实践读物
- 准备深入学习Linux内核、需要从简单版本入门的读者
- 对早期系统软件实现感兴趣的嵌入式或底层开发人员
不适合
- 没有C语言和汇编基础、刚开始学习编程的初学者
- 希望直接学习现代Linux内核新特性与驱动的读者
- 只想了解操作系统概念、不打算阅读源代码的读者
阅读建议
- 先读发展历史与版本选择部分,明确0.11版的研究价值与局限。
- 对照源码逐文件阅读注释,每章配合画出调用关系或数据结构图。
- 在虚拟机或模拟环境中编译运行0.11内核,边读边验证关键流程。
- 读完后按启动、进程、内存等主题做横向梳理,形成自己的笔记。
出版社简介
机械工业出版社
中国 · 成立于 1950 年
机械工业出版社(China Machine Press)在科技与专业出版之外,库内图书还体现出对心理学、计算机、管理、财经与社科等方向的持续关注。心理学方面收入荣格作品及分析心理学导论,并涉及压力与健康、成瘾与疗愈等应用议题;计算机领域有《计算机程序的构造和解释(JavaScript版)》;管理与财经类包括《管理行为(原书第4版)》《不平等的代价(珍藏版)》《这次不一样:八百年金融危机史(纪念版)》;科学哲学与科学史方面则有《世界观(原书第3版)》。相关作者资源涵盖C.G.荣格、威廉·麦圭尔、索努·沙姆达萨尼、加博尔·马泰等。公开资料有限,以上仅据库内图书归纳其出版面貌。
目录
- 版权信息
- 出版说明
- 前言
- 第1章 概述
- 1.1 Linux的诞生和发展
- 1.1.1 UNIX、MINIX、GNU和POSIX
- 1.1.2 Linux操作系统的诞生和版本的变迁
- 1.2 内容综述
- 1.3 本章小结
- 1.4 习题
- 第2章 Linux内核体系结构
- 2.1 Linux内核模式和体系结构
- 2.2 Linux中断机制
- 2.3 Linux系统定时
- 2.4 Linux内核进程控制
- 2.4.1 任务数据结构
- 2.4.2 进程运行状态
- 2.4.3 进程初始化
- 2.4.4 创建新进程
- 2.4.5 进程调度
- 2.4.6 终止进程
- 2.5 Linux内核对内存的使用方法
- 2.6 Linux系统中堆栈的使用方法
- 2.6.1 初始化阶段
- 2.6.2 任务的堆栈
- 2.6.3 内核态与用户态堆栈之间的切换
- 2.7 Linux内核源代码的目录结构
- 2.7.1 引导启动程序目录boot
- 2.7.2 文件系统目录fs
- 2.7.3 头文件主目录include
- 2.7.4 内核初始化程序目录init
- 2.7.5 内核程序主目录kernel
- 2.7.6 内核库函数目录lib
- 2.7.7 内存管理程序目录mm
- 2.7.8 编译内核工具程序目录tools
- 2.8 内核系统与用户程序的关系
- 2.9 Linux内核的编译实验环境
- 2.10 linux/Makefile文件
- 2.11 本章小结
- 2.12 习题
- 第3章 内核引导启动程序
- 3.1 总体功能描述
- 3.2 程序分析
- 3.2.1 bootsect.s程序
- 3.2.2 setup.s程序
- 3.2.3 head.s程序
- 3.3 本章小结
- 3.4 习题
- 第4章 内核初始化过程
- 4.1 main.c程序分析
- 4.2 本章小结
- 4.3 习题
- 第5章 进程调度与系统调用
- 5.1 总体功能描述
- 5.1.1 中断处理程序
- 5.1.2 系统调用处理相关程序
- 5.2 程序分析
- 5.2.1 asm.s程序
- 5.2.2 traps.c程序
- 5.2.3 system_call.s程序
- 5.2.4 mktime.c程序
- 5.2.5 sched.c程序
- 5.2.6 signal.c程序
- 5.2.7 exit.c程序
- 5.2.8 fork.c程序
- 5.2.9 sys.c程序
- 5.2.10 vsprintf.c程序
- 5.2.11 printk.c程序
- 5.2.12 panic.c程序
- 5.3 本章小结
- 5.4 习题
- 第6章 输入输出系统——块设备驱动程序
- 6.1 总体功能描述
- 6.1.1 块设备请求项和请求队列
- 6.1.2 块设备操作方式
- 6.2 程序分析
- 6.2.1 blk.h文件
- 6.2.2 hd.c程序
- 6.2.3 ll_rw_blk.c程序
- 6.2.4 ramdisk.c程序
- 6.2.5 floppy.c程序
- 6.3 本章小结
- 6.4 习题
- 第7章 输入输出系统——字符设备驱动程序
- 7.1 总体功能描述
- 7.1.1 终端驱动程序基本原理
- 7.1.2 终端基本数据结构
- 7.1.3 规范模式和非规范模式
- 7.1.4 控制台驱动程序
- 7.1.5 串行终端驱动程序
- 7.1.6 终端驱动程序接口
- 7.2 程序分析
- 7.2.1 keyboard.S程序
- 7.2.2 console.c程序
- 7.2.3 serial.c程序
- 7.2.4 rs_io.s程序
- 7.2.5 tty_io.c程序
- 7.2.6 tty ioctl.c程序
- 7.3 本章小结
- 7.4 习题
- 第8章 数学协处理器
- 8.1 math_emulate.c程序分析
- 8.2 本章小结
- 8.3 习题
- 第9章 文件系统
- 9.1 总体功能描述
- 9.1.1 MINIX文件系统
- 9.1.2 高速缓冲区
- 9.1.3 文件系统底层函数
- 9.1.4 文件中数据的访问操作
- 9.2 程序分析
- 9.2.1 buffer.c程序
- 9.2.2 bitmap.c程序
- 9.2.3 inode.c程序
- 9.2.4 super.c程序
- 9.2.5 namei.c程序
- 9.2.6 file_table.c程序
- 9.2.7 block_dev.c程序
- 9.2.8 file_dev.c程序
- 9.2.9 pipe.c程序
- 9.2.10 char_dev.c程序
- 9.2.11 read_write.c程序
- 9.2.12 truncate.c程序
- 9.2.13 open.c程序
- 9.2.14 exec.c程序
- 9.2.15 stat.c程序
- 9.2.16 fcntl.c程序
- 9.2.17 ioctl.c程序
- 9.3 本章小结
- 9.4 习题
- 第10章 内存管理
- 10.1 总体功能描述
- 10.1.1 内存分页管理机制
- 10.1.2 Linux中内存的管理和分配
- 10.1.3 写时复制机制
- 10.2 程序分析
- 10.2.1 memory.c程序
- 10.2.2 page.s程序
- 10.3 本章小结
- 10.4 习题
- 第11章 包含文件
- 11.1 程序分析
- 11.1.1 include/目录下的文件
- 11.1.2 a.out.h文件
- 11.1.3 const.h文件
- 11.1.4 ctype.h文件
- 11.1.5 errno.h文件
- 11.1.6 fcntl.h文件
- 11.1.7 signal.h文件
- 11.1.8 stdarg.h文件
- 11.1.9 stddef.h文件
- 11.1.10 string.h文件
- 11.1.11 termios.h文件
- 11.1.12 time.h文件
- 11.1.13 unistd.h文件
- 11.1.14 utime.h文件
- 11.1.15 include/asm/目录下的文件
- 11.1.16 io.h文件
- 11.1.17 memory.h文件
- 11.1.18 segment.h文件
- 11.1.19 system.h文件
- 11.1.20 include/linux/目录下的文件
- 11.1.21 config.h文件
- 11.1.22 fdreg.h头文件
- 11.1.23 fs.h文件
- 11.1.24 hdreg.h文件
- 11.2.25 head.h文件
- 11.1.26 kernel.h文件
- 11.1.27 mm.h文件
- 11.1.28 sched.h文件
- 11.1.29 sys.h文件
- 11.1.30 tty.h文件
- 11.1.31 include/sys/目录中的文件
- 11.1.32 stat.h文件
- 11.1.33 times.h文件
- 11.1.34 types.h文件
- 11.1.35 utsname.h文件
- 11.1.36 wait.h文件
- 11.2 本章小结
- 11.3 习题
- 第12章 内核库文件
- 12.1 程序分析
- 12.1.1 _exit.c程序
- 12.1.2 close.c程序
- 12.1.3 ctype.c程序
- 12.1.4 dup.c程序
- 12.1.5 errno.c程序
- 12.1.6 execve.c程序
- 12.1.7 malloc.c程序
- 12.1.8 open.c程序
- 12.1.9 setsid.c程序
- 12.1.10 string.c程序
- 12.1.11 wait.c程序
- 12.1.12 write.c程序
- 12.2 本章小结
- 12.3 习题
- 第13章 内核组建工具
- 13.1 build.c程序分析
- 13.2 本章小结
- 13.3 习题
- 参考文献
常见问题
为什么选择v0.11这样古老的版本?
早期内核代码量小、结构完整,便于在有限时间内把握操作系统核心机理。书中说明了各版本间的重要区别及选择0.11版的原因,目的是先建立整体理解,再迁移到现代内核的学习。
阅读前需要哪些基础?
需要具备C语言阅读能力,了解基本的计算机组成与汇编常识,并对进程、内存等操作系统概念有初步认识。缺少这些基础时,建议先补充相关课程内容再进入源码注释。
只读注释不写代码可以吗?
可以读通,但理解深度有限。建议配合编译运行和调试,亲手验证启动流程与关键数据结构,注释中的说明才更容易转化为自己的理解。
这本书能代替操作系统教材吗?
不能完全代替。它侧重源码注释与实现说明,理论体系的系统讲解仍需教材支撑。更适合作为教材之外的实践读本,两者配合使用效果更好。
读者评论
查询本书
本站为索引目录:「全网查询」由您发起、在您的浏览器中运行,所列入口均指向第三方站点,请自行判断可用性。
作者简介
赵炯
作者
赵炯,公开资料有限,目前仅知其代表作《Linux内核完全注释:20周年版》一种,常见分类为计算机综合。从这部作品来看,赵炯的写作重心在于操作系统内核的源码解读与注释,面向希望深入理解Linux内核实现细节的读者。这类注释性著作通常以逐行或逐模块剖析源码的方式展开,注重把抽象机制落实到具体代码,对读者的编程基础与操作系统知识有一定要求。就现有信息而言,赵炯更接近一位专注技术文本整理与讲解的作者,而非以多产或跨领域写作见长;其作品的实际影响与读者反馈,仍需更多公开资料加以佐证。