Linux调度策略下的进程队列研究(Linux进程队列)
进程是智能操作系统的一个重要组成部分,而调度算法是决定在操作系统上运行进程优先级的一个重要因素。Linux操作系统的进程调度策略是一种先来先服务(FCFS)的调度策略,其主要目的是保证每个进程公平的调度,并保证每个进程都能得到有序的分配处理器时间。
Linux使用一种进程队列调度策略来处理进程。这种调度mechanism可以将所有进程放入一个双向循环链表中,每次调度器都将从该链表的头部开始调度,按照调度mechanism每次选择一个进程执行。
处于进程队列中的每个进程都有一个优先级,Linux有四种优先级,即IDLE、NORMAL、RT的优先级,其中前两者为普通优先级,后两者为实时优先级。IDLE优先级的进程由内核触发,保证系统处于低空闲状态,不受正常用户进程的影响;NORMAL优先级普通进程,RT优先级用于处理实时系统任务;后两者可根据需求调整优先级。
内核提供了函数sched_setscheduler()供用户设置进程优先级,具体格式如下:
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *param);
其中pid代表进程id,policy代表调度算法,param代表优先级等参数。
若要设置一个进程的优先级,代码如下:
// 设置优先级
struct sched_param param;
param.sched_priority = 20;
sched_setscheduler(pid, SCHED_FIFO, ¶m);
Linux系统中有多个进程队列,这些队列的每个进程都有对应的优先级,Linux按照实时和普通进程的顺序将这些进程分配给调度器,进而实现智能分配处理器时间片。以上就是Linux调度策略下的进程队列研究。