【操作系统】进程的状态及转换


1. 什么是进程

关于什么是进程,至今为止对这一概念都还没有一个非常确切的、令人满意的、统一的定义。不同的人根据不同的角度对进程进行了不同的描述,下面是历史上出现过较有影响的关于进程的定义:

  • 行为的规则称为程序,程序在CPU上执行时的活动称为进程(E.W.Dijkstra)
  • 一个进程时一系列逐一执行的操作,而操作的确切含义则有赖于以何种详尽程度来描述进程(Per Brinch Hansen)
  • 进程是这样的计算部分,它可以与别的进程并发执行(S.E.Madnick和J.T.Donovan)
  • 进程是一个独立的可以调度的活动(E.Cohen和D.Jofferson)
  • 进程是一个抽象实体,当它执行某一个任务时,将要分配和释放各种资源(P.Denning)
  • 顺序进程是一个程序与其数据集一起顺序通过CPU的执行所发生的活动(Alan C.Shaw)

在1978年,我国操作系统方面的研究人员在庐山召开的全国操作系统学术会议上对进程给出了定义:进程是一个可并发执行的、具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和调度的基本单位。虽然每个定义的侧重点不同,但都是正确的,都强调进程是一个动态的执行过程这一概念。

进程实体=程序段+相关数据段+PCB

1.1 进程的特征

  • 动态性
    进程的实质是程序的一次执行,因此进程是动态的。
  • 并发性
    多个进程实体在一段时间内能够并发执行。
  • 独立性
    每一个进程都是一个独立运行的基本单位,也是系统进行资源分配和调度的基本单位。
  • 异步性
    各个进程按各自独立的、不可预知的速度向前推进,任何时刻只能有一个进程占用CPU,获得资源的进程得以执行,没有获得资源的进程暂停执行。因此有执行 - 暂停 - 执行这种间断性活动规律。
  • 结构性
    每一个进程都由程序段、数据段和PCB这三个部分组成。

1.2 进程与程序的区别

1、程序是指令的有序集合,是一个静态的概念;而进程是程序在CPU上的一次执行过程,是动态的。
2、程序作为软件资源可以长期保存,而进程有生命周期,因创建而诞生,因调度而执行,因得不到资源而暂停执行,因撤销而消亡。
3、进程是一个独立运行的基本单位,也是系统进行资源分配和调度的基本单位,而程序作为静态文本既不运行也不分配和调度。
4、进程与程序之间无一一对应关系。进程是程序的一次执行,而程序的执行可以产生多个进程,不同的进程可以包含同一个程序。
5、程序是记录在介质上指令的有序集合,而进程由程序段、数据段和PCB这三个部分组成。

2. 进程的状态及转换

进程的状态及转换有两状态进程模型、三状态进程模型和无状态模型等三种模型,接下来仔细讲解这三种模型。

2.1 两状态进程模型

在这里插入图片描述
在这里插入图片描述
在两状态进程模型中,进程要么正在执行,要么不执行,所有进程有两种状态:运行(Running)非运行(Not-running)。当系统产生一个进程后,该进程会被加载进程队列中。每隔一段时间,正在运行的进程就会被中断运行,此时分派程序就会选择一个新的进程投入运行。这种模型是先天缺陷的。在等待执行的队列中,进程有两种状态,一个是其他资源都满足了,只缺少CPU的资源,而另外一种除了缺少CPU资源外还缺少其他资源,如I/O的完成,这样就会导致有些资源占用CPU但缺少其他资源而无法执行,会导致资源的浪费。

2.2 三状态进程模型

在这里插入图片描述
在两状态进程模型中,将非运行状态分为就绪状态和阻塞状态,这样就得到了三状态进程模型。三状态进程模型中具有三种基本状态:运行态阻塞态(等待态)就绪态

  • 运行态:即进程正在运行,这时的进程除了获得CPU之外还获得其他资源。 就绪态:
  • 即进程正在等待运行,这时的进程除了没有获得CPU之外,其他资源都获取了。
  • 阻塞态:即进程发生阻塞,这时的进程不管CPU是否获得,但其他资源没有获得。

在运行状态中的进程如果因为时间片到但没有缺少其他资源,则该进程会转为就绪状态,将该进程插入就绪队列的队尾,然后从就绪队列中取出一个新进程运行,这时新进程状态由就绪态转变为运行态;如果运行状态中的进程因为缺少某一资源时,这时的进程将停止运行,状态由运行态转为阻塞态,并将该进程加入阻塞队列的队尾,然后从就绪队列取出新进程运行。阻塞队列中的进程如果获取除了CPU之外的其它资源,那么该进程状态由阻塞态转为就绪态,并且将该进程加入到就绪队列的队尾。同理,就绪队列中的进程如果缺少其他资源也会转为阻塞态,等待其他资源的分配。

2.3 五状态进程模型

在这里插入图片描述
在三状态进程模型的基础上,增加了创建态终止态。这两个状态是进程的创建和进程的终止。当创建进程的初始化工作完成后,该进程状态由创建态转为就绪状态,并将其插入就绪队列中。当运行的进程运行结束或取消,进程的状态由运行状态转为终止状态。

2.4进程的挂起

上面讲了进程转换的三种模型,在这些模型中新建的进程一个被系统接纳就会存在内存当中,知道被终止。这时就会遇到两个新问题:1、随着进程数量的不断增多,系统内存资源就会变得越来越紧张;2、由于CPU的速度远高于I/O速度,这使得内存中经常出现大部分进程都在等待I/O操作而造成CPU空闲的现象。这时就引入的进程的挂起和解除挂起。
在这里插入图片描述
在这种状态模型下比三状态模型多了6种转换关系:

  • 活动阻塞态→静止阻塞态
    由两种情况会发生这种挂起变化。1、若当前不存在活动就绪进程,则至少需要一个活动阻塞进程由内存对换至外存成为静止阻塞进程,以腾出空间从外存调入静止就绪进程使其称为活动就绪进程。2、操作系统根据当前的资源状态和新跟那个要求决定。
  • 静止阻塞态→活动阻塞态
    当系统已经得知导致该进程阻塞的事件即将结束和内存有很大的空闲的空间时,则会从外存调入静止阻塞态使其称为活动阻塞态。
  • 静止阻塞态→静止就绪态
    静止阻塞进程所需的资源得到满足或等待的事件已经完成。
  • 静止就绪态→活动就绪态
    有三种情况会发生种情况:1、外存的静止就绪进程具有比内存中的活动就绪进程更高的优先级。2、内存出现一大块空闲空间。3、当前内存中没有活动就绪进程
  • 活动就绪态→静止就绪态
    这种状态变化主要是由于系统调节负荷的需要,或者是系统优化性能的需求,而将某些不需要运行的活动就绪进程由内存换出至外存。
  • 运行态挂起→静止就绪态
    原因:程序出现错误或异常,或者是对运行进程进行分析的需要。

3. 总结

参考:
[1] 操作系统原理 胡元义、黑新宏 主编 中国工信出版集团。

猜你喜欢

转载自blog.csdn.net/weixin_45893787/article/details/126056919