找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 46|回复: 0

03.第03节课第二章进程的描述与控制

[复制链接]

5158

主题

3

回帖

1万

积分

管理员

积分
15578
发表于 2024-4-15 08:27:12 | 显示全部楼层 |阅读模式
好同学们,大家好,今天呢,我们来为大家介绍一下操作系统中进程与描述与控制这一章的部分。那么,在传统的操作系统当中呢,为了提高资源的利用率和系统的吞吐量,通常呢,采用多道程序技术,将多个程序呢同时装入内存。并使之呢,并发运行。传统意义上的程序呢,不能再独立进行。此时呢,

作为资源分配和独立运行的基本单位呢,那么就是进程。操作系统所具有的四大基本特征。就是说我们的。并发共享,虚拟异步。也是基于进程而形成的。从此。进程的角度呢?对操作系统呢?可以进行进一步的研究。所以呢,在操作系统当中进程呢,是一个集成极其重要的概念。那么,

接下来我们看一下前驱图的执行。那么,在早期未配置操作系统的?系统和单道批处理系统中程序的执行方式呢?是顺序执行,比如说在内存中呢?仅装入一道用户程序。由它独占系统中所有的资源,只有在一个用户程序执行完之后,才允许装入另一个程序并执行。那么由此可见呢,这种方式呢,非常浪费资源系统的效率呢,非常低。而在多道程序系统中,

由于内存中呢,可以同时装入多个程序,使它们能够共享系统资源。这个时候了。它们就能够并发执行可以控,克服了这些缺点程序的这两种执行方式呢,有种显著的不同。尤其是考虑到程序并发时的特征,才导致了在操作系统中引入了进程的概念。那么,我们为了能够更好的描述程序和顺序和并发执行的情况,那么我们先介绍一下用于程序执行的先后顺序的前序图。那么,所谓的前驱图呢?是指一个有向无环图那么可记?

为了dag。directed.acyclic graph.它用于描述进程之间的先后顺序,图中的每个节点呢,可以用一个进程。可以表示,一个进程或程序段乃至一条语句节点的有向边呢?表示,两个节点之间存在的偏序或前驱关系。进程和之间的前驱关系呢?那么可以用这样一个箭头来进行表示,如果进程pi和pj存在的前驱关系呢?可以表示为括号pi和pj。属于这样一个箭头,

也可以直接呢把它写为pi指向pj表示pj呢,开始之前执行pi必须完成。此时称pi是pg的直接前驱,而称pg是pi的直接后继,在前驱途中呢,把没有后继的节点呢,称为初始没有前驱的。在前置图中啊,把没有前驱的节点呢,称为初始节点,把没有后期的节点呢,称为终止节点。此外呢,每个节点呢,还有一个重量用于表示该节点所含的程序量或执行的时间,

那么我们看一下这个图当中,这个图当中呢,有着。呃,这样的前驱关系p1指向P2P1指向p3p1指向p4p2指向p3p2指向p5p3指向p5。p4呢指向p6p4呢指向p7p5指向p8。以及呢p6指向p8p7呢指向p9p8呢指向p9,那么或者呢,我们可以采用一个有序对的方式来进行表示。那么,应当注意的是,我们前序图中呢?是不允许有循环的,否则呢,必然会产生不可能实现的前序关系。

比如说我们旁边这个图当中具有循环的前序图,当中它的这个前序图当中呢,就有着循环,它一方面呢,要求s3开始之前s2必须完成。另一方面呢,又要求s2执行之前呢s3必须完成,那么显然呢,这种关系呢,是不能实现的。接下来我们看一下程序的顺序执行,通常一个应用程序由若干个程序段组成,每个程序段呢,完成特定的功能。他们在执行时呢,

都需要按照某种先后次序执行,仅当前一程序段完成后才运行,后一程序段。比如说,在进行计算时,我们应该先输入程序,然后呢,输入程序和输入输入程运行,输入程序,然后输入用户的程序和数据。然后呢,运行计算程序对所有输入的数据进行计算,最后才是打印顺序,这是我们的打印程序,结果那么这就是我们程序的顺序执行。

首先进行输入,然后呢,进行计算,最后呢,进行打印,那么这是程序的这样一个顺序执行。比如说我们要进行一个打印,你就要进行一个将计算结果进行打印,那么我们首先呢,就要进行输入数据。输入了数据之后呢,然后进行计算,计算了之后呢,才进行打印,那么这个是我们程序记。

顺序运行的这样一个这样一个情况。程序在顺序执行的特征呢?程序在顺序执行时具有三个特征。顺序性。只处理机了,严格的按照程序所规定的顺序执行。这本一操作呢,必须在下一个操作开始之前结束封闭性呢,是程序在封闭的环境下运行,比如说程序运行时呢,独占全局资源。资源的状态呢?只有本程序才能改变它,程序一旦开始执行。其其执行结果呢?

