- 1、本文档共294页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统chater2
2.1 进程的基本概念 进程的概念是操作系统中最基本、最重要的概念。它是在多道程序系统出现后,为了刻划系统内部出现的情况,描述系统内部各作业的活动规律而引进的一个新的概念 2.1.1程序的顺序执行及特征 1.程序的顺序执行 一个复杂的程序一般均含若干个程序段,并按一定先后顺序执行,每个操作必须在下一个操作开始之前结束。也即仅当前一个操作结束之后,后继操作才开始执行,此即程序的顺序执行性。 2.1.1程序的顺序执行及特征 例如一般程序包括输入(I)、计算(C)、输出(P)三部分,而计算须在输入完成后方可开始,而输出须在计算完成后才能进行。 1.程序的顺序执行 对一个程序段中的多条语句来说,也有一个执行顺序问题,例如对于下述三条语句的程序段: S1:a:=x+y S2:b:=a-5 S3:c:=b+1 如下图,语句S2必须在a被赋值后才能执行;S3也只能在b被赋值后才能执行。 2.程序的顺序执行的特征 顺序性:一个程序的各个部分的执行,严格地按照某种先后次序执行; 封闭性:程序一旦开始执行,其执行结果不受外界因素影响。 可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,将获得相同的结果。 2.1.2.前趋图 前趋图:用于描述一个程序的各部分(程序段或语句)间的执行顺序关系,或者是一个大的计算的各个子任务间的因果关系。 是一个有向无循环图,每个结点用于表示一条语句、一个程序段或一个进程;结点间的有向边表示两个结点之间存在的偏序或前趋关系 “→”。 2.1.2.前趋图 结点间的有向边表示两个结点之间存在的偏序(Partial_Order)或前趋关系(Precedence_Relation) “→”={(Pi,Pj)|在Pj开始前Pi必须完成},如果(Pi,Pj)∈→,可写成Pi→Pj,Pi是Pj的直接前趋,Pj是Pi的直接后继。 每个结点还具有一个重量。 2.1.2.前趋图 2.1.2.前趋图 该前趋图,存在下面的前趋关系: 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.1.3 程序并发执行及特征 并发环境: 在一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的,就称这几个程序是并发执行的。 1. 程序的并发执行 在对一批程序进行处理时,可以并发执行。 例如,输入、计算、打印三个程序对一批作业进行处理时前趋关系图如下: 对于具有下述四条语句的程序段: S1: a∶=x+2 S2: b∶=y+4 S3: c∶=a+b S4: d∶=c+b 假设有一个程序由 S0~Sn+1个语句, 其中 S1~Sn语句是并发执行的,程序如下: S0; cobegin S1;S2;S3;...;SN coend; Sn+1; 三个并发执行程序的誊抄 get程序负责从输入序列f中读取字符 并送到缓冲区s中; copy程序把缓冲区s中的数据复制到缓冲区t中去; put程序从缓冲区t中取出数据打印。 输入f 输出g { If (f不为空) { Get(s,f) while (誊写未完成) { t=s cobegin put(t,g) Get(s,f) coend } } } 与时间有关的错误 假定f系列中有记录 f=(R1,R2,...,Rn) g=() 在誊抄完成后: f=() g=(R1,R2,...,Rn) 算法中的: copy≡t=s put ≡ put(t,g) get ≡ get(s,f) 与时间有关的错误 与时间有关的错误 copy,put,get三个程序段并发执行,就有六种组合: 1、copy;put;get 导致结果:g=(R1,R2) ? 2、copy;get;put 导致结果:g=(R1,R2) ? 3、put;copy;get 导致结果:g=(R1,R1) ? 4、put;get;copy 导致结果:g=(R1,R1) ? 5、get;copy;put
文档评论(0)