Linux 内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。
内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。
文件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并与其他操作系统兼容的多种文件系统格式。
进程间通信子系统用于支持多种进程间的信息交换方式。在 Linux 中,进程间通信可以通过多种方式进行,如管道,消息队列,共享内存,信号量等等。这些通信机制可以根据具体的需求和场景进行选择。例如,如果你需要高效地传输大量数据并且进程之间有足够的信任,那么共享内存可能是最佳选择。如果需要处理简单的同步问题,信号量或者信号可能就足够了。
网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。
这几个模块之间的依赖关系见图所示:
其中的连线代表它们之间的依赖关系,虚线和虚框部分表示Linux 1.11中还未实现的部分(从Linux 0.95版才开始逐步实现虚拟文件系统,而网络接口的支持到0.96版才有)。
由图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,在操作完成后才可继续运行。例如,当一个进程试图将一数据块写到软盘上去时,软盘驱动程序就可能在启动软盘旋转期间将该进程置为挂起等待状态,而在软盘进入到正常转速后再使得该进程能继续运行。另外3个模块也是由于类似的原因而与进程调度模块存在依赖关系。
其他几个模块的依赖关系有些不太明显,但同样也很重要。进程调度子系统需要使用内存管理来调整一特定进程所使用的物理内存空间。进程间通信子系统则需要依靠内存管理器来支持共享内存通信机制。这种通信机制允许两个进程访问内存的同一个区域以进行进程间信息的交换。虚拟文件系统也会使用网络接口来支持网络文件系统(NFS),同样也能使用内存管理子系统提供内存虚拟盘(ramdisk)设备。而内存管理子系统也会使用文件系统来支持内存数据块的交换操作。
标签:内核,文件系统,调度,内存,模块,Linux,进程,体系结构 From: https://blog.csdn.net/qq_45355365/article/details/140882484