什么是进程调度?
当计算机系统处于就绪状态的用户进程数多于CPU数时,就会产生多个进程或线程同时竞争CPU的结果。假设现在只有一个CPU可用,那么操作系统就必须选择下一个要运行的进程。完成这种选择工作的这一部分称为调度程序,该程序使用的算法称为调度算法。尽管有一些不同,但许多适用于进程调度的处理方法也同样适用于线程调度。当内核管理线程的时候,调度经常是按线程级别的,与线程所属的进程基本或根本没有关联。
什么时候进行调度?
1、 在创建一个新进程之后,需要决定是运行父进程还是运行子进程。由于这两种进程都处于就绪状态,所以这是一种正常的调度决策,可以任意决定。
2、在一个进程退出时必须做出调度决策。一个进程不再运行,所以必须从就绪进程集中选择另外某个进程。如果没有就绪的进程,通常会运行一个系统提供的空闲进程。
3、当一个进程在阻塞I/O和信号量上或由于其他原因阻塞时,必须选择另一个进程运行。
4、在一个I/O中断发生时,必须做出调度决策。如果中断来自I/O设备,而该设备现在完成了工作,某些阻塞的等待该I/O进程就成为可运行的就绪进程了。是否让新就绪的进程运行,这取决于调度程序的决定 ,或者让中断发生时运行的进程继续运行,或者应该让某个其他进程运行。
进程调度算法?
1、先来先服务调度算法(FCFS)
先来先服务调度算法(FCFS)调度算法是一种最简单的调度算法。在进程调度中采用先来先服务算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使它能够运行。该进程一直运行到完成或发生某件事而阻塞后才放弃处理机。