一.概念
- 在多道程序系统中,进程的数量一般是多于处理机数量的,这样就不可能同时并行的处理各个进程。
- 处理机调度:就是从就绪队列中按照一定的算法选择一个进程并将处理机分配给他运行。
二.调度的三个层次
1.高级调度(作业调度)
- 由于内存空间有限,有时无法将用户提交的作业全部放入内存,因此需要某种规则来决定将作业调入内存的顺序
- 高级调度就是按一定的原则从处于外存的后备队列的作业挑选一个或多个作业,给他们分配内存,并建立相应的进程(建立PCB)
- 高级调度是外存和内存之间的调度
- 每个作业只调入一次,调出一次
- 作业调入时建立PCB,调出时撤销PCB
- 高级调度主要指调入的问题,只有调入的时机需要操作系统决定,调出的时机必然是在作业运行结束之后。
2.中级调度(内存调度)
- 引入了虚拟内存之后,可以将暂时不能运行的进程调至外存等待,等他重新具备了运行条件且内存有空闲时,再重新调入进程
- 暂时调入外存的进程状态是挂起状态
- PCB并不会一起调入外存,而是会留在内存。PCB中存储的是进程状态和进程数据在外存中的位置,操作系统通过内存中的PCB来保持对各个进程的监督和管理
- 被挂起的进程PCB会被放到挂起队列中
- 中级调度就是决定先将哪个挂起的进程重新调入内存
- 一个进程可能要被多次调入调出,因此中级调度发生的频率要比高级进程高
3.低级调度(进程调度)
- 低级调度指从就绪队列中选取一个进程,将处理机分配给它
- 它是操作系统最基本的一种调度
- 进程调度频率很高,一般几十毫秒一次
4.三种调度的比较
三.进程七状态模型
- 暂时调到外存等待的进程状态为挂起状态
- 进一步可以分为就绪挂起和阻塞挂起
- 挂起和阻塞的区别:两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态的进程映像还在内存中。