进程调度的时机、切换与过程、方式

Posted by JimWang on 2021-02-04

进程调度的时机、切换与过程、方式

进程调度的时机

需要进行进程调度与切换的情况

  1. 当前运行的进程主动放弃处理器
    • 如(1.进程正常终止。2.运行过程中发生异常而终止。3.进程主动请求阻塞(如等待I/O))
  2. 当前运行的进程被动放弃处理器
    • 如(1.分给进程的时间片用完了。2.有更紧急的事要要处理(如I/O中断)。3.有更高优先级的进程加入阻塞队列)

不需要进行进程调度与切换的情况

  1. 在处理中断的过程中,中断的处理过程复杂,与硬件密切相关,很难做到中断处理过程中进行进程切换。
  2. 进程在操作系统内核程序临界区中
  3. 在原子操作过程中,原子操作是不可中断的(比如修改PCB中进程状态标识位)

进程的切换与过程

“狭义的进程调度”:从就绪队列中选一个要运行的进程

进程切换:一个进程让出处理机,由另一个进程占用处理机的过程

广义的进程调度:包含进程的选择和进程切换两个过程

进程切换过程:

  1. 对原来运行的进程的各种数据进行保存
  2. 对新进程各种数据进行恢复

(包括:程序计数器、程序状态字、各种数据寄存器等处理机现场信息,这些信息一般存储在进程控制块PCB中)

注意:进程的切换是有代价的,因此过于频繁的进行进程的调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,真正的执行过程的时间减少。

进程调度的方式

非剥夺调度方式,又称为非抢占式式。即,允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务送达,当前进程依旧会继续拥有处理机,直到进程终止或主动要求进入阻塞态。

实现起来,系统开销比较小但是无法及时处理紧急任务,适合于早起的批处理系统。

剥夺调度方式,又称为抢占式式。即,当一个进程正在处理机上运行的时候,如果有一个更重要更紧急的进程需要使用处理机,则立即暂停正在进行的进程,将处理机分配给更重要的紧迫的进程。

可以实现处理更加紧急的进程,也可以实现让各个进程按时间片轮流执行的功能(通过时钟中断)。适合于分时系统、实时系统。