进程状态及转换

本文详细介绍了进程的多种状态,包括新建、就绪、运行、阻塞、挂起和完成状态,并讨论了状态转换的原因和过程。重点讲解了进程挂起的情况,如系统超载、用户挂起、等待I/O等,以及不同状态间的转换规则,如时间耗尽、阻塞和唤醒等。

进程状态及转换

进程状态

对进程可以执行有很多种状态,可以创建和销毁,也可以更改优先权,进程状态是进程某时某刻所处的模式或条件。进程的状态也决定了将来的事件以及可能进入的状态。
在这里插入图片描述
其中、准备执行的进程处于就绪状态如果某个进程因为等待某个资源或者事件的发送而不能执行,则进入阻塞状态
就绪和阻塞状态是最常见的进程状态之一。
只有位于就绪队列内的进程才有资格使用处理器,获得CPU,会按照一定的序列从队列中挑选出一个进程,并放在处理器上执行,一旦执行,就会进入运行状态
新建和空闲状态是新创建进程的初始状态,当进程处于这种状态时,它就准备执行但是尚不能运行,新进场只能初始化或者准备,当准备一个进程时,他就预备在处理器上执行了,然后进程就处于就绪状态。
当进程完成执行时,它就退出系统。所有进程相关的信息都会被删除,地址空间和资源都会被释放,这就是完成或者终止后的进程状态,终止后的进程可以再次初始化.
在系统中,对于每一个处理器,就有一个进程处于备用状态,备用状态就是就绪状态之后,运行状态之前的所处的状态。其中挂起-就绪和挂起-阻塞是一种非激活的状态
在进程完成执行后,但是在释放之前,会有一种状态叫做僵化状态(zombified state)

进程状态转化

进程状态转换就是改变进程的状态,从一种状态转换为另外一种状态。当进程从就绪进入运行时,进程就发生了状态转换。

1.目的: 自行编制模拟程序,通过形象化的状态显示,深入理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。 2. 内容及要求: 1) 设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。 2) 独立编写、调试程序。进程的数目、进程状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。 3) 合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。 4) 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。 5) 代码书写要规范,要适当地加入注释。 6) 认真进行预习,完成预习报告。 7) 实验完成后,要认真总结,完成实验报告。 3.使用的数据结构及说明: 在本实验中,主要用到的数据结构是PCB的结构,其中PCB的数据结构如下: struct PCB { int P_Id; //PCB的ID号 char P_Name[10]; //PCB的名称 char P_State[10]; //PCB状态 int P_Runtime; //PCB的所需要的运行时间 int P_Requiry; //PCB所需要的资源要求 struct PCB * next ; //PCB块的下一个指针 } ; 其中,P_Id,和P_Name用来标示一个进程,而P_State用来标示进程的五种状态:Create_state,Ready_state,Block_state,Run_state,Exit_state。P_Runtime标示要完成一个进程所需要的时间。P_Requiry标示一个进程的执行所需要的其他条件,当其他的条件满足,则P_Requiry置1,否则置0。Struct PCB * next 用来指向同一队列中的下一个PCB块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值