您的位置:首页 > 其它

第二章进程管理-进程状态

2018-03-18 00:13 281 查看

进程的基本概念

进程的顺序执行特征:顺序性、封闭性、可再现性
前趋图:是一个有项的无循环图DAG,描述进程之间执行的前后关系,每个节点可用于描述一个程序或进程,结点间的有向边则用于表示两个结点之间存在的偏序,图中必须不存在循环

程序并发执行的特征:间断性、失去封闭性、不可再现性

进程特征
结构特征:为使程序并发执行,配置一进程控制块,PCB(process Control Block) 由程序段、相关的程序段和pcb三部分组成。
动态性:进程的实质是进程实体的一次执行过程,由创建而产生,调度而执行,撤销而消亡。
并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。
独立性:进程实体是一个独立运行、独立分配资源和独立接受调度的基本单位,没有PCB的程序都不能作为一个独立的单位参与运行。
异步性:进程按各自独立的、不可预知的速度向前推进,
            1、进程是程序的一次执行

            2、进程是一个程序及其数据在处理机上顺序执行时发送的活动

            3、进程是程序在一个数据集合上运行的过程,是系统进程资源分配和调度的一个独立单位

进程的三种基本状态

    1、就绪状态:进程已分配到除cpu意外的所有必要资源,只需要获得cpu就可以执行

    2、执行状态:进程已经获得cpu

    3、阻塞状态:正在执行的进程由于发送某事件无法继续执行,便放弃处理机而处于暂停状态,就是进程的执行受到阻塞,典型的事件有请求I/O、申请缓冲空间等,分配了处理机之后,该进程便可执行由就绪状态转变为执行状态



挂起状态的原因:终端用户的请求、父进程请求、负荷调节的需要、操作系统的需要
挂起状态又称为禁止状态,非挂起状态又称为活动状态
活动就绪➡️静止就绪:未被挂机的就绪状态,称为活动就绪状态Readya,挂起原语Suspend挂机该进程后,进程便转为静止就绪状态Readys,该进程不会再被调度执行
静止就绪➡️活动就绪
活动阻塞➡️静止阻塞 、静止阻塞➡️活动阻塞



创建状态
1、为一个新进程创建PCB、填写必要的管理信息
2、把该进程转入就绪状态,插入到就绪队列中
3、进程所必须的资源尚未全部分配,此时的进程已经拥有自己的PCB,但进程还未进入主存,即创建工作尚未完成,进程还不能被调度,所处的状态就是创建状态
4、PCB初始化工作完成后,进程状态便可由创建状态转入就绪状态
终止状态:等待操作系统进行善后处理,然后将PCB清零,将PCB空间返还系统





进程控制块
是操作系统中最重要的记录型数据结构,PCB常驻内存
1、进程标识符:唯一的标识一个进程,内部标识符和外部标识符
2、处理机状态:由处理机的各种寄存器中的内容组成,通用寄存器、指令计数器、程序状态字PSW、用户栈指针
3、进程调度信息:进程状态、进程优先级、事件
4、进程控制信息:程序和数据的地址、进程同步和通信机制、资源清单、链接指针

进程控制块的组织方式:链接方式、索引方式

进程控制

原语Primitive   由若干条指令组成,用于完成一定功能的一个过程,原子操作,指一个操作中的所有动作要么全做,要么不做,是一个不可分割的基本单位

进程的创建
进程图:描述一个进程的家族关系的有向树
引起进程创建的事件:用户登陆、作业调度、提供服务、应用请求

进程的创建过程

1、申请空白PCB
2、为新进程分配资源
3、初始化进程控制块
4、将新进程插入就绪队列

进程的终止

引起进程终止的事件:
正常结束、
异常结束:越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、io故障
外界干预:操作员或操作系统干预、父进程请求、父进程终止

进程的终止过程

1、根据被终止进程的标识符,从PCB集合中检索的PCB,读取该进程的状态
2、将终止进程正处于执行状态,应立即终止该进程的执行,置调度标志为真
3、如果有子孙进程,将所有的子孙进程予以终止,以防成为不可控的进程
4、将终止进程的资源,归还父进程或系统
5、将被终止进程PCB从所在队列或链表中移除

引起进程的阻塞与唤醒的事件
1、请求系统服务
2、启动某种操作
3、新数据尚未到达
4、无新工作可做

进程阻塞过程
进程通过调用组设原语block把自己阻塞,阻塞是一种主动行为。进入block过程后,停止进程执行,修改进程控制块中的状态,将PCB插入阻塞队列。

进程唤醒过程
当阻塞进程所期待的事件出现时,调用唤醒原语wakeup(),将等待改事件的进程唤醒。
执行过程:
首先把被阻塞的进程从等待该事件的阻塞队列中移除,
修改PCB中的现行状态由阻塞改为就绪
将该PCB插入到就绪队列

进程的挂起
出现引起进程挂起的事件时,系统将利用挂起源于suspend()将指定进程或处于阻塞状态的进程挂起
挂起过程:
检查被挂进程的状态,处于活动就绪状态改为静止就绪,,活动阻塞的改为静止阻塞,
把该进程的PCB复制到知道的内存区域,
若被挂起的进程正在执行,则转向调度程序重新调度

进程的激活过程
当激活事件发生时,
内存由足够的空间时
系统将利用激活原语active()将指定进程激活
激活原语先将进程从外存调入内存,
检查该进程的现行状态,若是静止就绪改为活动就绪,静止阻塞改为活动阻塞,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: