资料来源
这是本人在操作系统期中考试前复习是碰到的问题,花了一些时间解决,现在记录下来。
引
在学习 CPU 调度的时候,关于抢占式、非抢占式调度方式有不理解的地方,想不到google一下就出来了很好的解释,看来还是要多搜索多思考。
教材关于抢占调度的介绍
CPU 调度决策可以在如下四种环境下发生:
- 当一个进程从运行状态切换到等待状态(例如,I/O请求,或者调用 wait 等待一个子进程的终止)
- 当一个进程从运行状态切换到就绪状态(例如当出现中断时)
- 当一个进程从等待状态切换到就绪状态(例如 I/O 完成)
- 当一个进程终止时
对于第1和第4两种情况,没有选择只有调度。一个新进程(如果就绪队列中已有一个进程存在)必须被选择执行。不过,对于2和3两种情况,可以进行选择。
当调度只能发生在1和4两种情况时,称调度方案是非抢占的或者协作的,否则称调度方案是抢占的。采用非抢占进程…
为什么 2 和 3 是抢占式的呢?一开始很不理解,这种情况有什么特殊之处。
google的介绍
抢占式调度(Preemptive Scheduling)是一种CPU调度技术,它通过将CPU的时隙划分给给定的进程来工作。给定的时间间隔可能能够完成整个过程,也可能无法完成。当进程的区间时间(burst time)大于CPU周期时,它将被放回到就绪队列(ready queue)中,并在下一个时机(chance)执行。当进程切换到就绪状态时,会使用这种调度方式。
抢占式调度支持的算法有循环调度(RR)、优先级(priority)调度、SRTF(剩余时间最短优先,shortest remaining time first)。
非抢占调度(Non-preemptive Scheduling)是一种CPU调度技术,进程获取资源(CPU时间)并持有它,直到进程终止或推送到等待状态。进程不会被中断,直到它完成,然后处理器切换到另一个进程。
基于非抢占式调度的算法具有非抢占式优先(non-preemptive priority)以及最短作业优先级(shortest Job first)。
总结
现在应该可以理解为什么2 3 是抢占式调度了,2 3 的进程之所以发生切换到就绪的状态变化,就是因为其执行被中途打断了,执行其他的进程,这就是抢占的思维。
希望对有类似问题的同学有帮助。