猜你喜欢
Linux内核完全注释

Linux内核完全注释

书籍作者:赵炯 ISBN:9787111149682
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8533
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

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

本书适合作为计算机专业学生学习操作系统课程的实践教材和参考书,也适合Linux操作系统爱好者自学,还可供具有一定基础的技术人员作为嵌入式开发应用的参考书。


作者简介

前言

第1章 概述

1.1 Linrx的诞生和发展

1.1.1 UNIX、MINIX、GNU和POSIX

1.1.2 Linux操作系统的诞生和版本的变迁

1.2 内容综述

1.3 本章小结

1.4 习题

第2章 Linux内核体系结构

2.1 Linux内核模试和体系结构

2.2 Linrx中断机制

2.3 Linrx系统定时

2.4 Linrx内核进程控制

2.4.1任务数据结构

2.4.2 进程运行状态

2.4.3 进程初始化

2.4.4 创建新进程

2.4.5 进程调度

2.4.6 终止进程

2.5 Linrx内核对内存的使用法

2.6 Linrx系统中堆栈的使用法

2.6.1 初始化阶段

2.6.2 任务的堆栈

2.6.3 内核态与用户态堆的、栈之间的切换

2.7 Linrx内核源代码的目录结构

2.7.1 引导启动程序目录boot

2.7...

(展开全部)

前言

本书是一本有关Linux操作系统内核工作原理的入门读物,主要目标是使用尽量少的篇幅和有限的学习时间,对完整的Linux内核源代码进行解剖,使读者对操作系统的基本功能和实现方式有一个全面的理解。

目前已有的阐述Linux内核的书籍,均尽量选用最新Linux内核版本进行描述,但由于这些版本的内核源代码庞大,只能对源代码进行选择性的讲解,许多实现细节被忽略。本书则对完整的Linux内核源代码进行了全面解剖。表面看来,本书对Linux早期内核版本注释的内容似乎过时,但通过学习你会发现,利用本书学习Linux内核,由于源代码量短小精干,因此会有极高的学习效率,能够做到事半功倍,快速入门,并为进一步选择新内核学习打下坚实的基础。

正如Linux系统的创始人Linus所说,要理解一个系统的真正运行机制,一定要阅读其源代码。系统本身是一个整体,具有很多看似不重要的细节。只有在详细阅读过完整的内核源代码之后,才会对整个系统的运作过程有深刻的理解。以后再选择较新内核源代码进行学习时,也不会碰到大问题,基本上都能顺利地理解新代码的内容。

为了帮助读者提高学习效率,作者通过对多个Linux内核版本进行比较和选择,最终选择了与目前Linux内核基本功能较为相近,又非常短小的0.11版作为人门学习的最佳版本。0.11版内核源代码只有一万四千行左右(325KB),其中包括的内容基本上都是Linux系统的精髓。

在阅读本书时,读者应该具备基本的有关80x86处理器编程和相关外围硬件的知识,还应具备使用Linux系统的初级技能。由于Linus最早是根据M.J.Bach的《UNIX操作系统设计》一书的基本原理开发的,因此若能适当参考该书,则更有利于对源代码的理解。

在对每个程序进行描述时,我们首先说明程序的主要用途、输入输出参数以及与其他程序的关系,然后在程序中对代码进行详细注释。注释时对源代码和原注释不作任何改动。在代码之后是对程序中出现的一些语句或硬件方面的相关知识进行说明。

本书所需的一些基本概念均分布在各章中,这样编排主要是为了能够使读者方便地找到相关信息,而且在结合源代码阅读时;对一些基本概念能有更深的理解。另外,由于篇幅所限,我们对内核源代码多数文件开始处的版权信息作了省略,但程序中的行号仍然按原来的编号。

最后要说明的是,当你已经完全理解了本文解说的一切时,并不代表你已经成为一个Linux行家了,你只是刚刚踏上Linux的征途,具有了成为一个Linux高手的初步知识。这时你应该去阅读更多的源代码。

奉书读者群的定位是一些知晓Linux系统一般使用方法或具有一定编程经验,但比较缺乏阅读目前最新内核源代码的基础,又急切希望能够进一步理解类UNIX操作系统内核工作原理和实际代码实现的爱好者。在阅读时可以参考为本书专门开设的网站www.oldlinux.org。从中可以下载到很多学习资料和上机实习软件,也可以进行在线讨论。


目录

前言

第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 内核程序主目录kemel

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 noppy.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.3serisl.c程序

7.2.4 rs—iO.s程序

7.2.5 ny—iO.c程序

7.2.6 ny—ioctl.c程序

7.3 本章小结

7.4 习题

第8章 数学协处理器

8.1 math—elTILllation.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文件

......


短评

喜欢这本书 希望好好学习linux内核 莫等闲 白了少年头

2020-11-04 09:04:50

这一次买得比较多 暂时还没有来得急看 但是书的质量看起来还是不错的 很棒的一次购物体验 以后会在买其他的书籍的。

2020-09-22 10:16:03

这本书对于我应该帮助很大

2020-09-28 07:15:18

Linux内核完全注释的书评

阅读源代码,哈哈,通过看操作系统的源代码,可以对整个计算机系统有个深入的了解,这个是做应用程序的人很难体会到的感觉,我是看了《unix操作系统设计》这本书后才看的赵博士这本,阅读过伪代码后,看实际的代码要舒服的多,力荐啊

2007-09-24 20:00:29

这本书介绍的是最初版本的linux,可能只有一万多行的代码,但又是五脏俱全,操作系统中涉及的基本都包括了。 我觉得本书最为经典的还是开头的一些基本介绍(如makefile,80386的保护模式,内存寻址等等),知道了这些才能深入学习下去。 其次就是那几个汇编语言写的源文件,...

2015-03-21 23:31:00

标签
linux,kernel,操作系统,Linux内核,Linux,计算机,Linux内核完全注释,OS