- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 Operating System;教学目的 ;本章重点: ;本章难点:;第2章 进程管理;2.1.1 程序的并发执行
程序的执行有两种方式:顺序执行和并发执行。
顺序执行是单道批处理系统的执行方式,也用于简单的单片机系统;
现在的操作系统多为并发执行,具有许多新的特征。引入并发执行的目的是为了提高资源利用率。
首先引入前驱图,再用前趋图表示程序的运行流程; 前趋图是一个有向无循环图DAG(Directed Acyclic Graph)。
在前趋图中,每个结点代表一个事件。在操作系统中,可以将结点看作语句、程序段或进程等。结点间的有向边表示两个结点间的前趋关系,记为“→”。若有S1→S2,则表示只有当S1完成之后,S2才可以执行,此时,称S1是S2的直接前趋,S2是S1的直接后继。
图2-1是一个例图。在图2-1(a)中,S1是没有前趋的结点,称为初始结点,S7是没有后继的结点,称为终止结点。而图2-1(b)是有两个初始结点的前趋图。至于图2-1(c),因为S2与S3形成一个循环,所以它不是前趋图。;图2-1 例图; 1) 程序的顺序执行
所谓程序的顺序执行,是指一个程序运行时独占整个系统资源, 处理机严格按照程序所规定的顺序进行操作。
在一个程序段中,只有前面的一个操作执行完,才能进行后面一个操作。在一个程序段的执行过程中,不能插入其它程序段中的操作。例如,对于下述程序段:
S1: READ(X,Y);
S2: C = X+Y;
S3: PRINT C;; 其中S2必须在X、Y被赋值后才能执行,同样,S3也必须在C被赋值后才能执行。因此,这个程序段的执行顺序如图2-2所示。; 类似地,在一个系统中,若要执行几个程序段,只有当一个程序段执行完后才能执行另一个程序段中的操作。例如,一个程序段通常由输入(I)、计算(C)、输出(P)等操作组成,两个程序段的顺序执行则如图2-3所示。; 2) 程序顺序执行的特征
● 顺序性:处理机的操作严格按照程序所规定的操作顺序执行,时间上完全有序, 即只有前一个操作执行完以后,才能进行后继操作。
● 封闭性:程序执行时独占系统资源,系统内各种资源的状态(初始状态除外)只能被本程序所改变,因此其执行结果不受外界因??的干扰。
● 结果可再现性:只要程序执行的环境与初始状态不变, 当重复执行时, 所获得的结果相同, 与执行速度无关。; 并行操作是指多个操作在计算机系统的各个硬件部件上同时进行。例如,CPU与CPU的并行操作,CPU与I/O设备的并行操作,这是真正意义上的“同时”操作,称之为并行操作。
我们将要介绍的并发执行是指在一个时间段内,多个程序段在计算机系统中“一起”执行。例如,在一个时间段内,一个CPU在为多道程序工作,而在某一个瞬间,一个CPU只能运行一道程序,它只是在多道程序中快速切换,给人以CPU“同时”运行几道程序的感觉。每个程序内部仍是按顺序执行,但是多个程序的执行过程是可以交叉的,这是一种伪并行,称之为并发执行。;若干程序段在执行时间上有重叠, 即一个程序段的执行过程中插入了其它程序的操作,称为并发执行,如图2-4所示。程序P与程序Q在t2~t4之间是并发执行的,程序Q与程序R在t3~t5之间是并发执行的,而在t3~t4之间,程序P、程序Q与程序R是并发执行的。;【并发执行】:在多道程序下,任意时刻系统中有多个活动并发执行。这是现代OS的一个基本特征。
【资源共享】:系统中的硬件资源和软件资源由多道用户程序共同使用,资源的状态由多道程序所决定。这是现代OS的另一个基本特征。 ; 例如,两个并发执行的程序段共享一个变量,当两个程序段推进速度发生变化时,可能导致程序中引用共享变量的语句得到不同的结果,即程序运行结果不确定。我们通过下面一个例子来说明这种现象发生的过程。
设A与B是两个可以并发执行的程序段, N是共享变量。;例如当N的初始值为5时,会发生如下情况之一:;多个程序段并发执行时,每个程序段中语句的顺序执行仍然保持,但是多个程序段之间不再保持顺序执行的关系。主要:
间断(异步)性:“走走停停”,一个程序可能走到中途停下来,失去原有的时序关系;
失去封闭性:共享资源,受其他程序的控制逻辑的影响。如:一个程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征。
失去可再现性:程序与CPU执行的活动之间不再一一对应,程序经过多次运行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。
相互作用和制约性:系统中并发执行的程序具有相互独立的一面(表现在每个程序为用户提供特定的功能,它们之间相互独立),但是有时也
文档评论(0)