1、Linux内核主要模块
Linux的内核主要由5个子系统组成:进程调度、进程通信、内存管理、虚拟内存管理、网络接口
2、Linux进程调度策略
进程调度指的是系统对进程的多种状态之间转换的策略。Linux下的进程调度有3种策略:SCHED_OTHER、SCHED_FIFO、SCHED_RR
2.1 SCHED_OTHER
SCHED_OTHER是用于针对普通进程的时间片轮转调度策略。这种策略下,系统给所有的运行状态的进程分配时间片。在当前进程的时间片用完之后,系统从进程中优先级最高的进程中选择进程运行。
2.2 SCHED_FIFO
SCHED_FIFO是针对运行的实时性比较高、运行时间比较短的进程调度策略。这种策略中系统按照进入队列的先后进行进程的调度,在没有更高优先级的进程到来或者当前进程没有因为等待资源而阻塞的情况下,会一直运行。
2.3 SCHED_RR
SCHED_RR是针对实时性比较高,运行时间比较长的进程调度策略。这种策略与SCHED_OTHER策略类似,只不过SCHED_RR策略优先级更高,系统给SCHED_RR进程分配时间片,然后轮循运行这些进程,将时间片用完的进程放到队列的末尾。
三、Linux进程策略
由于存在多种进程调度策略,Linux默认采用“有条件可剥夺”的进程调度方式。普通进程采用SCHED_OTHER的时间片轮循策略,SCHED_FIFO、SCHED_RR的实时进程可剥夺普通进程。如果普通进程在用户空间运行,则普通进程立即停止运行,把资源让给实时进程,如果普通进程运行在内核空间,实时进程需要等待系统调用返回用户空间后方可剥夺资源。