计算机操作系统-进程(2)进程的状态与转换

  • 进程的状态与转换

 

进程的状态

进程是程序的一次执行。在执行的过程中,有时进程正在被CPU处理,有时有需要等待CPU服务,可见进程的状态是会有各种变化的,所以为了方便操作系统对进程的管理,操作系统需要将进程合理地划分为几种状态

 

三种基本状态

  • 运行态Running:

占有CPU,并在CPU上运行。注意,这些状态的描述都是放在时刻这样的时间尺度上看的。所以一个CPU的情况下,在一个时刻下只能有一个进程处于运行态

  • 就绪态Ready:

已具备运行的条件,即拥有除处理机外所有需要的资源,但是没有空闲的CPU而暂时无法运行。一旦获得处理机,即可立即进入运行态开始运行

  • 阻塞态Waiting/Blocked:

因等待某一事件而暂时无法运行。例如等待操作系统分配打印机等等。CPU是最宝贵的部件,为了提高CPU的利用率,需要先将进程所需要的其他资源分配到位,才能得到CPU的服务。可知就绪态和阻塞态是有区别的。阻塞态是缺少了CPU以及其他的资源,给他CPU资源也无法马上运行,而就绪态是仅仅缺少了CPU资源。例如当进程处于运行态的过程中,需要用系统调度的方式申请某种系统资源,或者请求等待某个事件的发生,此时需要交出CPU的使用权,同时要等待其他的资源,这时就是出于阻塞态。

 

进程状态的转化

注意:

  1. 运行态到阻塞态是一种进程自身做出的主动行为,而阻塞态到运行态表示所需要的资源被分配好了,这一过程不是进程自身能控制的,所以这是一种被动的行为。
  2. 进程不能够由阻塞态直接转化为运行态,因为必须要在其他资源分配完成后才能分配CPU资源,可知这个先后过程必然要经历就绪态。以及,也不能由就绪态直接转化为阻塞态。因为进程转化到阻塞态是一种进程主动的行为,而只有当进程处于运行态时,他才有资格能主动。

 

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

如何实现进程的控制

实质上就是在进程的各个状态之间完成转换。需要完成的操作有将不同的PCB放入应该处在的状态的队列或者索引之下以及修改PCB的内容以表示出这个PCB所处的状态、需要保持或者恢复进程运行环境、回收分配进程拥有的资源等等

可知这样会遇到一个问题, 由于PCB本身有表示此进程处于状态的能力,同时由根据PCB所处于的表示进程状态的队列也可以获取PCB对应进程所处的状态,所以如果PCB中表示进程所处的状态和该PCB所处的表示不同进程状态的队列说表示的进程状态不一致,这就会使系统产生错误

所以为了解决此问题,使用原语来实现进程控制。

原语

特点具有原子性,即在执行期间不允许中断,只能一次性执行完。这种操作称为原子操作。原语通过“关中断”和“开中断”指令来实现,即在执行原语的头尾处分别加上“关中断”指令和“开中断”指令来控制中断的开启以防止在指令执行期间被中断。所以将PCB在进程状态列表中的转移和PCB本身进程状态标志的设置这两个操作放在原语中进行,这样不会被中断,这两个地方的状态就会保持一致

很显然,“开中断”和“关中断”指令都是只能在核心态下执行的特权指令

进程控制相关的原语

进程控制会导致进程状态的转换。无论哪个原语,要做的都是三件事情

1.更新PCB中的信息,例如修改进程状态标志、将运行环境保存到PCB、从PCB中恢复运行环境等等

          a.所有的进程控制原语都一定会修改进程状态标志

          b.剥夺当前运行的进程的CPU使用权必然要保存其运行环境

          c.某进程开始运行前必然要恢复其运行环境

2.将PCB插入合适队列

3.分配/回收资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值