OS

进程状态及进程控制

2019-07-22  本文已影响0人  HRADPX

1 进程的状态

  运行态(Running):占有CPU,并在CPU上运行。
  就绪态(Ready):具有运行条件,但是不占有CPU。是万事俱备,只欠CPU。
  阻塞态(Waiting/Blocked):因等待某一时间暂时不能运行。
  终止态(Terminated):进程运行结束或者因异常而无法继续运行,需要撤销进程,操作系统需要完成撤销进程的相关操作,如将分配给进程的资源回收,撤销进程的PCB等。
  创建态(New):进程正在被创建,操作系统为进程分配资源、始化PCB。
  其中,运行态、就绪态和阻塞态称为进程基本状态。

2 进程状态的转换

3 进程控制

  3.1 进程控制的过程

  进程控制就是进程状态的转换。
  进程的组织中提到,操作系统会将处于不同状态的进程的PCB放在不同的状态的队列中来管理PCB。

创建进程:操作系统初始化PCB,并分配系统资源,当上述工作完成后,会把进程的PCB放入到就绪队列中,实现了从创建态到就绪态的转换。
就绪态转换为运行态:如果一个进程被CPU调度,那么操作系统会恢复进程运行的环境(由于进程之前可能运行过,但还没有运行完,所以再次运行时需要将进程恢复到上次中断时的状态继续运行)、修改PCB的内容(将PCB中的状态标志位从就绪态改为运行态等)和将PCB从就绪队列中取出来,那么该进程就可以被处里。进程就由就绪态转换为运行态
运行态转换为阻塞态:当一个进程在执行过程中,使用系统调用的方式发送了等待某个事件的请求,那么就需要将进程当前运行的环境保存,修改PCB的内容(将PCB状态标志位从运行态改为阻塞态),再将进程的PCB放入到相应事件的阻塞队列中。
阻塞态转换为就绪态:需要修改PCB的内容,并且将进程的PCB放入到就绪队列中,如果等待的是资源,则还需要为进程分配系统资源。
运行态到就绪态:当一个进程的CPU时间片耗尽或者CPU被抢占,需要进程切换,同样需要保存进程的运行环境、修改PCB的内容并将进程的PCB放入到就绪队列中。
运行态转换为终止态:当进程完成或者异常结束,需要回收进程拥有的资源,同时还要撤销PCB。

  如果在进程转换时,某个进程将其PCB从一个队列放入到另一个队列,但是却没有修改状态标志位,那么就极有可能导致系统错误,为了防止出现这种问题,进程控制就使用原语实现。

  3.2 进程控制的实现

  进程控制实现:进程控制是用原语实现的。原语的特点是具有原子性,即执行期间不允许中断。
  原语采用“关中断指令和开中断指令实现。

  当原语相关的代码执行前,会先执行关中断指令,在原语代码执行期间,外部中断指令进入,这个外部中断指令会被忽略,暂时不会处理,所以原语代码不会被中断。在执行了开中断指令后,在接收到外部中断指令后,才能对中断进程处理。
  关/开中断是权限非常大,是只允许在核心态下执行的特权指令。

  3.2 进程控制的相关的原语

  首先,一个原语需要的工作有:

  (1) 更新PCB中的信息(如修改进程的状态标志位、将进程的环境保存到PCB、从PCB回复运行环境)。
  (2) 将PCB插入到合适的队列。
  (3) 分配/回收资源。

  操作系统提供的进程控制的原语:创建原语、撤销原语、阻塞/唤醒原语、切换原语。



  阻塞原语和唤醒原语要成对出现,因何事阻塞,就应由何事唤醒。

4 小结

  (1) 进程的控制就是要实现进程状态的转换。
  (2) 进程控制用原语实现,原语用关/开中断指令来实现。
  (3) 与进程控制相关的原语:进程的创建、进程的终止、进程的阻塞、进程的唤醒和进程的切换。

本文完


  如发现错误,请指正!!!

上一篇下一篇

猜你喜欢

热点阅读