操作系统(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。


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

目录
相关文章
|
15天前
|
算法 调度 UED
深入理解操作系统:进程调度与优先级队列
【10月更文挑战第31天】在计算机科学的广阔天地中,操作系统扮演着枢纽的角色,它不仅管理着硬件资源,还为应用程序提供了运行的环境。本文将深入浅出地探讨操作系统的核心概念之一——进程调度,以及如何通过优先级队列来优化资源分配。我们将从基础理论出发,逐步过渡到实际应用,最终以代码示例巩固知识点,旨在为读者揭开操作系统高效管理的神秘面纱。
|
8天前
|
消息中间件 安全 算法
深入理解操作系统:进程管理的艺术
【10月更文挑战第38天】在数字世界的心脏,操作系统扮演着至关重要的角色。它不仅是硬件与软件的桥梁,更是维持计算机运行秩序的守夜人。本文将带你走进操作系统的核心——进程管理,探索它是如何协调和优化资源的使用,确保系统的稳定与高效。我们将从进程的基本概念出发,逐步深入到进程调度、同步与通信,最后探讨进程安全的重要性。通过这篇文章,你将获得对操作系统进程管理的全新认识,为你的计算机科学之旅增添一份深刻的理解。
|
12天前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
【10月更文挑战第34天】本文旨在探讨操作系统中至关重要的一环——进程管理及其调度策略。我们将从基础概念入手,逐步揭示进程的生命周期、状态转换以及调度算法的核心原理。文章将通过浅显易懂的语言和具体实例,引导读者理解操作系统如何高效地管理和调度进程,保证系统资源的合理分配和利用。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供新的视角和深入的理解。
33 3
|
14天前
|
Linux 调度 C语言
深入理解操作系统:进程和线程的管理
【10月更文挑战第32天】本文旨在通过浅显易懂的语言和实际代码示例,带领读者探索操作系统中进程与线程的奥秘。我们将从基础知识出发,逐步深入到它们在操作系统中的实现和管理机制,最终通过实践加深对这一核心概念的理解。无论你是编程新手还是希望复习相关知识的资深开发者,这篇文章都将为你提供有价值的见解。
|
15天前
|
算法 调度 UED
深入理解操作系统的进程调度机制
本文旨在探讨操作系统中至关重要的组成部分之一——进程调度机制。通过详细解析进程调度的概念、目的、类型以及实现方式,本文为读者提供了一个全面了解操作系统如何高效管理进程资源的视角。此外,文章还简要介绍了几种常见的进程调度算法,并分析了它们的优缺点,旨在帮助读者更好地理解操作系统内部的复杂性及其对系统性能的影响。
|
16天前
深入理解操作系统:进程与线程的管理
【10月更文挑战第30天】操作系统是计算机系统的核心,它负责管理计算机硬件资源,为应用程序提供基础服务。本文将深入探讨操作系统中进程和线程的概念、区别以及它们在资源管理中的作用。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程和线程的管理技巧。
33 2
|
16天前
|
消息中间件 算法 Linux
深入理解操作系统之进程管理
【10月更文挑战第30天】在数字时代的浪潮中,操作系统作为计算机系统的核心,扮演着至关重要的角色。本文将深入浅出地探讨操作系统中的进程管理机制,从进程的概念入手,逐步解析进程的创建、调度、同步与通信等关键过程,并通过实际代码示例,揭示这些理论在Linux系统中的应用。文章旨在为读者提供一扇窥探操作系统深层工作机制的窗口,同时激发对计算科学深层次理解的兴趣和思考。
|
17天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理与调度策略
【10月更文挑战第29天】本文将带领读者深入探讨操作系统中的核心组件之一——进程,并分析进程管理的重要性。我们将从进程的生命周期入手,逐步揭示进程状态转换、进程调度算法以及优先级调度等关键概念。通过理论讲解与代码演示相结合的方式,本文旨在为读者提供对进程调度机制的全面理解,从而帮助读者更好地掌握操作系统的精髓。
30 1
|
13天前
|
消息中间件 算法 调度
深入理解操作系统:进程管理的艺术
【10月更文挑战第33天】本文旨在揭示操作系统中进程管理的神秘面纱,带领读者从理论到实践,探索进程调度、同步以及通信的精妙之处。通过深入浅出的解释和直观的代码示例,我们将一起踏上这场技术之旅,解锁进程管理的秘密。
20 0
|
15天前
|
算法 Linux 调度
深入理解操作系统之进程调度
【10月更文挑战第31天】在操作系统的心脏跳动中,进程调度扮演着关键角色。本文将深入浅出地探讨进程调度的机制和策略,通过比喻和实例让读者轻松理解这一复杂主题。我们将一起探索不同类型的调度算法,并了解它们如何影响系统性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇理解操作系统深层工作机制的大门。
25 0