为什么要调度
现在都是做事情做任务的个数要远远多于计算机中处理机的个数,处理机就要合理分配资源给目标,这样才能做到办事效率最大化。
否则就是等一个进程执行完,下一个进程才能执行。而在执行的过程中,会需要一些外设输入或等待其他资源,这个过程是很花费时间的,把这些时间利用起来,去执行其他的进程,这样处理机的利用率就会大大增加。
从层次上来看:
- 对作业的调度(高级调度):对后备状态的作业分配资源。发生频率底
- 对内存的调度(中级调度):将不运行或不能运行的进程调出内存。发生频率中等。
- 对进程的调度(低级调度):对就绪队列中的进程分配处理机资源。发生频率高。
不能进行调度的情况:
(先标记上请求调度的标志,以下情况完成后了回来再进行调度。)
-
在处理中断的过程中。
中断处理的过程很复杂,在实现上很难做到进程的调度或切换。
-
进程在操作系统的内核程序里的临界区中。
进入到临界区前,理论上要加锁的,在解锁前,处理机不应该切换到其他进程运行。
-
在原子操作过程中。
在原子操作过程中,连中断都要屏蔽,更不要说进程的调用或切换了。