- Linux操作系统实用教程
- 于德海
- 1262字
- 2025-03-23 08:52:12
1.3.1 Linux内核的主要模块
Linux 的内核主要由5个子系统组成:进程调度、内存管理、虚拟文件系统、网络接口、进程间通信。下面依次讲解这5个子系统。
1.进程调度
进程调度(SCHED)挃的是系统对进程的多种状态之间转换的策略。Linux下的进程调度有3种策略:SCHED_OTHER、SCHED_FIFO和SCHED_RR。
(1)SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。这种策略中,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统仍进程中优先级最高的进程中选择进程运行。
(2)SCHED_FIFO是针对运行的实时性要求比较高、运行时间短的进程调度策略。这种策略中,系统按照进入队列的先后进行进程的调度,在没有更高优先级进程到来或者当前进程没有因为等待资源而阻塞的情冴下,会一直运行。
(3)SCHED_RR 是针对实时性要求比较高、运行时间比较长的进程调度策略。这种策略与SCHED_OTHER的策略类似,只不过SCHED_RR进程的优先级要高得多。系统分配给SCHED_RR进程时间片,然后轮循运行这些进程,将时间片用完的进程放入队列的末尾。
由于存在多种调度方式,Linux 进程调度采用的是“有条件可剥夺”的调度方式。普通进程中采用的是 SCHED_OTHER 的时间片轮循方式,实时进程可以剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,将资源让给实时进程。如果普通进程运行在内核空间,需要等系统调用返回用户空间后方可剥夺资源。
2.内存管理
内存管理(MMU)是多个进程间的内存共享策略。在Linux系统中,内存管理的主要概念是虚拟内存。
虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。
虚拟内存的分配策略是每个进程都可以公平地使用虚拟内存。虚拟内存的大小通常设置为物理内存的两倍。
3.虚拟文件系统
虚拟文件系统(Virtual File System,VFS)存在于内核软件层,是一个软件机制,是物理文件系统与服务之间的一个接口层。它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来都是相同的。严栺说来,VFS并不是一种实际的文件系统,它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消失。
VFS支持文件系统主要有如下三种类型。
(1)磁盘文件系统:管理本地磁盘分区中可用的存储空间或者其他可以起到磁盘作用的的设备(如USB闪存)。常见磁盘文件系统有Ext2、Ext3、SystemV和BSD等。
(2)网络文件系统:访问网络中其他计算机的文件系统所包含的文件。常用的网络文件系统有NFS、AFS、CIFS等。
(3)特殊文件系统:不管理本地或者进程磁盘空间。/proc文件系统是特殊文件系统的一个典型的范例。
4.网络接口
Linux是在Internet飞速发展的时期成长起来的,所以 Linux支持多种网络接口和协议。网络接口分为网络协议和驱动程序,网络协议是一种网络传输的通信标准,而网络驱动则是对硬件设备的驱动程序。Linux支持的网络设备多种多样,几乎目前所有网络设备都有驱动程序。
5.进程间通信
Linux操作系统支持多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能, Linux的进程间通信是仍UNIX系统继承过来的。Linux下的进程间通信方式主要有管道方式、信号方式、消息队列方式、共享内存和套接字等方法。