一、多任务以及策略
二、Linux调度算法
三、Linux调度的实现
- 时间记账:
2、进程选择:
3、调度器入口
4、睡眠和唤醒
四、抢占和上下文切换
用户抢占(调用schedule函数,选择运行新的进程):
内核抢占(调用schedule函数,选择运行新的进程):
疑问:
疑问:内核调度程序也是一个进程,在单核处理器时代,其他进程执行的时候,他应该是不在运行的,那怎么去调度其他进程呢?
推测:操作系统在以上这几个时机设置了锚点,在以上这几个时机时,调度函数被调用,系统会选择一个优先级最高的进程进行运行。这时,当前运行的进程会被抢占,执行其他的进程。
五、实时调度策略
上面描述的一直都是普通进程的调度策略,实时调度策略管理的一般都是内核进程。
其中,SCHED_FIFO和SCHED_RR调度策略是给实时进程使用的,而SCHED_NORMAL调度策略是给普通进程使用的,通过nice值进行设置。