Linux进程时间片的分配(调度策略和参数)

时间:2021-02-09 21:12:55

在多进程系统中,多个进程“同时”运行,这里并不是真正意义上的同时运行,而是多个进程在时间片上面交换运行(每个进程运行一个时间片,然后切换到下一个时间片运行)。

1.调度策略和参数

在Linux系统中,对于每个进程,需要设定一个相应的调度策略和参数,在系统中,处理多进程的方式为“抢占”式的(一个进程使用CPU直至系统抢占CPU给另一个进程使用)

设定和获取进程的调度策略和参数调用如下函数:

#incldude<sched.h>

int sched_setscheduler(pid_t pid,int policy,const struct sched_param *param);

int sched_getscheduler(pid_t pid);

sched_setscheduler 设置进程调度策略和参数

sched_getscheduler 获取进程调度策略和参数

pid 设置的进程ID

policy 所设置的调度策略

SCHED_OTHER 默认的调度策略,按通常方法分配时间片

SCHED_FIFO 对应于先进先出的规则,实时分配时间片

SCHED_RR 轮换规则,实时分配时间片,也可以抢占使用SCHED_OTHER的进程

param 是sched_param的指针,用于保存进程的调度参数

sched_setscheduler调用成功时,返回值为0;失败时,返回值为-1;

sched_getscheduler调用成功时,返回值为一个非负数;失败时,返回值为-1;