=====B102第二章进程管理==== (1)

简介: 2.1 进程的基本概念  在未配置OS的系统中,程序的执行方式是顺序执行,也就是说必须在一个程序执行完后,才允许另一个程序执行;在多道程序环境下,则允许多个程序并发执行。程序的这两种执行方式间有着显著的不同。也正是程序并发执行的这种特征,才导致了在操作系统中引入了进程的概念。

2.1 进程的基本概念

  在未配置OS的系统中,程序的执行方式是顺序执行,也就是说必须在一个程序执行完后,才允许另一个程序执行;在多道程序环境下,则允许多个程序并发执行。程序的这两种执行方式间有着显著的不同。也正是程序并发执行的这种特征,才导致了在操作系统中引入了进程的概念。

2.1.1 程序的顺序执行及其特征

  1. 程序的顺序执行

2021062511512613.png


  1. 程序顺序执行时的特征
    (1)顺序性:每一操作必须在上一个操作结束之后开始。
    (2)封闭性:程序一旦开始执行,其执行结果不受外界因素影响。
    (3)可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,都将获得相同的结果。

2.1.2 前驱图

程序顺序执行时的特征

(1)顺序性:每一操作必须在上一个操作结束之后开始。

(2)封闭性:程序一旦开始执行,其执行结果不受外界因素影响。

(3)可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,都将获得相同的结果。

2.1.2 前驱图

 前驱图是一个有向无循环图,记为DAG,用于描述进程之间执行的前后关系。图中的每个节点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示连个结点之间存在的偏序或前驱关系->。

 →={(Pi,Pj) | Pi must complete before Pj may start},如果(Pi,Pj)∈→,可写成 Pi→Pj,称 Pi 是 Pj 的直接前趋,而称 Pj 是 Pi 的直接后继。在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间。在图 2-1(a)和 2-1(b)中 分别存在着这样的前趋关系:

     Ii→Ci→Pi

     S1→S2→S3

 对于图 2-2(a)所示的前趋图,存在下述前趋关系:

 P1→P2,P1→P3,P1→P4,P2→P5,P3→P5,P4→P6,P4→P7,P5→P8,P6→P8,P7→P9,P8→P9

或表示为:

 P={P1,P2,P3,P4,P5,P6,P7,P8,P9}

 →={(P1,P2),(P1,P3),(P1,P4),(P2,P5),(P3,P5),(P4,P6),(P4,P7),(P5,P8),(P6,P8),

(P7,P9),(P8,P9)}

 应当注意,前趋图中必须不存在循环,但在图 2-2(b)中却有着下述的前趋关系: S2→S3,S3→S2 显然,这种前趋关系是不可能满足的。

2021062512103316.png

2.1.3 程序的并发执行及其特征

  1. 程序的并发执行
    20210625121204536.png

20210625185812923.png

程序并发执行时的特征

(1)间断性:程序在并发执行时,由于他们共享系统资源,以及为完成同一项任务而相互合作,致使这些并发执行的程序之间,形成了相互制约的关系。相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的规律。

(2)失去封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其它程序的影响。

(3)不可再现性:程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。

2.1.4 进程的特征与状态

  1. 进程的特征和定义

(1)结构特征

 进程印象:

   PCB:通常的程序是不能并发执行的。为使程序(含数据)能独立运行,应为之配置一进程控制块,这个进程控制块叫做PCB。

   程序段

   数据段

 在许多情况下所说的进程,实际上是指进城实体。例如,所谓创建进程,实质上是创建进程实体中的 PCB;而撤消进程,实质上是撤消进程的 PCB。

(2)动态性

 进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤消而消亡”。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运 动的含义,因而是静态的。

(3)并发性

 指多个进程实体同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也成为 OS 的重要特征。引入进程的目的也正是为了使其进程实体能和其它进程实体并发执行;而程序(没有建立 PCB)是不能并发执行的。

(4)独立性

 在传统的 OS 中,独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调 度的基本单位。凡未建立 PCB 的程序都不能作为一个独立的单位参与运行。

(5)异步性

 指进程按各自独立的、 不可预知的速度向前推进,或说进程实体按异步方式运行。进程的定义:

   (1)进程是程序的一次执行。

   (2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

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

 在引入了进程实体的概念后,我们可以把传统 OS 中的进程定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。


进程的三种基本状态

 (1)就绪状态

   当进程已分配到除 CPU 以外的所有必要资源后,只要再获得 CPU,便可立即执行,进程这时的状态称为就绪状。在一个系统中处于就绪状态的进程可能有个,通常将它们排成一个队列,称为就绪队列。

 (2)执行状态

   进程已获得 CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。

 (3)阻塞状态

   正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态, 亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态,有时也称为等待状态或封锁状态。

 致使进程阻塞的典型事件有:

   请求 I/O,申请缓冲空间等。

 通常将这种处于阻塞状态的进程也排成一个队列。有的系统则根据阻塞原因的不同而把处于阻塞状态的进程排成多个队列。

 处于就绪状态的进程,在调度程序为之分配了处理机之后,该进程便可执行,相应地,它就由就绪状态转变为执行状态。正在执行的进程也称为当前进程,如果因分配给它的时间片已完而被暂停执行时,该进程便由执行状态又回复到就绪状态;

 如果因发生某事件而使进程的执行受阻(例如,进程请求访问某临界资源,而该

资源正被其它进程访问时),使之无法继续执行,该进 程将由执行状态转变为阻塞状态。图 2-5 示出了进程的三种基本状态以及各状态之间的转换关系。

20210625193617547.png

3. 挂起状态

 1) 引入挂起状态的原因

在不少系统中进程只有上述三种状态,但在另一些系统中,又增加了一些新状态,最 重要的是挂起状态。引入挂起状态的原因有:


 (1) 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我 们把这种静止状态称为挂起状态。

 (2) 父进程请求。有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

 (3) 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

 (4) 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。


2)进程状态的转换

 在引入挂起状态后,又将增加从挂起状态到非挂起状态的转换;或者相反。可有以下几种情况:


  (1) 活动就绪→静止就绪。当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为 Readya。当用挂起原语 Suspend 将该进程挂起后,该进程便转变为静止就绪状态,表示为 Readys,处于 Readys 状态的进程不再被调度执行。

 (2) 活动阻塞→静止阻塞。当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状 态,表示为 Blockeda。当用 Suspend 原语将它挂 起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程在其所期待的事件 出现后,将从静止阻塞变为静止就绪。

 (3) 静止就绪→活动就绪。处于 Readys 状 态的进程,若用激活原语 Active 激活后,该进 程将转变为 Readya 状态。

  (4) 静止阻塞→活动阻塞。处于 Blockeds 状 态的进程,若用激活原语 Active 激活后,该进 程将转变为 Blockeda 状态。图 2-6 示出了具有挂起状态的进程状态图。  

20210628194846374.png

创建状态和终止状态

1)创建状态

 先为一个新进程创建PCB,并填写必要的管理信息;

 其次,把该进程转入就绪状态并插入就绪队列之中;

 当一个新进程被创建时,系统已为其分配了 PCB,填写了进程标识等信息,但由于该进程所必需的资源或其它信息, 如主存资源尚未分配等,一般而言,此时的进程已拥有了自己的 PCB,但进程自身还未进入主存,即创建工作尚未完成,进程还不能被调度运行,其所处的状态就是创建状态。

 引入创建状态,是为了保证进程的调度必须在创建工作完成后进行,以确保对进程控 制块操作的完整性。同时,创建状态的引入,也增加了管理的灵活性,操作系统可以根据系统性能或主存容量的限制,推迟创建状态进程的提交。对于处于创建状态的进程,获得了其所必需的资源,以及对其PCB初始化工作完成后,进程状态便可由创建状态转入就绪状态。

2)终止状态

 进程的终止也要通过两个步骤:首先等待操作系统进行善后处理,然后将其 PCB 清零, 并将 PCB 空间返还系统。当一个进程到达了自然结束点,或是出现了无法克服的错误,或 是被操作系统所终结,或是被其他有终止权的进程所终结,它将进入终止状态。进入终止态的进程以后不能再执行,但在操作系统中依然保留一个记录,其中保存状态码和一些计时统计数据,供其它进程收集。一旦其它进程完成了对终止状态进程的信息提取之后,操作系统将删除该进程。

