Linux 内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信
进程调度(SCHED):控制进程对 CPU 的访问
当需要选择下一个进程运行时,由调度程序选择最值得运行的进程
可运行进程实际上是仅等待 CPU 资源的进程,假如某个进程在等待其它资源,则该进程是不可运行进程
Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程
内存管理(MM)允许多个进程安全的共享主内存区域
Linux 的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中
必要时操作系统负责在磁盘和内存间交换程序块
内存管理从逻辑上分为硬件无关部分和硬件有关部分
硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口
虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS 提供了多达数十种不同的文件系统
虚拟文件系统可以分为逻辑文件系统和设备驱动程序
逻辑文件系统指 Linux 所支持的文件系统,如 ext2,fat 等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块
网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持
网络接口可分为网络协议和网络驱动程序
网络协议部分负责实现每一种可能的网络传输协议
网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序
进程间通讯(IPC) 支持进程间各种通信机制
处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程
一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行