本书使用Linux V.11版内核代码:
1. 完整的操作系统分为4大部分:用户应用程序、操作系统服务、操作系统内核、硬件系统。
用户应用程序:字处理程序、网络通信程序、程序员自己编写的应用程序。
操作系统服务:为应用程序提供系统服务的是操作系统部分功能的程序,比如内核编程接口。
操作系统内核:对硬件的抽象和访问调度,与硬件设备进行交互的程序部分。
硬件系统:硬件设备的使用手册。
2. 内核模式:整体式单内核和层次式微内核
(本书linux内核为单内核)单内核的组成:1.调用服务的主程序;2.执行系统调用的服务层;3.支持系统调用的底层函数。
3.内核系统体系结构:
内存管理模块:为所用进程提供内存的使用,对高速缓存的分配和管理。
进程调度模块:保证进程间公平的使用CPU时间。
文件系统模块:支持外部设备的驱动和存储。
虚拟文件系统:为所用外设存储器提供内核中统一的存储地址编制。
网络通信模块:提供网络通信标准。
4.内核原码目录结构:
linux
|-->boot 系统引导汇编程序
|-->fs 文件系统
|-->include 头文件(*.h)
|-->asm 与CPU体系结构相关的部分
|-->linux Linux 内核专用部分
|-->sys 系统数据结构部分
|-->init 内核初始化程序
|-->kernel 内核进程调度、信号处理、系统调用等程序
|-->blk_drv 块设备驱动程序
|-->chr_drv 字符设备驱动程序
|-->math 数学协处理仿真处理程序
|-->lib 内核库函数
|-->mm 内存管理程序
|-->tools 生成内核Image文件的工具程序
5.内核编译的实验环境
最初的Linux操作系统内核是在Minix 1.5.10 操作系统的扩展版本Minix-i386上交叉编译开发的。后面由于Linux操作系统用在了80386上面(32位机),之前的程序没有32位机制,所以后面Linus使用了Bruce Evans的补丁程序将其升级为MINIX-386,并把GNU的心裂开发工具gcc、gld、emacs、bash等移植到Minix-386上。在这个平台上,Linus进行交叉编译,开发出了Linux 0.01、0.11、0.12等版本的内核。
6.内核镜像文件Image组成:
a.bootsect
b.setup
c.system(head、main、kernel、mm、fs、lib)