描述
开 本: 16开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787111250470
编辑推荐
本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作原理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中还给出了围绕Linux0.12的多个实验。
微型计算机组成结构、内核编程语言和环境、80×86保护模式及其编程、Linux内核体系结构、引导启动程序、初始化程序、内核代码、块设备驱动程序、字符设备驱动程序、数学协处理器、文件系统、内存管理、头文件、库文件、建造工具、实验环境设置与使用方法。
微型计算机组成结构、内核编程语言和环境、80×86保护模式及其编程、Linux内核体系结构、引导启动程序、初始化程序、内核代码、块设备驱动程序、字符设备驱动程序、数学协处理器、文件系统、内存管理、头文件、库文件、建造工具、实验环境设置与使用方法。
内容简介
本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,旨在帮助读者用较短的时间对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,介绍了Linux的历史,同时着重说明了各个内核版本的主要区别和改进,给出了选择0.12版内核源代码作为研究对象的原因。在正式描述内核源代码之前,概要介绍了运行Linux的PC的硬件组成结构、编制内核使用的汇编语言和C语言扩展部分,并且重点说明了80×86处理器在保护模式下运行的编程方法。接着详细介绍了Linux内核源代码目录树组织结构,并依据该结构对所有内核程序和文件进行了注释和详细说明。有关代码注释的章节安排基本上都分为具体研究对象的概述、每个文件的功能介绍、代码内注释、代码中难点及相关资料介绍等部分。为了加深读者对内核工作原理的理解,书中最后一章给出了围绕Linux 0.12系统的多个试验。
本书适合Linux爱好者作为学习内核工作原理的自学参考书籍,也适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,还可供一般技术人员作为开发嵌入式系统的参考书使用。
本书适合Linux爱好者作为学习内核工作原理的自学参考书籍,也适合作为高校计算机专业学生学习操作系统课程的辅助和实践教材,还可供一般技术人员作为开发嵌入式系统的参考书使用。
目 录
序
第1章 概述
1.1 Linux的诞生和发展
1.1.1 UNIX操作系统的诞生
1.1.2 MINIX操作系统
1.1.3 GNU计划
1.1.4 POSIX标准
1.1.5 Linux操作系统的诞生
1.1.6 Linux操作系统版本的变迁
1.1.7 Linux名称的由来
1.1.8 早期Linux系统开发的主要贡献者
1.2 内容综述
1.3 本章小结
第2章 微型计算机组成结构
2.1 微型计算机组成原理
2.2 I/O端口寻址和访问控制方式
2.2.1 I/O端口和寻址
2.2.2 接口访问控制
2.3 主存储器、BIOS和CMOS存储器
2.3.1 主存储器
2.3.2 基本输入/输出程序BIOS
2.3.3 CMOS存储器
2.4 控制器和控制卡
2.4.1 中断控制器
2.4.2 DMA控制器
2.4.3 定时/计数器
2.4.4 键盘控制器
2.4.5 串行控制卡
2.4.6 显示控制
2.4.7 软盘和硬盘控制器
2.5 本章小结
第3章 内核编程语言和环境
3.1 as86汇编器
3.1.1 as86汇编语言语法
3.1.2 as86汇编语言程序
3.1.3 as86汇编语言程序的编译和链接
3.1.4 as86和1d86使用方法和选项
3.2 CNU as汇编
3.2.1 编译as汇编语言程序
3.2.2 as汇编语法
3.2.3 指令语句、操作数和寻址
3.2.4 区与重定位
3.2.5 符号
3.2.6 as汇编命令
3.2.7 编写16位代码
3.2.8 AS汇编器命令行选项
3.3 C语言程序
3.3.1 C程序编译和链接
3.3.2 嵌入汇编
3.3.3 圆括号中的组合语句
3.3.4 寄存器变量
3.3.5 内联函数
3.4 C与汇编程序的相互调用
3.4.1 C函数调用机制
3.4.2 在汇编程序中调用C函数
3.4.3 在C程序中调用汇编函数
3.5 Linux 0.12目标文件格式
3.5.1 目标文件格式
3.5.2 Linux0.12中的目标文件格式
3.5.3 链接程序输出
3.5.4 链接程序预定义变量一
3.5.5 System.map文件
3.6 Make程序和Makefile文件
3.6.1 Makefite文件内容
3.6.2 Makefile文件中的规则
3.6.3 Makefile文件示例
3.6.4 make处理Makefile文件的方式
3.6.5 Makefile中的变量
……
第4章 80X86保护模式及其编程
第5章 Linux内核体系结构
第6章 引导启动程序
第7章 初始化程序
第8章 内核代码
第9章 块设备驱动程序
第10章 字符设备驱动程序
第11章 数学协处理器
第12章 文件系统
第13章 内存管理
第14章 头文件
第15章 库文件
第16章 建造工具
第17章 实验环境设置与使用方法
附录
参考文献
第1章 概述
1.1 Linux的诞生和发展
1.1.1 UNIX操作系统的诞生
1.1.2 MINIX操作系统
1.1.3 GNU计划
1.1.4 POSIX标准
1.1.5 Linux操作系统的诞生
1.1.6 Linux操作系统版本的变迁
1.1.7 Linux名称的由来
1.1.8 早期Linux系统开发的主要贡献者
1.2 内容综述
1.3 本章小结
第2章 微型计算机组成结构
2.1 微型计算机组成原理
2.2 I/O端口寻址和访问控制方式
2.2.1 I/O端口和寻址
2.2.2 接口访问控制
2.3 主存储器、BIOS和CMOS存储器
2.3.1 主存储器
2.3.2 基本输入/输出程序BIOS
2.3.3 CMOS存储器
2.4 控制器和控制卡
2.4.1 中断控制器
2.4.2 DMA控制器
2.4.3 定时/计数器
2.4.4 键盘控制器
2.4.5 串行控制卡
2.4.6 显示控制
2.4.7 软盘和硬盘控制器
2.5 本章小结
第3章 内核编程语言和环境
3.1 as86汇编器
3.1.1 as86汇编语言语法
3.1.2 as86汇编语言程序
3.1.3 as86汇编语言程序的编译和链接
3.1.4 as86和1d86使用方法和选项
3.2 CNU as汇编
3.2.1 编译as汇编语言程序
3.2.2 as汇编语法
3.2.3 指令语句、操作数和寻址
3.2.4 区与重定位
3.2.5 符号
3.2.6 as汇编命令
3.2.7 编写16位代码
3.2.8 AS汇编器命令行选项
3.3 C语言程序
3.3.1 C程序编译和链接
3.3.2 嵌入汇编
3.3.3 圆括号中的组合语句
3.3.4 寄存器变量
3.3.5 内联函数
3.4 C与汇编程序的相互调用
3.4.1 C函数调用机制
3.4.2 在汇编程序中调用C函数
3.4.3 在C程序中调用汇编函数
3.5 Linux 0.12目标文件格式
3.5.1 目标文件格式
3.5.2 Linux0.12中的目标文件格式
3.5.3 链接程序输出
3.5.4 链接程序预定义变量一
3.5.5 System.map文件
3.6 Make程序和Makefile文件
3.6.1 Makefite文件内容
3.6.2 Makefile文件中的规则
3.6.3 Makefile文件示例
3.6.4 make处理Makefile文件的方式
3.6.5 Makefile中的变量
……
第4章 80X86保护模式及其编程
第5章 Linux内核体系结构
第6章 引导启动程序
第7章 初始化程序
第8章 内核代码
第9章 块设备驱动程序
第10章 字符设备驱动程序
第11章 数学协处理器
第12章 文件系统
第13章 内存管理
第14章 头文件
第15章 库文件
第16章 建造工具
第17章 实验环境设置与使用方法
附录
参考文献
在线试读
第1章 概述
本章首先回顾了Linux操作系统的诞生、开发和成长过程,由此读者可以理解本书选择Linux系统早期版本作为学习对象的一些原因;然后具体说明了选择早期Linux内核版本进行学习的优点和不足之处以及如何开始进一步学习;最后对各章的内容进行了简要介绍。
1.1 Linux的诞生和发展
Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年10月5日(这是第一次正式向外公布的时间)。此后借助于Internet网络,经过全世界计算机爱好者的共同努力,现已成为当今使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。
Linux操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet。下面根据这五个基本线索来回顾一下Linux的酝酿过程、开发历程以及最初的发展。首先分别介绍其中的四个基本要素,然后根据Linux的创始人Linus Torvalds从对计算机感兴趣而自学计算机知识,到心里开始酝酿编制一个自己的操作系统,到最初Linux内核0.O1版公布以及从此如何艰难地一步一个脚印地在全世界黑客的帮助下推出比较完善的1.0版本这段经过,对Linux的早期发展历史进行详细介绍。
当然,目前Linux内核版本已经开发到了2.6.X版。而大多数Linux系统中所用到的内核是稳定的2.6.12版内核(其中第2个数字若是奇数则表示正在开发的版本,不能保证系统的稳定性)。对于Linux的一般发展史,许多文章和书籍都有介绍,这里不再重复。
1.1.1 UNIX操作系统的诞生
UNIX操作系统最早是美国贝尔实验室的Ken Thompson于1969年夏在DEC PDP-7小型计算机上开发的一个分时操作系统。
Ken Thompson为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(Star Trek)游戏,于1969年夏天趁他夫人回家乡加利福尼亚度假期间,在一个月内开发出了UNIX操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经Dennis Ritchie于1972年用移植性很强的C语言进行了改写,使得UNIX系统在大学得到了推广。
……
本章首先回顾了Linux操作系统的诞生、开发和成长过程,由此读者可以理解本书选择Linux系统早期版本作为学习对象的一些原因;然后具体说明了选择早期Linux内核版本进行学习的优点和不足之处以及如何开始进一步学习;最后对各章的内容进行了简要介绍。
1.1 Linux的诞生和发展
Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年10月5日(这是第一次正式向外公布的时间)。此后借助于Internet网络,经过全世界计算机爱好者的共同努力,现已成为当今使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。
Linux操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet。下面根据这五个基本线索来回顾一下Linux的酝酿过程、开发历程以及最初的发展。首先分别介绍其中的四个基本要素,然后根据Linux的创始人Linus Torvalds从对计算机感兴趣而自学计算机知识,到心里开始酝酿编制一个自己的操作系统,到最初Linux内核0.O1版公布以及从此如何艰难地一步一个脚印地在全世界黑客的帮助下推出比较完善的1.0版本这段经过,对Linux的早期发展历史进行详细介绍。
当然,目前Linux内核版本已经开发到了2.6.X版。而大多数Linux系统中所用到的内核是稳定的2.6.12版内核(其中第2个数字若是奇数则表示正在开发的版本,不能保证系统的稳定性)。对于Linux的一般发展史,许多文章和书籍都有介绍,这里不再重复。
1.1.1 UNIX操作系统的诞生
UNIX操作系统最早是美国贝尔实验室的Ken Thompson于1969年夏在DEC PDP-7小型计算机上开发的一个分时操作系统。
Ken Thompson为了能在闲置不用的PDP-7计算机上运行他非常喜欢的星际旅行(Star Trek)游戏,于1969年夏天趁他夫人回家乡加利福尼亚度假期间,在一个月内开发出了UNIX操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经Dennis Ritchie于1972年用移植性很强的C语言进行了改写,使得UNIX系统在大学得到了推广。
……
评论
还没有评论。