不受外界因素影响,可在线性就只只要程序执行时的环境和初级条件相同,当程序重复执行时,不管它是从头到尾不停顿的执行还是停停走走的执行。都可获得相同的结果,程序的顺序执行的这种特性呢?为程序员检测和校正程序的错误呢?带来很大方面,那么这是程序顺序执行的结果。好吧,我们来看一个。程序的并发执行的这样一个例子。比如说程序的顺序执行呢,虽然可以给程序员带来方便,但系统的利用率却非常低,

因此呢,在程序中引入了多道程序技术。是程序或程序段之间能并发执行,并非所有的程序呢都能并发执行,世界上只存在只有不存在前驱关系的程序之间呢,才有可能并发执行,否则呢。无法并发执行,我们来看一下这个例子,我们通过一个例子呢,来说明程序的并发执行和顺序执行。那么,在我们这个图当中呢?输入程序,打印程序以及呢?

计算程序,扇子之间存在着。I指向。ii指向ci指向pi这样一个前置关系,那么以至对一个作业的输入打印和打计算和打印的三个程序端呢?必须顺序执行,但是若对一批作业处进行处理时,每到作业的输入。计算和打印程序的执行情况呢?那么这是我们的这样一个图当中的这样一个情况。输入程序iiie在输入第一批数据后呢?由计算程序c1对该数据进行计算的同时,输入程序ci 2可以再进行第二次。数据的输入,从而使第一个计算程序c1可以与第二个输入程序I2并发执行。

那么,事实上呢?正是由于c1和I2并不存在前驱关系,因此它们可以并发执行。一般来说,输入程序ii+1。在输入第I+1次数据时,计算程序ci可能正在对程序ii的第I次输入的数据进行计算。而打印程序pi- 1正在对计算程序的。现在打印。程序ci- 1的计算结果,那么我们可以看到,从这个图我们可以看到,我们呢,存在的前驱关系。

ii指向ci。ii指向ii+1 ci指向pic I指向ci+1 p。pi指向pi+1,而ii+1和ci以及呢?pi- 1是重叠的,也就是说在pi- 1以及ci以及ii+1之间。不存在前驱关系,可可以并发执行,那么也就是说什么意思呢?就是说我们的IE。和I1运行完了之后,执行I2I2运行完了之后,执行I3,那么这个时候呢?c1执行完之后呢?

运行c2,那么c1执行完之后运行p1,那我们的I3。c2p1就可以进行并发执行,那么这就是程序的这样一个并发执行。那么我们再看一下程序,并发执行它的特征,程序的并发执行呢?在引入了程序间的并发执行功能后呢,虽然提高了系统的吞吐量和资源的利用率,但由于它们共享系统资源。以及呢,他们为完成同一项任务而相互合作,致使了这些并发执行的程序之间必然形成相互制约的关系,由此会给程序的并发执行呢带来新的特征。

比如说间断性失去封闭性,以及呢,不可再乱在线性程序,在并发执行时呢,由于他们共享系统资源以及未完成同一项任务而相互合作。致使在这些并发层执行的程序之间完成了相互制约的关系,那么我们刚才这个图当中ICP是三个相互合作的程序,计算程序完成了ci- 1的计算后呢?如果。完成了ci- 1的运算后呢?如果输入程序ciii尚未完成数据的输入,则计算程序ci就无法进行数据处理,必须暂停执行。只有当程序暂停的因素消失后,比如说ii已完成数据输入计算程序ci呢,

便可恢复执行,那么因此呢,相互制约呢,将导致程序具有执行暂停执行这种间断性的这样一个活动规律。另外呢,这是这是我们的间断性,另外呢,我们还有失去封闭性,那么失去封闭性是什么呢?失去封闭性是当系统中存在的多个可以并发执行的程序的时候。程系统中的各种资源将为他们所共享,而这些资源的状态呢,也由这些程序改变,那么致使其中某任意程序运行的时候呢,其环境都会受到其他程序的影响。

比如说我们的处理机已被分配给某个进行运行的时候呢,其他程序必须等待,因此由此可见呢,此时的程序呢,已经失去了封闭性。另外呢,我们还有不可再线性程序,在并发执行的时候呢,由于失去了封闭性。也将导致其失去可再线性。比如说有两个循环程序a和b,它们共享一个变量n。程序a每执行一次时都要做n=n+1操作,程序b每执行一次时执行print操作,然后将n置为零。

程序a和b以不同的速度运行,这样呢,可能出现这样一个。多种情况,比如说。第一种n=n+1在n和n之n=0之前,此时得到的n值呢,分别为n+1 n+1和零。那么,我们假设的是,某时刻变量了n的值为小n,那么n第二种情况n=n+1呢?在print n和n=0之后,此时得到的结果呢是n零一。那么,

