第二章 Linux 的内核结构
2.1 Linux内核在操作系统中的位置
Linux的内核不是孤立的,必须把它放在整个操作系统中去研究。

Linux操作系统由4个主要子系统组成:
(1). 用户进程。用户应用程序是运行在Linux操作系统最高层的一个庞大的软件集合,当一个用户程序在操作系统之上运行时,它就成为操作系统的一个进程。
(2). 系统调用接口。在应用程序中,可通过系统调用来调用操作系统内核中特定的过程,以实现特定的服务。如:在程序中安排一条创建进程的系统调用,则操作系统内核便会为之创建一个新的进程。
(3) Linux内核。内核是操作系统的灵魂,它负责管理磁盘上的文件,内存,负责启动并运行程序,负责从网络上接收和发送数据包等等。内核实际是抽象的资源操作到具体的硬件操作细节之间的接口。
(4) 硬件。这个子系统包括了Linux安装时需要的所有可能的物理设备。
这四个层次的依赖关系表现为:上层依赖下层。
2.2 Linux内核的抽象结构
Linux内核由5个主要的子系统组成;
1.进程调度(SCHED)控制着进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值的运行的进程。可运行进程是仅等待CPU资源的进程,如果某个进程在等待其它的资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
2.内存管理(MM)允许多个进程安全地共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据和堆栈的总量可以超过内存的大小,操作系统只将当前使用的程序块保留在内存,其余的程序块则保留在磁盘上。必要时,操作系统负责在磁盘和内存之间交换程序块。
内存管理从逻辑上可以分为影件无关的部分和影件相关的部分。影件无关的部分提纲了进程的映射和虚拟内存的对换,影件相关的部分为内存管理硬件提供了虚拟接口。
3.虚拟文件系统(Virtual File System ,VFS)隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,还支持多达数十种不同的文件系统,这也是Linux的特色。
4.网络接口(NET)提供了对不同网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议,网络设备驱动程序负责与硬件设备进行通信。
5. 进程间通信(IPC)支持进程间各种通信机制。
2.3 各个子系统之间的依赖关系如下

Linux 内核子系统及其之间的关系
1.进程调度于内存管理之间的关系:这两个子系统互相依赖。在多道程序环境下,程序要运行必须为之创建进程,而创建进程的第一件事,就是要将程序和数据装入内存。
2.进程间通信与内存管理的关系:进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了拥有自己的私有内存,还可存取共同的内存区域。
3.虚拟文件系统与网络接口之间的关系:虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK设备。
4.内存管理与虚拟文件系统之间的关系:内存管理利用虚拟文件系统支持交换,交换进程定期地由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。