Linux 进程,线程的调度策略API

LINUX进程调度: 调度策略: 实时进程的调度策略: SCHED_FIFO SCHED_RR SCHED_DEADLINE 普通进程的调度策略: SCHED_NORMAL SCHED_BATCH SCHED_IDLE 调度类: stop_sched_class dl_sched_class rt_sched_class fair_sched_class idle_sched_class CFS调度策略: 普通进程使用的调度策略CFS调度策略,通过平衡各个进程vruntime来实现公平的调度, CFS维护了一个以时间为顺序的红黑树, 对处理器需求时间最多的,vruntime最小的存放在树的最左端. CPU取出运行完毕后,如果进程还在运行,增加运行时间计算vruntime后插会红黑树。 CFS相关结构: cfs_rq队列中存放树根节点和最左端节点rb_root_cached,每个节点都包含在 sched_entity,中,sched_entity中存放vruntime做为红黑树的索引, sched_entity 又属于 task_struct, task_struct 中通过 sched_class 指定调度类 具体可以参考是极客时间 《趣谈操作系统》 15-17节 LINUX进程调度API: sched - overview of CPU scheduling nice(2) 设置当前进程线程的优先级 getpriority(2) 获取指定用户的进程,进程组,线程优先级 setpriority(2) 设置指定用户的进程,进程组,线程优先级 sched_setscheduler(2) 设置调度策略 sched_getscheduler(2) 获取调度策略 sched_setparam(2) 设置调度参数. sched_getparam(2) 获取调度参数. sched_get_priority_max(2) 返回指定调度策略的优先级最大值 sched_get_priority_min(2) 返回指定调度策略的优先级最小值 sched_rr_get_interval(2) 获取SCHED_RR调度策略时间片长度 sched_yield(2) 主动让出CPU sched_setaffinity(2) (Linux-specific) 线程设置到指定CPU sched_getaffinity(2) (Linux-specific) 获取相关CPU设置 sched_setattr(2) 设置调度策略和参数 sched_getattr(2) 获取调度策略和参数 Posix Threads API : ...

2019-07-16 · 6 min · 1127 words