如果n=n+1呢?在print n和n=0之间,那么此时得到了n的值呢?分别为nn加一零。那么由此可见呢,在程序的并发执行的时候呢,由于失去了封闭性,其计算结果呢,必将与并发执行的执行速度有关。从而使我们的程序呢,在执行时失去了可再线性,那么也就是说程序经过多次运行后呢?虽然它们执行的环境和初始起来,结果相初始,条件相同呢?

但是呢,他们得到的结果呢,却互不相同。接下来我们看一下进程的概念,那么由于在多道环境下多道体系环境下呢?程序的执行属于并发执行。他们使之呢,将失去封闭性,具有间断性,以及呢,运行结果不可再现性。由此决定了通常的程序是不能参与并发执行的,否则程序的运行呢,失去了意义。为了使我们程序呢,

能够并发执行,并且可以对并发执行的程序加以描述和控制。这个时候呢,我们引入了进程的概念,那么为了使参与进并发执行的进程呢?都能独立的运行在操作系统中呢,必须为之配备一个专门的数据结构,称之为进程控制块PCB。就是我们的process control block PCB。PCB呢,进程控制块是进程存在的唯一标识,这里大家要注意,进程控制块PCB。是进程存在的唯一标识系统,利用PCB呢来描述系统进程的基本情况和活动过程。

从而呢,控制和管理进程,这样呢,把程序段相关的数据段和PCB 3部分呢,构成了进程实体,比如说进程实体呢,就是我们的程序段相关的数据段和PCB。一般情况下呢,我们把进程实体呢,就简称为进程,所谓创建进程呢,实际上呢,就是创建进程实体中的PCB,而撤销进程呢。实际上呢,

就是撤销进程的PCB。那么,对于进程的定义,我们有不同的定义,比如说可以定义了进程是程序的一次执行,也可以定义了进程是一个程序及其数据在处理器上的顺序,执行时所发生的活动。第还还有一种定义呢,是进程,是具有独立功能的程序。在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。那么,这是我们进程的这样一些定义。那接下来我们看一下进程的这样一个特征,

进程的特征呢?有并发。动态。独立预布,那么这些特征进程和程序呢?是两个概念,除了进程具有进程序,不不不具没有的这样一个PCB结构外呢?就还有这样一些动态,并发独立异步这样一些特点。所谓的动态性呢,是指进程的实质,是由进程实体的执行过程。因此呢,动态性就是进程最基本的特征。

动态性呢,还表现在它由创建而产生,由调度而执行而撤销而消亡,因此呢,进程实体具有一定的生命期。而程序呢,只是一组有序指令的集合,存放在某种介质上,其本身呢,不具有活动的含义,因此是静态的。所以说我们的进程的第一个特性呢,就是动态性,而并发性是什么呢?并发性是指多个进程实体同时存在于内存中,

且能在一段时间内同时运行,引入进程的目的呢?也正是使其。竞争实体能够和其他竞争实体能并发执行,因此并发性是积极进行的另一重要特性。同时,也成为操作系统的重要特征,而程序呢,它没有PCB是不能参与并发执行的,所以说我们进程还有一个特性呢,是并发性。另外,独立性是什么呢?在传统的操作系统中,独立性呢?

是指进程。是作为一个能独立运行,独立获得资源和独立接受调度的基本单位,凡是没有建立PCB的程序呢,都不能作为一个独立的单位参与运行,那么这是我们进程的独立性,这样一个特征。另外呢,还有异步性,异步性呢,是指进程按异步方式运行,就是说按各自独立的,不可预知的速度向前进行推进,那么正是由于这个原因呢,才导致了。

以前的程序呢,若参与并发执行,会产生其结果的不同,不能在线性。而为了使进程的并发运行,是具有一步性的。仍能保证进程在并发执行的结果是可在线的,在操作系统呢,引入了进程的概念,并配置了相关的进程同步机制,那么也就说我们的进程呢,还有一个特性呢是。异步性那么所以说大家呢,要注意进程的几个特征,并发动态独立异步。

接下来我们看一下进程的基本转状态及转换。那么,由于多个进程呢?在并发执行时共享系统资源而使它们在运行过程中呢?呈现间断性的运行选。规律因此呢,进程在其生命周期内呢,可能是多种状态。那么一般情况下呢,每一个进程呢,至少应处于这样三种基本状态之一,第一个呢是就序态,第二个呢是执行态。第三种呢,是阻塞态。

那么这三种状态是什么样的情况呢?就绪态正是进程已经准。或已经处于准备好运行的状态,比如说即进程已经分配到了除了CPU以外的所有资源之后,只要再获得CPU便可进行执行。如果系统中有许多处于旧序态的进程,就将它们按一定的策略,比如说优先级策略排成一个队列,该队列呢,称为旧序队列。也就是说,就绪队列呢,就是只要获得CPU就能够进行执行,那么这种状态呢,我们称为就绪状态。

