操作系统(2.1)--进程的描述与控制

简介: 前趋图:是一个有向无循环图,用于描述进程之间执行的前后关系。

目录


一、前驱图和程序执行


1.前驱图


2.程序顺序执行


2.1 程序的顺序执行


2.2 程序顺序执行时的特征


3. 程序并发执行


3.1程序的并发执行


3.2 程序并发执行时的特征


一、前驱图和程序执行

1.前驱图

前趋图:是一个有向无循环图,用于描述进程之间执行的前后关系。


c6dbbb171f1b0f8609e22f5ab0f92210_d9b3f3c23eb44f6e94ea95e37f84ed31.png

具有九个结点的前趋图

存在下述前趋关系:

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)}

8357090fba47a18e79e92dd33817569c_f78b41ea15bf46c598a4c8c138785207.png


具有循环的图

前趋图中是不允许有循环的,否则必然会产生不可能实现的前趋关系。如图所示的前趋关系中就存在着循环。它一方面要求在S3开始执行之前, S2必须完成,另一方面又要求在S2开始执行之前,S3 必须完成。显然,这种关系是不可能实现的。


图中的每个结点可用于描述- 一个程序段或进程,乃至一条语句;

结点间的有向边则用于表示两个结点之间存在的偏序(亦称偏序关系)或前趋关系“→”

如果(Pi,Pj)∈→,可写成Pi→Pj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。

在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或程序的执行时间。

2.程序顺序执行

2.1 程序的顺序执行

I:输入操作

C:计算操作

P:打印操作

886500e89fef4af50d5e77ceba2d5d3a_d4b46a6bc1bb4174b4c0428bf90265ed.png


S1:a:=x+y;

S2:b:=a-5;

S3:c:=b+1;

32a5a475661fd82f4951eaad6a046449_ebf95cb40df94d0f93e3280d16d5cd53.png


其中,语句S2必须在语句S后(即a被赋值)才能执行,语句S3也只能在b被赋值后才能执行,因此,三条语句存在着这样的前趋关系: S1→S2 →S3,应如图所示的顺序执行。


2.2 程序顺序执行时的特征

(1)顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在上一一个操作结束之后开始。

(2)封闭性:程序是在封闭的环境下执行的,即,资源的状态(除初始状态外)只有本程序才能改变它。程序运行时独占全机资源程序一旦开始执行,其执行结果不受外界因素影响。

(3)可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,不论它是从头到尾不停顿地执行,还是“停停走走”地执行,都将获得相同的结果。


3. 程序并发执行

程序顺序执行时,资源利用率低


3.1程序的并发执行

c5a7c07eed591d60bea7d47352c489eb_30c956d631b346ba878a7acab2264a99.png

并发执行的前驱图

在该例中存在下述前趋关系:

Ii→Ci,I i→I i+1, Ci- >Pi,Ci→Ci+1, Pi→Pi+1


I i+1和Ci及Pi-1是重叠的,即在Pi-1和Ci以及Ii+1之间,不存在前趋关系,可以并发执行。


对于具有下述四条语句的程序段:

S1: a:=x+2

S2: b:=y+4

S3: c:=a+b

S4: d:=c+b


画出的前驱图:

073b190b85c6c6500f71b7ae4e3c0c55_96a9256af4b140779bdc4832a67c97d9.png



3.2 程序并发执行时的特征

(1) 间断性。程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间形成了相互制约的关系。

“执行-暂停-执行”间断性的运行。


(2)失去封闭性。当系统中存在着多个可以并发执行的程序时,系统中的各种资源将为它们所共享,而这些资源的状态也由这些程序来改变,致使其中任一程序在运行时,其环境都必然会受到其它程序的影响。

(3)不可再现性

例:程序A: N:=N+1;

程序B: Print(N); N:=0;

程序A和程序B并发执行,可能出现三种情况(N=n) :

(1) N:=N+1在Print(N)和N:=0之前,此时得到的N值分别为n+1,n+1, 0。

(2) N:=N+1 在Print(N)和N:=0之后,此时得到的N值分别为n,0,1。

(3) N:=N+1 在Print(N)和N:=0之间,此时得到的N值分别为n,n+1, 0。


程序在并发执行时,由于失去了封闭性,其计算结果必将与并发程序的执行速度有关,从而使程序的执行失去了可再现性;程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。

目录
打赏
0
0
0
0
5
分享
相关文章
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
214 1
深入浅出操作系统:进程与线程的奥秘
在数字世界的底层,操作系统扮演着不可或缺的角色。它如同一位高效的管家,协调和控制着计算机硬件与软件资源。本文将拨开迷雾,深入探索操作系统中两个核心概念——进程与线程。我们将从它们的诞生谈起,逐步剖析它们的本质、区别以及如何影响我们日常使用的应用程序性能。通过简单的比喻,我们将理解这些看似抽象的概念,并学会如何在编程实践中高效利用进程与线程。准备好跟随我一起,揭开操作系统的神秘面纱,让我们的代码运行得更加流畅吧!
阿里云操作系统控制台:高效解决性能瓶颈与抖动之进程热点追踪
遇到“进程性能瓶颈导致业务异常”等多项业务痛点时,提供高效解决方案,并展示案例。
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
426 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
103 4
深入理解操作系统:进程调度的奥秘
在数字世界的心脏跳动着的是操作系统,它如同一个无形的指挥官,协调着每一个程序和进程。本文将揭开操作系统中进程调度的神秘面纱,带你领略时间片轮转、优先级调度等策略背后的智慧。从理论到实践,我们将一起探索如何通过代码示例来模拟简单的进程调度,从而更深刻地理解这一核心机制。准备好跟随我的步伐,一起走进操作系统的世界吧!
深入理解操作系统:进程与线程的管理
在数字世界的复杂编织中,操作系统如同一位精明的指挥家,协调着每一个音符的奏响。本篇文章将带领读者穿越操作系统的幕后,探索进程与线程管理的奥秘。从进程的诞生到线程的舞蹈,我们将一起见证这场微观世界的华丽变奏。通过深入浅出的解释和生动的比喻,本文旨在揭示操作系统如何高效地处理多任务,确保系统的稳定性和效率。让我们一起跟随代码的步伐,走进操作系统的内心世界。
103 2

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问