进程的概念与控制

进程的基本概念+进程控制

程序的顺序执行

顺序执行的基本概念

包括程序段级顺序执行、程序级顺序执行、语句级顺序执行等

顺序执行特征

  1. 顺序性:处理机严格按照程序规定的顺序执行程序

  2. 封闭性:程序独占全机资源,不受其他程序的影响

  3. 可再现行:程序执行结果可以再次显现,即无论何时执行结果都相同

顺序执行存在着整体资源利用率低单位时间内算题量少等诸多问题,为了解决这些问题,我们引入了多道程序技术,使程序或程序段之间能够并发执行,这样各设备就可以同时运行,提高整体运行速度和资源利用率。

程序的并发执行

并非所有的程序都能够并发执行,只有在不存在前驱关系的程序之间才有可能并发执行。另外,并发执行可能导致各个程序间相互影响,运行结果将出现不可再现性,即在不同时期运行结果不同(后文给出处理方案)。

并发执行特征

  1. 间断性:资源的共享,以及为完成同一项任务而相互合作等原因,致使在这些并发执行的程序之间形成相互制约关系,因此将导致程序执行具有”执行-暂停-执行”的特点 。

  2. 失去封闭性:程序不再独占全机资源,运行受到其他程序的影响。

  3. 不可再现性:程序执行结果受其他程序的影响,结果不定。

进程的描述

在多道程序环境下,程序的执行属于并发执行,也就相应的导致了程序的不可再现性,如果该性质不能够得到有效控制,那程序的执行也就失去了意义。为了能够使程序能够“正常”并发执行,人们引入了“进程”这一概念。

进程定义

为了使参与并发执行的每个程序(含数据)都能够独立的运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块(PCB)。系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理进程。这样,由程序段、相应的数据段和PCB三部分构成了进程实体(简称进程)。更准确地说,进程是进程实体的运行过程, 是系统进行资源分配和调度的独立单位。

进程特征

进程除了程序所没有的进程控制块(PCB)外,还具有如下特征:

  1. 动态性:是程序的一次执行过程,因此是动态的。

  2. 并发行:指多个进程实体同存于内存中,也能在一段时间内同时运行。

  3. 独立性:能独立运行的基本单位,也是资源分配和调度的基本单位。

  4. 异步性:进程以各自独立的、不可预知的速度向前推进。

进程实体的结构特征:程序段、数据段、进程控制块(PCB)— 操作系统内核当中,如图所示:

进程的基本状态及转换

进程的三种基本状态

由于多个进程在并发执行时共享资源,致使它们在运行时呈现间断性的运行规律,所以进程在其生命周期内可能具有多种状态。

  1. 就绪状态:进程已经获得了除处理机之外的所有资源,一旦获得处理机就可以立即执行。

  2. 执行状态:进程已经获得CPU,其程序正在执行。

  3. 阻塞状态:正在执行的进程,由于发生某事件(如等待I/O、时间片到)而暂停无法继续执行的状态。

进程并非固定处于某种状态,其状态会随着自身的运行和外界的变化而变化,其状态变化如图所示:

创建状态和终止状态

满足了进程控制块对数据及操作的完整性要求以及增强管理的灵活性

创建状态:创建一个进程步骤如下:

  1. 申请空白PCB,并向PCB中填写用于控制和管理进程的信息;
  2. 为该进程分配运行时所必须的资源;
  3. 把该进程转入就绪状态并插入就绪队列中。

当进程所需资源无法得到满足时,即无法完成第3步时的状态称为创建状态,此时进程不能够被调度运行。

终止状态:添加此状态是为了保存状态码和一些计时统计数据,供其他进程收集。一旦其他进进程完成了对信息的提取之后,操作系统将删除该进程,即将PCB清零,并将该空白PCB返回给系统。😀

如图所示:

挂起状态

在许多系统中,进程除了就绪、执行和阻塞三种最基本的操作的状态外,为了系统和用户观察和分析进程的需要,引入了挂起操作。

挂起操作: 当该操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如果进程正在执行,它将暂停执行。若原本处于就绪状态,则该进程暂时不接受调度 。如图所示:

进程控制

记住一句话:所有进程都是由其他进程创建,根进程在操作系统内核初始化时创建!

进程创建

创建条件:用户登录、作业调度、提供服务(当运行中的用户程序提出某种请求之后,系统将专门创建一个进程来提供用户所需要的服务)、应用请求等。

进程创建原语:create()

关于创建步骤我上面介绍 创建状态 时大概说了一下,这里就不在详细说明了。

进程终止

终止条件:正常结束、异常结束、外界干预(应外界的请求而终止)。

进程终止原语:exit()

下面说一下撤销进程的流程:

① 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB, 从中读出该进程的状态。

② 若被终止进程正处于执行状态, 应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度。

③ 若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。

④ 将被终止进程所拥有的全部资源, 或者归还给其父进程,或者归还给系统。

⑤ 将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其他程序来搜集信息。

进程阻塞

阻塞条件:请求系统服务,请求操作,等待数据、资源,等待工作任务

进程阻塞原语:block()

正在执行的进程,当发生了上述某事件,进程便通过调用阻塞原语block()将自己阻塞,程序停止执行,进入阻塞队列。注意,进程是自己阻塞自己

进程唤醒

唤醒条件:允许系统服务,允许操作,数据、资源到达,工作任务到达

进程唤醒原语:wakeup()

当被阻塞进程所期待的事情发生时,则由有关进程(比如提供数据的进程)调用唤醒原语wakeup(),将等待该进程的事情唤醒。注意,阻塞进程是被别的进程唤醒

进程挂起

挂起条件:调试系统、暂停程序执行

进程挂起原语:suspend()

进程激活

激活条件:调试系统结束,程序继续执行

进程激活原语:active()

写在最后

此博客为博主一人书写,其中难免会发生错误,大家如果发现有错误或者有不懂的地方,欢迎在下方评论区留言,我会尽快回复。最后,感谢您的观看。

您的每一份支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------