23-处理器调度 (xv6 上下文切换;处理器调度:机制和策略)
23-处理器调度 (xv6 上下文切换;处理器调度:机制和策略)
由用户态,执行syscall
跳转到内核态代码,寄存器保存,切换页表和栈
调度策略
1 | taskset -c 3 nice -n 19 yes > /dev/null & taskset -c 3 nice -n 9 yes > /dev/null |
nice值相差10,占用cpu时间相差1倍
上下文切换是机制,策略是选择哪个进程执行
动态优先级,CPU密集型的优先级逐渐降低,交互型的优先级逐渐增加
动态优先级实现的虚拟时间是什么原理,为什么“好人”和“坏人”会相差几倍
进程的nice值越小(优先级越高),权重越大,在实际运行时间相同的情况下,虚拟运行时间越短,进程累计的虚拟运行时间增加得越慢,在红黑树中向右移动的速度越慢,被调度器选中的机会越大,被分配的运行时间相对越多。随着优先级高进程的虚拟运行时间增长,低优先级的进程也会有机会被调度
1 | /* |
Linux CFS调度器 vruntime 的计算_linux vruntime-CSDN博客
CFS,完全公平调度,记录每个进程运行时间,每次都切换到运行时间最少的进程。
红黑树