1. 处理机调度的概念、层次
调度:处理机调度,就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程的并发执行。
三层调度
【高级调度】(作业调度)
按照一定的原则从外存上处于后备队列的作业中挑出一个(或多个),给他们分配内存等必要资源,并建立相关的进程(建立PCB),以使得他们获得竞争处理机的权利。
高级调度主要是指调入到内存的问题,每个作业只调入一次,调出一次。因为只有调入的时机需要OS确定,调出的时机必然是作业运行结束才调出。
【中级调度】(内存调度)
暂时调到外存等待的进程状态为挂起状态,相应的PCB会被放到挂起队列中。
中级调度(内存调度)就是要决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此,中级调度发生的频率要比高级调度更高。
【低级调度】(进程调度)
低级调度就是要按照某种方法和策略从就绪队列中选择一个进程,将处理机分配给它。
进程调度是OS中最基本的一种调度,进程调度的频率很高,一般几十毫秒一次。
小结
2. 引入了挂起状态后的进程七状态模型
3. 进程调度(低级调度)的相关
时机
并不是所有的时刻都允许进程调度,有些不允许被打断的任务在执行时,就不允许进程调度,比如中断服务程序执行时、原子操作过程、进程在操作系统内核程序临界区中。
切换与过程
“狭义的进程调度”与“进程切换”的区别:
侠义的进程调度就单单指的是从就绪队列中选择一个要占用处理机的进程(这个进程可能是刚刚被暂停执行的进程,也可能是另外一个进程,如果是另外一个进程,就需要进程切换)、
广义的进程调度包含了选择一个进程和进程切换两个步骤。
进程切换的过程主要完成了:
- 对原来运行进程的各种数据和状态的保存。
- 对新的进程各种数据的恢复。
综上,进程切换是有代价的,如果频繁的进行进程调度、切换,必然会使整个系统的效率降低。会使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。
方式
- 非剥夺式,又称非抢占式
只允许进程主动放弃处理机。在运行过程中即使有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或者主动进入阻塞状态。
- 剥夺式,又称抢占式
一个进程正在使用处理机时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进行,将处理机分配给更紧迫的那个进程。
4. 进程调度算法
先来先服务、短作业优先、高响应比优先三种算法不关心响应时间,也不区分任务的紧急程度,适用于早期的批处理系统。