linux内核的整体结构

xiaoxiao2021-02-28  71

Linux内核由5个主要的子系统组成。

这5个子系统分别是

进程调度(SCHED) 内存管理(MM) 虚拟文件系统(Virtual File System,VFS) 网络接口(NET) 进程间通信(IPC)


进程调度控制着进程对CPU的访问。

当需要选择下一个进程运行时,由调度程序选择最值得(应该)运行的进程。可运行进程实际是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。


内存管理允许多个进程安全地共享主内存区域。

Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码、数据和堆栈的总量可以超过实际内存的大小,操作系统只将当前使用的程序块保留在内存中,其余的程序块则保留在磁盘上。必要时,操作系统负责在磁盘和内存之间交换程序块。

内存管理从逻辑上可以分为硬件无关的部分和硬件相关的部分。 硬件无关的部分提供了进程的映射和虚拟内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。


虚拟文件系统

虚拟文件系统隐藏了各种不同硬件的具体细节,为所有设备提供了统一的接口,虚拟文件系统还支持多达数十种不同的文件系统,这也是Linux较有特色的部分。 虚拟文件系统可分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2、fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。


网络接口提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协 议和网络驱动程序两部分。网络协议部分负责实现每一种可能的网络传输协议,网络设 备驱动程序负责与硬件设备进行通信,每一种可能的硬件设备都有相应的设备驱动程序。 进程间通信支持进程间各种通信机制。 下图显示了上述五个子系统之间的关系: 各个子系统之间的依赖关系如下: 1. 进程调度与内存管理之间的关系: 这两个子系统互相依赖。在多道程序环境下,程序要运行必须为之创建进程,而创建进 程的第一件事,就是要将程序和数据装入内存。 2. 进程间通信与内存管理之间的关系: 进程间通信子系统要依赖内存管理支持共享内存通信机制,这种机制允许两个进程除了 拥有自己的私有内存,还可存取共同的内存区域。 3. 虚拟文件系统与网络接口之间的关系: 虚拟文件系统利用网络接口支持网络文件系统(NFS),也利用内存管理支持RAMDISK 设备。 4. 内存管理与虚拟文件系统之间的关系: 内存管理利用虚拟文件系统支持交换,交换进程定期地由调度程序调度,这也是内 存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向 文件系统发出请求,同时,挂起当前当前正在运行的进程。 在这些子系统中,进程调度子系统是其他子系统得以顺利工作的关键。无论是文件系 统的系统进程还是网络子系统的服务进程都需要通过进程调度来获得相应的CPU时间以正 常运行。

转载请注明原文地址: https://www.6miu.com/read-52891.html

最新回复(0)