图 2-7 示出了增加了创建状态和终止状态后,进程的三种基本状态及转换图衍变为五种状态转换关系图。

20210628195418649.png

图 2-8 示出了增加了创建状态和终止状态后,具有挂起状态的进程状态及转换图。


20210628195444963.png

如图 2-8 所示,引进创建和终止状态后,在进程状态转换时,相比较图 2-7 所示的进程五状态转换而言,需要增加考虑下面的几种情况。

   (1) NULL→创建:一个新进程产生时,该进程处于创建状态。

   (2) 创建→活动就绪:在当前系统的性能和内存的容量均允许的情况下,完成对进程创 建的必要操作后,相应的系统进程将进程的状态转换为活动就绪状态。

   (3) 创建→静止就绪:考虑到系统当前资源状况和性能要求,并不分配给新建进程所需资源,主要是主存资源,相应的系统进程将进程状态转为静止就绪状态,对换到外存,不再参与调度,此时进程创建工作尚未完成。

   (4) 执行→终止:当一个进程到达了自然结束点,或是出现了无法克服的错误,或是被操作系统所终结,或是被其他有终止权的进程所终结,进程即进终止状态。

=====B102第二章进程管理==== (2)https://developer.aliyun.com/article/1415742?spm=a2c6h.13148508.setting.16.188b4f0evtcvhF

目录
相关文章
打印文档即提示Print driver host for 32bit applications
主机win7 32位系统,打印一切正常,共享打印机后,客户机为win7 64位系统连接该共享打印机,连接成功,驱动安装正常,x64驱动,客户机打印测试页正常,但打印文档即提示Print driver host for 32bit applications。
8832 0
打印文档即提示Print driver host for 32bit applications
wustojc1002求2个整数最大值
wustojc1002求2个整数最大值
88 0
|
存储 边缘计算 人工智能
边缘计算在AI时代的关键技术演进
【5月更文挑战第29天】随着人工智能技术的飞速发展,数据处理需求日益增长。边缘计算作为一种新兴的计算模式,将数据处理和存储从中心云转移到网络的边缘,更接近数据产生的源头。本文聚焦于边缘计算在AI领域的应用及其技术演进,探讨了其在提高响应速度、降低带宽成本及增强数据隐私方面的重要性。通过分析当前边缘计算的技术挑战与未来趋势,旨在为读者提供一个全面的理解框架。
|
机器学习/深度学习 人工智能 算法
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
322 2
鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法
|
安全 关系型数据库 MySQL
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
MySQL事务隔离级别:读未提交、读已提交、可重复读和串行
681 0
基础DQL(数据查询)——基础查询
基础DQL(数据查询)——基础查询
226 0
基础DQL(数据查询)——基础查询
|
C语言
用C语言打印杨辉三角
用C语言打印杨辉三角
149 0
|
SQL 存储 druid
开源OLAP迁移至Hologres
本文将会为您介绍开源OLAP如ClickHouse/Druid/Presto等架构同Hologres的深度对比,并介绍如何如何平滑迁移到Hologres技术体系,实现更稳定,更可扩展,更多功能的HSAP架构。
11319 0
开源OLAP迁移至Hologres
|
Java Spring
定时器Cron配置方法
Quartz Cron表达式主要用于JAVA Spring定时任务中,用法如下: # 每月的最后1天 @Scheduled(cron = "0 0 18 28–31 * ?") public void doAtLastDayOfMonth() { final Calendar calendar = Calendar.
4461 0
|
传感器 数据采集 前端开发
实战能耗和环境的实时监测和控制
本次分享实战的能耗和环境的实时监测,首先需要对主要用能设施、设备进行能耗分项计量。通过对空调机组、插座、风机、照明回路等安装分项能耗计量表,可以实时、准确、详细地掌握每个用能终端的能源消耗数据。在此基础上通过有线、串口或无线NB网路,将实时数据传送系统中,后台通过设备消息订阅方式对数据进行分发处理,数据按照能耗数据模型进行分析多个角度进行统计、分析、评判,采用动态曲线、图表的形式,并结合场景模式实现控制具体设备达到节能减排效果。
1432 0