进程的调度算法有哪些?
- 先来先服务调度算法: 按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为可能出现短作业一直等待前面的长作业执行完毕才执行的问题。(非抢占式的调度算法)
- 短作业优先调度算法: 按估计运行时间最短的顺序进行调度。如果一直有短作业到来,那么长作业可能永远得不到调度。(非抢占式的调度算法)
- 最短剩余时间优先调度算法: 按剩余运行时间的顺序进行调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。
- 优先级调度算法: 为每个进程分配一个优先级,按优先级进行调度。
- 时间片轮转调度算法: 将所有就绪进程按先来先服务的原则排成一个队列,每次调度时,把 CPU 时间片分给队首的进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程,并将它送到队列的末尾,同时继续把 CPU 时间片分给队首的进程。时间片轮转算法的效率和时间片的大小有关,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。如果时间片过大,实时性就得不到保证。
什么是抢占式调度?什么是非抢占式调度?
-
抢占式就是说操作系统将正在运行的进程强行暂停,由调度器将CPU分配给其他就绪进程。
-
非抢占式是调度器一旦把处理机分配给某进程后便让它一直运行下去,直到进程完成或发生进程调度进程调度某事件而阻塞时,才把处理机分配给另一个进程。