欢迎来到天天文库
浏览记录
ID:37440860
大小:1.77 MB
页数:228页
时间:2019-05-12
《计算机操作系统-进程管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章 进程管理2.1进程的基本概念2.2进程控制2.3进程同步2.4经典进程的同步问题2.5进程通信2.6线程教学目的:掌握操作系统的顺序进程和并发进程的各自特点掌握进程基本概念,进程的状态及转换掌握操作系统进程同步的概念掌握信号量机制了解操作系统进程同步的经典问题掌握利用信号量机制解决进程同步问题的方法教学难重点:进程基本概念,进程的状态及转换利用信号量机制解决进程同步问题的方法新课导入在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。操作系统所具有的四大特征也都是基于进程而形成的,并可从进程的观点来研究操作系统。显然,在操作
2、系统中,进程是一个极其重要的概念。因此,在这章中我们来学习进程。2.1进程的基本概念2.1.1程序的顺序执行及其特征1.程序的顺序执行一个程序由若干个程序段组成,而这些程序段的执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。例如对多个作业:I:输入C:计算P:打印S1:a:=x+y;S2:b:=a-5;S3:c:=b+1;2.1.1程序的顺序执行及其特征1.程序的顺序执行S1S2S3例如对一个程序的多条语句:图2-1(b)程序的顺序执行2.程序顺序执行时的特征(1)顺序性:处理机的操作严格按照程序所规定的顺序执行,即每一操作必须在上一个操作结束之后开始
3、。(2)封闭性:程序是在封闭的环境下执行的,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它。程序一旦开始执行,其执行结果不受外界因素影响。(3)可再现性:只要程序执行时的环境和初始条件相同,当程序重复执行时,都将获得相同的结果。优点:程序的编制、调试方便,缺点:计算机系统效率不高。2.1.1程序的顺序执行及其特征2.1.2前趋图前趋图(PrecedenceGraph)是一个有向无循环图,记为DAG(DirectedAcyclicGraph),用于描述进程之间执行的前后关系。结点:可用于描述一个程序段或进程,乃至一条语句;结点间的有向边:
4、则用于表示两个结点之间存在的偏序(PartialOrder,亦称偏序关系)或前趋关系(PrecedenceRelation)“→”。自反、反对称、传递→={(Pi,Pj)
5、PimustcompletebeforePjmaystart},如果(Pi,Pj)∈→,可写成Pi→Pj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。在前趋图中,把没有前趋的结点称为初始结点(InitialNode),把没有后继的结点称为终止结点(FinalNode)。此外,每个结点还具有一个重量(Weight),用于表示该结点所含有的程序量或结点的执行时间。在图2-1(a)和2-1(b
6、)中分别存在着这样的前趋关系:Ii→Ci→PiS1→S2→S3和图2-2前趋图对于图2-2(a)所示的前趋图,存在下述前趋关系: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-2(b)中却有着下述的前
7、趋关系:S2→S3,S3→S2这种前驱关系是不可能满足的。2.1.3程序的并发执行及其特征1.程序的并发执行若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重叠是很小的一部分,也称这几个程序段是并发执行的。PQR例:三个并发执行的程序段。2.1.3程序的并发执行及其特征1.程序的并发执行在图2-1中存在Ii→Ci→Pi前趋关系,以至对一个作业的输入、计算和打印三个操作,必须顺序执行,但并不存在Pi→Ii+1的关系,因而在对一批程序进行处理时,可使它们并发执行。i1p1ipoo1i2p2
8、o2i3p3o3t1t2t3进程时间在该例中存在下述前趋关系:Ii→Ci,Ii→Ii+1,Ci→Pi,Ci→Ci+1,Pi→Pi+1而Ii+1和Ci及Pi-1是重迭的,亦即在Pi-1和Ci以及Ii+1之间,可以并发执行。对于具有下述四条语句的程序段:S1:a:=x+2S2:b:=y+4S3:c:=a+bS4:d:=c+b2.程序并发执行时的特征1)间断性:2)失去封闭性:资源状态有多个程序改变3)不可再现性例如,有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时,都要做N:=N+1操作;程序B每执行一次时,都要执行Print(N)操作,然后再将N置成“
9、0”。A:while(1
此文档下载收益归作者所有