进程调度:如何分配CPU。(自行回顾进程调度状态图的三模态、五模态)
1.引起进程调度的时机
1)现运行进程运行结束或者因任务完成而正常结束,或者因出现错误而异常结束。
2)现运行进程因某种原因,比如I/O请求,从运行进出入阻塞状态。
3)现运行进程执行某种原语操作,如P操作、阻塞原语等,进入阻塞状态。
4)一个具有更高优先级的进程要求使用处理机,即进入就绪队列(这与调度方式有关)。
5)分配给该进程运行的时间片已用完(这与系统类型有关,多用于分时系统中)。
2.调度方法分为可剥夺和不可剥夺两种。即当有更高优先级的进程到来时,是否可以将正在运行进程的CPU分配给高优先级的进程,可以则为可剥夺,否则为不可剥夺的。
在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。
高级调度:又称长调度或作业调度。它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。系统中一个作业只需经过一次高级调度。
中级调度:又称短程调度或对换调度。它决定处于交换区中的就绪进程哪个可以调入内存,以便直接参与对CPU的竞争。在内存资源紧张时,为了将进程调入内存,必须将内存中处于阻塞状态的进程调出交换区,以便为调入进程腾出空间。
低级调度:又称短程调度或进程调度。它决定处于内存中的就绪进程中的哪个可以占用CPU。最活跃、最重要的调度程序,对系统影响也是最大的。
3.进程调度算法的选择
先来先服务 (first come first served)
在所有调度算法中,最简单的是非抢占式的FCFS算法。
算法原理:进程按照它们请求CPU的顺序使用CPU.就像你买东西去排队,谁第一个排,谁就先被执行,在它执行的过程中,不会中断它。当其他人也想进入内存被执行,就要排队等着,如果在执行过程中出现一些事,他现在不想排队了,下一个排队的就补上。此时如果他又想排队了,只能站到队尾去。
算法优点:易于理解且实现简单,只需要一个队列(FIFO),且相当公平
算法缺点:比较有利于长进程,而不利于短进程,有利于CPU 繁忙的进程,而不利于I/O