另外呢,还有执行状态,执行状态呢,是指进程已获得CPU,其程序呢,正在执行的状态,对于任何一个时刻而言,在单处理机系统中。只有一个进程处于执行状态,那么这里到这里大家要注意在单处,在同一时刻中。在单处理系统中,只有一个进程处于执行状态,而在多处理机系统中呢?有同时呢?

有多个进程处于执行状态,那么阻塞状态是什么呢?这是指正在执行的程序。由于某种事件。比如说IO请求申请缓冲分区失败等情况,暂时无法继续执行的状态,那么就是说进程的执行呢?受到阻塞,由此引起进行调度操作系统呢?把处理器分为另一个,就是进进进。从而让受阻的进程呢,处于暂停状态,一般将这种暂停状态呢,称为阻塞状态,

有时称为等待或者封锁状态,通常系统呢,将处于阻塞状态的队列呢也。进程呢,也排成一个队列,称为阻塞队列。也就是说,我们来看一下这三种状态,这三种状态的就绪态,那么就是呢,处于只需要只只需要获得CPU,变得运行这样一个状态呢,我们称之为就绪状态。执行状态呢,就是已经获得CPU,

正在执行的状态,阻塞态呢,就是由于发生某事件,或者比如说IO请求。那么这个时候了,我们。由执行态将由执行态呢?并将它的处理器呢分配给另一个就绪进程,这样呢,我们就播就就没让就没有让没不使用我们的处理机,那么这种时候呢?就进程了,处于这样一个阻塞状态,那么这种这就是进程的三种基本状态,我们来看一下三种,

这三种基本状态的。这三种基本状态的转换进程在运行过程中经常发生,状态的转换,比如说处于就绪状态的进程在调度。程序时未知分配的处理器便可运行相应的其状态呢,就为就绪态变为执行态,而正在执行的进程呢。由于当前分配态,它的时间片呢,已被完已被剥夺,而处理器暂停执行时。其状态呢,便由执行态转为就绪,或者因为发生某事件的时候呢。使当前的程序的执行受阻,

比如说访问临界资源。等情况使之无法运行,比如说IO请求,那么这样一个情况致使该进程呢?由阻塞态由由由执行态变为阻塞态。那么我们看一下这个图,这个图当中呢?我们进程呢?可以由旧事态。去通过进程调度变成执行态也可以呢,由于时间偏晚,由执行态变为就绪态。或者呢,是有IO请求由我们的执行态变成就,就是变成阻塞态,

或者呢,阻塞态了它的IO事件完成。便有阻塞态了。回到就绪态,那么大家要记住这三态变化,它的这样一个引起的事件,阻塞态到就绪态呢?是iu完成。执行态呢,到阻塞态呢,是IO请求,就是带到执行态是进程调度执行态到就是它的是时间片完,那么大家要记住这三种状态以及它的相互变化的情况和它们。产生变化的各种事件的这样一个情况,那么大家要记住这样的方情况。

那么我们再看一下创建状态和终止状态,为了满足进程控制块呢,对数据的操作的完整性以及增强管理的灵活性,通常在系统中呢。为进程引入了两种常见的状态,创建状态和终止状态。创建状态呢?呃,是是。比如我们我们之前讲过进程呢,是由创建而产生,创建进程是一个比较复杂的过程,一般呢,要通过多个步骤才能完成,比如说。

首先,向进向由进程申请一个空白的PCB,并将PCB中填写用于控制和管理的信息,然后才能为该信息呢?该进程的分配。运行时所必要的资源,最后呢,把该进程转入旧区态,并插入旧区队列中。但如果该进程所需的资源尚不能得到满足,比如说自动尚为。足够的内存呢?使进程无法装入其中。此时创建工作未完成,进程不能被调度运行,

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

便可由创建状态呢转为就绪状态。那么,接下来我们看一下终止状态。进程的终止了,也要通过两个步骤,首先呢,是等待操作的,等待操作系统进行善后处理,最后将其PCB清零。并将PCB空间呢返回系统另一个当一个进程到达了,自然结束点或者是出现了无法克服的这样一个错误的时候呢,或者被操作系统所终结的时候,或者被其他有权终止的进程有终止权的进程。程所终止,它将进入终止状态。

进入终止状态的进程呢,不能再执行,但在操作系统中仍然保留一个记录,其中保存状态码和一些即时统计信息。供其他进程收集,一旦其他进程完成了,对其信息的提取之后呢?操作系统将删除该进程,并将PCB清零,并将该空白空PCB呢?返回系统,那么这是我们的。终止状态。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5432考试网 ( 蜀ICP备2022024372号|川公网安备51152402000101号 )|网站地图

GMT+8, 2024-5-3 05:30 , Processed in 0.073932 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表