操作系统2 ————进程的描述

操作系统2 ————进程的描述

一.目录

二.进程的定义和描述

1.进程引入的原因

为了可以使程序能够并发执行,并且可以对并发执行的程序加以描述和控制,人们引入了进程这个概念。

2.进程的定义

  • 进程控制块(PCB):为了可以使并发参与执行的每个程序(含数据)都能够独立运行,在操作系统中必须为之匹配一个专门的数据结构,我们称之为进程控制块(Process Control Block,PCB),系统利用PCB来描述进程的基本情况好活动过程。

  • 进程实体 :由程序段,相关数据段和PCB三部分就组成了进程实体(进程映像),一般情况下,我们把进程实体简称为进程,例如,所谓创建进程就是创建进程实体中的PCB,而撤销进程就是撤销进程中实体的PCB。

  • 进程:进程就是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

3.进程的特征

  • a. 动态性: 进程的实质是进程实体的执行过程,因此,动态性就是进程最基本的特征。动态性还体现在“它由创建而生,因调度而执行,因撤销而消亡”。可见。进场实体有一定的生命周期。

  • b. 并发性: 是指多个进程实体同时存在于内存中,并能在一段时间内同时运行。引入进程的目的也就是为了进程实体可以与其他进程一起并发执行。因此并发性是进程一项很重要的特性。

  • c. 独立性: 独立性是指进程实体是一个能够独立运行,独立活动资源的和独立结束调度的基本单位,每个进程都有”自己”(逻辑上的)的寄存器和内部状态。凡未建立建立PCB的程序都不能作为一个独立的单位参与运算。

  • d. 异步性: 是指进程按异步方式运行,即各自独立,不可预知的速度向前推进。

4.进程和程序的区别与联系

  1. 进程是程序的一次执行,属于动态概念,而程序是一组有序的指令,是一种静态概念。但进程离开了程序也就失去了存在的意义。
  2. 一个进程可以执行一个或几个程序。反之,同一程序可能由几个进程同时执行。
  3. 程序可作为软件资源长期保留,而进程是程序的一次执行过程,是暂时的。进程具有生命期。
  4. 进程具有并发性,能与其它进程并发运行。而程序不具备这种特征。
  5. 进程是一个独立的运行单位,也是系统进行资源分配和调度的一个独立单位。因此,进程具有独立性,但有时进程间又具有相互制约性

三.进程的基本状态及转换

1. 进程的三种基本状态

由于一个进程不会总是占着CPU,致使他们在运行过程中呈现间断性的运行特点。所以进程在其生命周期内可能存在多种状态,但一般而言,每一个进程至少应处于下面三种基本状态之一:

a.就绪状态: 这是指进程以及具备运行的条件,只要再获得CPU,即可立即执行。如果系统中有多个处于就绪状态的进程,通常按照一定的策略将他们排成一个队列,即就绪队列。

b.执行状态: 进程独占这CPU,并且在CPU上运行。显然处于这种状态的进程数量<=CPU的数目。若只有一个CPU那么任何时刻最多只能有一个进程处于运行状态。

c.阻塞状态: 这是指正在执行的进程因为某些事件(如I/O请求等)暂时无法继续执行的状态。此时处理机分配给另一个就绪进程,让受阻进程暂停。同就绪队列,也存在一个阻塞队列。

2. 进程基本状态的转换

运行可转化为阻塞、就绪。
阻塞可转化为就绪。
就绪可转化为运行。
这里写图片描述

进程阻塞步骤如下:
  正在执行的进程发现上述某件事情时,由于无法继续运行,于是进程便通过调用阻塞原语block把自己阻塞,之后进程会停止执行,并将进程控制块的状态由执行改为阻塞,并将PCB插入阻塞队列,如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞队列中,最后,转调度程序进行重新调度,将处理机分配给另一就绪进程并进行切换。即保留被阻塞进程的处理机状态到PCB中,再按新进程的PCB中的处理机状态设置CPU环境。
进程唤醒步骤如下:
  当被阻塞进程所期待的时间出现时,如I/O完成获其所期待的数据已经到达,则由有关进程(如用完并释放I/O设备的进程)调用唤醒原语wakeup,将等待该事件的进程唤醒,首先将被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。值得注意的是,block原语与wakeup原因应该在不同进程中执行。

3. 创建状态和终止状态

创建状态

  • 引入目的:保证进程的调度必须在创建工作完成后进行,确保进程控制操作的完整性,同时增加管理的灵活性。
  • 创建进程的步骤:首先由进程申请一个空白PCB,并向PCB中填入用于控制和管理进程的信息,然后为该进程分配运行所必要的资源。最后把该进程转入就绪状态并插入就绪队列中。
  • 创建状态:如果此时所需要的资源尚不能得到满足,此时创建工作尚未完成,进程不能被调度运行,于是将此时进程的状态称为创建状态。

终止状态

  • 终止进程的步骤:首先等待操作系统进行善后处理,最后将其PCB清零,并将PCB返回空间。
  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行、

引入创建和终止状态后,进程状态的转换图:
这里写图片描述

四.挂起操作和进程状态的转换

1. 挂起操作

由于终端用户及操作系统的需要(排除故障或为系统减负),为了能够将指定进程暂时静止下来,增加了静止阻塞 (阻塞挂起) 和静止就绪 (就绪挂起)态,原阻塞和就绪改称为活动阻塞和活动就绪状态。
从活动阻塞和活动就绪转为静止阻塞和静止就绪时就是挂起操作,反之为激活操作。

2.挂起操作执行原因

  1. 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停使自己的程序静止下来。使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。
  2. 父进程的请求。有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动。
  3. 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
  4. 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
  5. 对换的需要。为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上。

3.引入挂起原语后进程状态的转换

  1. 运行或活动就绪→静止就绪,活动阻塞→静止阻塞通过挂起操作(suspend)。
  2. 静止就绪→活动就绪, 静止阻塞→活动阻塞 通过激活操作(activate)。
  3. 静止阻塞→静止就绪: 当等待的事件发生时。
    这里写图片描述

进程挂起步骤如下
  当出现引起进程挂起的事件时,如用户进程请求将自己挂起或父进程请求将自己的某个子进程挂起,系统将利用挂起原语suspend将指定进程或处于阻塞状态的进程挂起。 检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪,对于活动阻塞状态的进程,则将其改为静止阻塞,若被挂起的状态正在执行,则转向调度程序重新调度。

进程激活步骤如下
  当发生激活进程的事件时,例如,父进程或用户进程请求激活指定进程,若该进程驻在外存而内存中已有足够的空间时,则可将在外存处于静止就绪状态的该进程换入内存,这时,利用激活原语active将指定进程激活,激活原语先将进程从外存调入内存,检查该进程的现行状态,由对应的静止状态改为活动状态,若使用抢占式调度策略,则有新进程如就绪队列时,应检查是否要进行重新调度,即由调度程序将被激活进程与当前进程进行优先级的比较,如果被激活进程的优先级更低,就不必重新调度,否则,立即剥夺当前进程的运行,把处理机分配给刚被激活的进程。

猜你喜欢

转载自blog.csdn.net/qq_38499859/article/details/79900968