资源预览内容
第1页 / 共373页
第2页 / 共373页
第3页 / 共373页
第4页 / 共373页
第5页 / 共373页
第6页 / 共373页
第7页 / 共373页
第8页 / 共373页
第9页 / 共373页
第10页 / 共373页
亲,该文档总共373页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2019/5/24,1,2.1 进程的引入 2.2 进程和线程的描述 2.3 进程控制 2.4 进程调度 2.5 死锁 2.6 进程同步、互斥与通信 2.7 Windows Server 2003 进程的相关概念 2.8 Windows Server 2003的线程调度 2.9 中断和异常处理 2.10 Windows Server 2003的同步与互斥机制 2.11 进程通信本地过程调用(LPC),第2章 进程管理,2019/5/24,2,计算机系统中,最宝贵的资源是CPU。为了提高它的利用率,需要引入多道程序设计的概念。当内存储器中同时有多个程序存在时,如果不对人们熟悉的“程序”概念加以扩充,就无法刻画多个程序共同运行时系统呈现出的特征。因此,在本章将给出操作系统中的重要概念:“进程”。它将是在多道程序运行环境下,系统资源分配和独立运行的基本单位。,2019/5/24,3,2.1 进程的引入,2.1.1 前趋图 2.1.2 程序的顺序执行 2.1.3 并发执行,2019/5/24,4,2.1.1前趋图,概念: 前趋图是一个有向无循环图。 要求 每个结点可用于表示一条语句、一个程序段等 结点间的有向边表示在两个结点之间存在的前趋关系 -=(Pi,Pj)|Pi必须在Pj开始之前完成 用途: 表示程序的执行顺序 例如: 图2-1所示:(a)示前趋图,(b)不是前趋图,2019/5/24,5,前趋图,1,2,3,4,5,6,7,2,1,3,初始结点,(b),终止结点,(a),2019/5/24,6,2.1.2程序的顺序执行,程序的顺序执行如图 在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。一道程序执行完后另一道才能开始。,2019/5/24,7,程序的顺序执行,在早期的单道程序系统中,编制一个程序时,通常是按顺序进行设计:先安排输入语句,然后是对输入数据进行处理的语句,最后安排数据处理结果的输出语句。这就是人们所习惯的传统的顺序程序设计方法。程序在执行时也是按顺序依次执行各条语句,而不必考虑其他的用户程序。我们看下面三条语句的程序段: S1:x=a+b; S2:y=x+c; S3:z=y+d; 在上面三条语句中,S1、S2、S3必须按顺序依次执行,S2必须在x赋值后才能执行,S3必须在y赋值后才能执行。,2019/5/24,8,程序顺序执行的特点,顺序性:一个程序开始执行必须要等到前一个程序已执行完成。绝对不可能出现在一个程序运行过程中,又夹杂进另一个程序执行的现象存在。如图所示。假定有三个程序,每个程序都是前后占用CPU执行一段时间,中间要求打印输出。具体是:程序A所需时间为(4,2,3),程序B所需时间为(5,4,2),程序C所需时间为(3,3,4)。不难看出,总共需要30个时间单位,才能把它们执行完毕。从横坐标上看,在时间区间(46)、(1418)以及(2326)中,CPU为了等待打印结束,在那里空闲等待。,2019/5/24,9,程序顺序执行的特点,封闭性:程序一旦开始执行,其计算结果不受外界因素影响。任何时候,位于内存中的程序可以使用系统中的一切资源,不可能有其他程序与之竞争。,2019/5/24,10,程序顺序执行的特点,可再现性:程序的结果与它的执行速度无关(即与时间无关),只要执行环境和初始条件相同,当多次重复执行一个程序时,无论不停的执行还是“走走停停”,一定会得到相同的结果。,2019/5/24,11,2019/5/24,12,2.1.3程序的并发执行,所谓程序的并发执行是指:若干个程序同时在系统中执行,这些程序的执行在时间上是重叠的,一个程序的执行尚未结束,另一个程序的执行已经开始。,并发与并行概念的区别? Concurrency,parallel,2019/5/24,13,多道程序系统使处理机和外部设备,外部设备与外部设备之间可以并行工作,提高了系统资源的利用率和系统的吞吐量: 从上图(b)中可以看出,时刻6程序A打印完毕,按说应该继续执行,但是CPU已经分配给了程序B,因此程序A只能等到时刻9在程序B请求打印时,才能重新获得CPU。这就是说,在程序A执行过程时,夹杂进了程序B的执行,打破了程序执行的顺序性,内存中多个程序的执行过程被交织在一起。从宏观上看,好几个程序都在运行着(比如,在时间区间412,程序A和程序B都在做着自己的事情;在时间区间(46)、(913)以及(1517)中CPU和I/O设备都在并行工作 。,2019/5/24,14,我们来看一个例子:内存中同时驻留两个用户程序J1和J2,并假定J1占用CPU的优先级比J2高。它们在运行过程中需要用到设备D1和D2。在操作系统调度下,多道程序的运行情况如图2-5所示。J1需要先使用设备D1,J2从A时间点使用设备D2,J1在B点使用完D1后占用CPU运行,J2使用完D2后,准备使用CPU,但此时CPU被J1占用,J2优先级低于J1,因此等待系统调度,J1运行到D点要求使用设备D2,操作系统将J1撤下,将等待的J2投入CPU运行,J2运行到E点要求使用设备D1,操作系统将J2从CPU撤下,在F点J2重新要求占用CPU,于是操作系统将J2投入CPU运行,运行到G点时,J1使用完D2后,也要求占用CPU,因为J1的优先级比J2的高,因此,操作系统进行调度,将J2从CPU撤下,将J1投入CPU运行,到H点,J1运行结束,系统再调度J2,使之占用CPU继续运行。,2019/5/24,15,图 2-5 多道程序的执行,2019/5/24,16,由图2-5不难看出,在多道程序系统中,内存中同时驻留多道程序,从宏观上看是几道程序同时执行,但从微观上看则是几道程序交替执行,轮流占用CPU。我们把宏观上执行时间有重叠的几个程序称为并发程序。多道程序系统的实质就是把并发程序的执行引入到系统中。 相对于单道程序系统而言,并发程序的引入提高了系统资源的利用率。由于并发程序共享处理机、内存、外设、程序等系统资源,并发程序的执行就产生了与单道环境下的顺序程序执行不同的新特点。,2019/5/24,17,程序并发执行的特点,间断性 失去程序的封闭性 不可再现性,任何并发执行都是不可再现的吗?,2019/5/24,18,(1)间断性:在程序并发执行时,各个程序的执行已经不再可能完全依照自己的执行次序执行了: 如图2-4(b)中可以看出,时刻6程序A打印完毕,按说应该继续执行,但是CPU已经分配给了程序B,因此程序A只能等到时刻9在程序B请求打印时,才能重新获得CPU。这就是说,在程序A执行过程时,夹杂进了程序B的执行,打破了程序执行的顺序性,内存中多个程序的执行过程被交织在一起。从宏观上看,好几个程序都在运行着(比如,在时间区间412,程序A和程序B都在做着自己的事情;在时间区间1217,程序B和程序C都在做着自己的事情);而从微观上看,每个时刻CPU只能为一个程序服务,因此运行着的程序都是走走停停。,2019/5/24,19,(2)失去了程序的封闭性:系统资源不再由单个程序独占,因此资源的状态由多道程序的活动共同决定。 例如在航空订票系统中,某一班机的座位数N是一个公共变量,初值为0。在订票过程中,每卖出一个座位,N就执行加1操作,直到N的值与飞机上的座位数S相同,则表示飞机满员。假定有该系统的两个终端T1和T2,它们在订票过程中执行的并发进程分别为P1、 P2,在执行N+1操作时分别用到了内部通用寄存器R1和R2,售票过程如下:,2019/5/24,20,P1: A: 将N的值读到R1; R1执行加1操作; 将R1的值写回变量N; 若N=S,则不再出售该班机的票; P2: B: 将N的值读到R2; R2执行加1操作; 将R2的值写回变量N; 若N=S,则不再出售该班机的票; ,2019/5/24,21,P1和P2如果按顺序依次执行下来,那么,N值的增加量为2,但若P1在执行完A操作后,由于某种原因被中断,而让P2接着执行,那么,执行的结果就使得N值只加了1,而实际N值应该增2才正确。这样售票的结果就会多卖出一个座位,从而使有的乘客上不了飞机,造成乘客滞留机场,影响乘客的行程。因此,在并发程序共享某个公共变量时,变量的结果与程序的执行速度有关,与原来封闭式的程序执行已截然不同。,2019/5/24,22,(3)不可再现性:在多道环境中,即使初始条件相同,同一个程序多次执行的结果也可能不同 。 举例:为了了解某单行道的交通流量,在路口安放一个监视器,功能是有车通过该路段时,就向计算机发送一个信号。为计算机系统设计两个程序:程序A的功能是接收到监视器的信号时,就在计数单元COUNT上加1;程序B的功能是每隔半小时,将计数单元COUNT的值打印输出,然后清零。COUNT初始时为0,两个程序的描述如图2-6所示。,2019/5/24,23,图2-6,2019/5/24,24,因为现在是多道程序设计环境,程序A和程序B同时在内存。当然,内存中可能还会有其他的程序存在。由于执行的顺序性被打破了,这些程序的执行过程被交织在一起,没有任何规律可循。为了突出,单单挑出程序A和程序B来研究。在它们之间,不排除会有这样的执行顺序发生:A1A2B1B2A1A2B3,即在程序B做了B1和B2后,没有直接执行B3,而是中间插入了程序A的两个操作,这就出现了问题。,2019/5/24,25,假定系统在发生这一执行顺序前,情况一直正常,计数器COUNT里的值是9。现在由A1收到监视器发来的第10辆车通过的信息。于是由A2在COUNT上完成加1的操作,使得计数器COUNT取值为10。紧接着在B1延迟半小时后,由B2将COUNT中的10打印输出。这时又做A1,它此时收到的是第11辆车到达的信息,通过A2,COUNT里成为11。这时做B3,把COUNT清零。结果该系统把第11辆车漏掉了,少计算了一辆车。要重现这一情况是困难的,因为无法清楚何时会出现这种执行顺序,这恰好说明了结果再现性的不复存在。,2019/5/24,26,综上所述,在单道系统中可以用程序代表顺序程序的执行过程,但在多道系统中,程序的并行、制约等特征使得用程序这个静态概念已不能描述系统中的运行情况了。为此,在操作系统设计中引入了一个新的概念进程。,2019/5/24,27,2.2 进程的描述,2.2.1 进程的概念 2.2.2 进程的状态 2.2.3 进程实体 2.2.4 线程,2019/5/24,28,2.2.1 进程的定义,进程(Process)这个概念最早出现于60年代初期,首先在美国麻省理工学院的MULTICS系统和IBM公司的CTSS/360系统中引入。IBM公司把进程称作任务(Task),并在CTSS/360系统中实现了。这两个术语实际上是同一概念。 之所以引入进程的概念主要是为了描述系统中的各种并发活动,但由于并发活动的复杂性,使得人们对进程有着不同的侧重点,因此对进程的定义也有所不同,直到现在也未能统一。例如有:,2019/5/24,29,(1)一个进程是由伪处理机执行的一个程序; (2)任务是在控制程序管理下的基本的多道程序单位; (3)进程是这样的计算部分,它可以与别的进程并发执行; (4)程序在处理机上执行时所发生的即谓之进程; (5)进程是一个程序与其数据顺序通过处理机的执行所发生的活动; (6)进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。 我们认为上述诸定义中的最后一个定义较全面地反映了进程与数据、数据及处理机之间的关系。,2019/5/24,30,进程具有以下五大特征: (1)动态性:进程的实质是程序的一次执行过程,因此动态性是进程的一个重要特征。进程有一定的生命周期,主要表现为它是由“创建”而产生,由系统“调度”运行,最后由系统“撤消”而消亡。 (2)并发性:在一个系统中,可能同时存在多个进程,这些进程轮流占用CPU和各种系统
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号