进程管理概要课件_第1页
进程管理概要课件_第2页
进程管理概要课件_第3页
进程管理概要课件_第4页
进程管理概要课件_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程管理概要课件进程管理概要课件第二章 进程管理教学目的:本课为描述程序并发执行引入进程的概念,描述进程的特征、状态、状态的转换、进程控制块等基本概念。描述控制进程状态转换的OS内核和进程控制原语的功能。并发性是OS最重要的特征,进程是OS最基本最重要的概念,进程管理是OS的重点和难点。在进程的控制的基础上这课引入进程同步和进程同步机制的概念,它对并发执行进程的推进序列加以限制以保证互斥使用临界资源或协同完成任务,解决程序并发执行时带来结果不可再现问题。这课介绍了用软件、硬件、信号量机制、AND型信号量集、一般信号量集、管程等各种解决进程互斥同步问题的方法,重点介绍了信号量机制的概念和用信号量

2、机制解决进程互斥同步问题的方法 2第二章 进程管理教学目的:4教学要求:熟悉进程引入的必要性;熟练掌握进程的定义和特征,熟练掌握进程的三个基本状态和状态的转换,熟练掌握进程存在的唯一实体-进程控制块,熟悉进程上下文。熟悉内核的功能,掌握增加“挂起”、 “激活”操作的五个状态图和状态的转换,熟悉创建、撤消、阻塞、唤醒、挂起和激活进程控制原语的功能,一般了解线程的概念。3教学要求:熟悉进程引入的必要性;熟练掌握进程的定义和特征,熟熟悉进程间制约关系,掌握临界资源和临界区概念,掌握进程同步和进程同步机制,熟悉利用软件方法和硬件技术解决进程同步机制。熟练掌握信号量和P、V操作的概念、定义和实质,熟练掌

3、握利用信号量实现进程互斥和同步,熟悉用信号量描述前趋关系。掌握利用信号量解生产者-消费者问题、熟悉利用信号量解读者-写者问题等经典同步问题,掌握进程同步分析方法。了解用AND型信号集机制、一般信号集机制和管程解经典同步问题。熟悉进程通讯的概念和共享存储器系统、消息传送系统、管道通信系统三类高级通讯机制,掌握消息缓冲队列通信机制。 4熟悉进程间制约关系,掌握临界资源和临界区概念,掌握进程同步和进程的的基本概念程序顺序执行与特征程序并发执行与特征进程的引入进程状态及其转换进程控制块PCB进程上下文进程控制进程创建进程终止进程阻塞与唤醒进程的挂起与激活进程的互斥与同步软件方法硬件方法信号量方法管程方

4、法进程通信共享存储器消息传递管道通信线程5进程的的基本概念进程的互斥与同步7(一)进程的的基本概念(1) 程序顺序执行与特征一个较大的程序通常都由若干个程序段组成,程序在执行时,各程序段必须按照先后次序逐个执行。程序各程序段先后执行次序关系可用前趋图表示。前趋图是一个有向无循环图,图由结点和结点间有向边组成,结点代表各程序段操作,而结点间的有向边表示两程序段操作之间存在的前趋关系(“-”)。两程序段Pi和Pj的前趋关系表示成Pi-Pj,Pi是Pj的前趋,Pj是Pi的后继。 P1C1I1 I2C2P26(一)进程的的基本概念(1) 程序顺序执行与特征 P1C1I程序顺序执行与特征程序顺序执行特征

5、: 顺序性:程序各程序段严格按照规定的顺序执行。 封闭性:程序执行时机内各资源只受该程序控制而改变,执行结果不受外界因素影响。 可再现性:只要程序执行环境和初始条件相同,程序多次执行,可获得相同结果。7程序顺序执行与特征程序顺序执行特征:9(2)程序并发执行与特征 在计算机系统支持并行操作时,如采用多道程序设计技术,则内存中多道程序处于并发执行状态。如上述有三个程序段的作业类,虽然每个作业有前趋关系的各程序段不能在系统CPU和输入输出各部件并行执行,但一个作业没有前趋关系的程序段或不同作业的程序段可以分别在CPU和各输入输出部件上并行执行。8(2)程序并发执行与特征 在计算机系统支持并行操作程

6、序并发执行与特征 四个上述三个程序段类的作业并发执行的前趋图如下图所示:C3I1I2I3I4C1C2C4P1P2P3P49程序并发执行与特征 四个上述三个程序段类的作业并发执行的前程序并发执行与特征程序并发执行特征:间断性:程序在并发执行时,由于它们共享资源或为完成同一项任务而相互合作,使在并发程序之间形成了相互制约的关系。相互制约将导致并发程序具有“执行-暂仃-执行”这种间断性活动规律。失去封闭性:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的执行已失去了封闭性。10程序并发执行与特征程序并发执行特征:12程序并发执行与特征不可再现性:程序

7、在并发执行时,由于失去了封闭性,也将导致失去结果的可再现性。即程序经过多次执行,虽然其各次的环境和初始条件相同,但得到的结果却各不相同。例1:观察者/报告者11程序并发执行与特征不可再现性:程序在并发执行时,由于失去了封程序并发执行与特征观察者: 报告者:begin begin repeat repeat wait a car go through deley a time N=N+1; Print N ; N=0 ; until untilend end初始N=n时不同执行序列: N=N+1; Print N; Print N ; Print N ; N=0 ; N=N+1 ; N=0 ;

8、N=N+1 ; N=0 ;结果各不相同: 打印n+1,N=0; 打印n,N=1; 打印n,N=0;与执行速度有关12程序并发执行与特征观察者: 例2 与时间有关的错误:一飞机订票系统,两个终端,执行T1、T2进程T1 : T2:. .Read(x); Read(x);if x=1 then if x=1 then x:=x-1; x:=x-1;write(x); write(x);. .程序并发执行与特征中断13例2 与时间有关的错误:一飞机订票系统,两个终端,执行T1例3银行的联网储蓄业务允许储户同时用储蓄卡和存折对同一帐户进行存取款操作,如果某储户同时(ATM,柜台)办理两笔存款业务(10

9、00,2000)从系统的角度看,有两个进程将同时对储户余额等数据进行修改。如果两个进程将同时对储户余额等数据进行修改。如果两个进程同时读出原余额(假设为5000),两个进程分别将最新余额修改为6000和700014例316分析及措施最后,储户余额可能为6000,或7000,显然都不正确。原因:两个进程同时修改同一数据,而没有进行有效控制。正确方法:如果有多个进程需要同时修改某一数据,系统必须控制,一次仅允许一个进程完成读数据,并修改数据两件事以后,才允许别的进程对同一数据的读和修改操作。15分析及措施17通过上述例子可见,采用多道程序并发 设计技术的操作系统对诸进程的并发控制是非常重要和必须的

10、。16通过上述例子可见,采用多道程序并发 设计技术的操作系统对诸进(3)进程的引入 由于程序在并发执行时,各次执行的结果不同,所以用“程序”这个概念已无法描述程序的并发执行,所以必须引入新的概念-进程来描述程序的并发执行。进程这一术语最早由麻省理工学院著名的操作系统MULTICS中提出。 进程定义:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位”。17(3)进程的引入 由于程序在并发执行时,各次执行的结果不同进程的引入进程的特征:结构特征:从结构上,进程实体由程序段、数据段和进程控制块三部分组成,UNIX中称为“进程映象”。进程描述进程控制块PCB程序段数据结构集18进程的

11、引入进程的特征:进程描述进程控制块PCB程序段数据结构动态性:动态性是进程的最基本特征,它是程序执行过程,它是有一定的生命期。它由创建而产生、由调度而执行,因得不到资源而暂仃,并由撤消而死亡。而程序是静态的,它是存放在介质上一组有序指令的集合,无运动的含义。并发性:并发性是进程的重要特征,同时也是OS的重要特征。并发性指多个进程实体同存于内存中,能在一段时间内同时执行。而程序是不能并发执行。19动态性:动态性是进程的最基本特征,它是程序执行过程,它是有一进程的引入独立性:进程是一个能独立执行的基本单位,即是一个独立获得资源和独立调度的单位,而程序不作为独立单位参加执行。异步性:进程按各自独立的

12、不可预知的速度向前推进,即进程按异步方式进行,正是这一特征,将导致程序执行的不可再现性,因此OS必须采用某种措施来限制各进程推进序列以保证各程序间正常协调执行。20进程的引入22程序与进程的区别与联系进程是程序的一次执行,是一个动态的概念,程序是完成某个特定功能的指令的有序序列,是一个静态的概念 一个进程可以执行一个或几个程序,同一程序也可能由多个进程同时执行进程是系统进行资源分配和调度的一个独立单位,程序则不是 程序可以作为一种软件资源长期保存,而进程是程序的一次执行过程,它是临时的,有生命期的 21程序与进程的区别与联系进程是程序的一次执行,是一个动态的概念(4)进程状态及其转换1. 进程

13、的三个基本状态执行态(Running):当一个进程在处理机上执行时,则称该进程处于执行状态。就绪态(Ready):一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可执行,则称此进程处于就绪状态。阻塞态(Blocked):(又称挂起状态、等待状态):一个进程正在等待某一事件发生(例如请求IO而等待IO完成等)而暂时仃止执行,这时即使把处理机分配给进程也无法执行,故称该进程处于阻塞状态。22(4)进程状态及其转换1. 进程的三个基本状态24执行就绪阻塞进程的状态及其转换调度时间片完I/O请求I/O完成进程状态及其转换23执行就绪阻塞进程的状态及其转换调度时间片完I/O请求I/O完进程状态及

14、其转换 三个基本状态之间可能转换和转换原因如下:就绪态执行态:当处理机空闲时,进程调度程序必将处理机分配给一个处于就绪态的进程 ,该进程便由就绪态转换为执行态。执行态阻塞态:处于执行态的进程在执行过程中需要等待某一事件发生后(例如因IO请求等待IO完成后),才能继续执行,则该进程放弃处理机,从执行态转换为阻塞态。24进程状态及其转换 26进程状态及其转换阻塞态就绪态:处于阻塞态的进程,若其等待的事件已经发生,于是进程由阻塞态转换为就绪态。执行态就绪态:处于执行状态的进程在其执行过程中,因分给它的处理机时间片已用完,而不得不让出(被抢占)处理机,于是进程由执行态转换为就绪态。 而阻塞态执行态和就

15、绪态阻塞态这二种状态转换不可能发生。25进程状态及其转换阻塞态就绪态:处于阻塞态的进程,若其等备菜完成开炒炒另一个菜时落选没有酱油买来酱油就绪炒菜阻塞炒菜的三态模型26备菜完成开炒炒另一个菜时落选没有酱油买来酱油就绪炒菜阻塞炒菜系统中各进程状态的分布和管理处于执行态进程:如系统有一个处理机,则在任何一时刻,最多只有一个进程处于执行态。处于就绪态进程:一般处于就绪态的进程按照一定的算法(如先来的进程排在前面,或采用优先权高的进程排在前面)排成一个就绪队列。处于阻塞态进程:处于阻塞态的进程排在阻塞队列中。由于等待事件原因不同,阻塞队列也按事件分成几个队列。27系统中各进程状态的分布和管理处于执行态

16、进程:如系统有一个处理例例:一个只有一个处理机的系统中,OS的进程有执行、就绪、阻塞三个基本状态。假如某时刻该系统中有10个进程并发执行,在略去调度程序所占用时间情况下试问:这时刻系统中处于执行态的进程数最多有几个?最少有几个?这时刻系统中处于就绪态的进程数最多有几个?最少有几个?这时刻系统中处于阻塞态的进程数最多有几个?最少有几个?28例例:一个只有一个处理机的系统中,OS的进程有执行、就绪、阻解解:因为系统中只有一个处理机,所以某时刻处于执行态的进程数最多只有一个。而最少可能为0,此时其它10个进程一定全部排在各阻塞队列中,在就绪队列中没有进程。而某时刻处于就绪态的进程数最多只有9个,不可

17、能出现10个情况,因为一旦CPU有空,调度程序马上调度,当然这是在略去调度程序调度时间时考虑。处于阻塞态的进程数最少是0个。29解解:因为系统中只有一个处理机,所以某时刻处于执行态的进程数4。系统中各进程状态转换影响执行 阻塞就绪执行 阻塞就绪 A进程 B进程 C进程 D进程执行 执行 阻塞就绪阻塞就绪进程状态及其转换304。系统中各进程状态转换影响执行 阻塞就绪执行 阻塞就绪进程状态及其转换 在一个多道程序设计的系统中,各进程状态转换会互相影响。例如系统中一个执行态的进程A发生I/O请求后要等待I/O完成,它的状态也由执行态转换为阻塞态,此时进程调度程序就会按照一定的算法,在就绪队列中选一个

18、进程B,将处理机分给它,该B进程的状态也由就绪态转换为执行态。如一个进程C等待的事件完成,则它的状态由阻塞态转换为就绪态,它也从阻塞队列中抽出插入就绪队列中。如进程 C从阻塞态转换为就绪态时,有一个进程D在CPU上执行。而系统采用抢占式调度算法,进程C的优先级又高于正在CPU上执行的进程D的优先级,则要发行抢占调度。即接下去的操作时由进程调度程序将正在执行的进程D由执行态转换为就绪态,插入就绪队列。31进程状态及其转换 在一个多道程序设计的系统中,各进程状 除此之外,在实际的系统中,将进程的状态进一步细分为五个状态,除了上述三个状态之外,增加了创建和退出两个状态。新建状态(New):进程还在创

19、建过程中,还不能运行。这时,操作系统要建立PCB、建立资源表、分配资源、建立地址空间表。终止状态(Exit):进程运行结束,系统回收所占用资源。2、五态模型32 除此之外,在实际的系统中,将进程的状态进一步细分为五五态模型创建新建提交就绪调度执行释放终止等待事件阻塞事件出现落选33五态模型创建新建提交就绪调度执行释放终止等待事件阻塞事件出现问题:多个进程竞争系统资源内存资源紧张无就绪进程,处理机空闲:I/O的速度比处理机的速度慢的多,可能出现所有进程阻塞等待I/O34问题:多个进程竞争系统资源内存资源紧张36解决办法 把某些进程挂起(suspend),对换到磁盘镜像区中,暂时不参与进程调度,起

20、到平滑系统操作负荷的目的。35解决办法 把某些进程挂起(suspend),对换到磁盘镜像3、七态模型进程增加了两个新状态:挂起就绪态(ready suspend)表明进程具备运行条件但目前在二级存储器中,当它被对换到主存才能被调度执行。挂起等待态(blocked suspend) 表明进程正在等待某一个事件且在二级存储器中。363、七态模型进程增加了两个新状态:38挂起原因引入原因终端用户请求父进程请求(考察、修改、协调)负荷调节需要操作系统需要(监察资源使用情况或记账)37挂起原因引入原因39挂起等待事件结束出现等待事件解除挂起挂起落选选中运行态就绪态等待事件结束终止态新建态挂起就绪态解除挂

21、起挂起挂起等待态等待态提交提交七状态进程状态及其转换如果当前不存在就绪进程,那么至少有一个等待态进程将被对换出去成为挂起等待态;操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态 引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态 当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。 操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态 当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块

22、自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化 挂起当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占CPU,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己 提交考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态 38挂起等待事件结束出现等待事件解除挂起挂起落选选中运行态就绪态七状态进程状态及其转换活动就绪 静止就绪活动阻塞 静止阻塞静止就绪 活动就绪静止阻塞 活动阻塞39七状态进程状态及其转换活动就绪 静止就绪41(5)进程控

23、制模块PCB 1进程控制块的作用进程存在的唯一实体 由于进程控制块中记录进程存在和特性信息;PCB与进程同生死,创建一个进程就是为其建立一个PCB,当进程被撤消时,系统就回收它的PCB;OS对进程的控制要是根据PCB来进行,对进程管理也通过对PCB管理来实现,所以进程控制块是进程存在的唯一实体。 PCB常驻内存,系统将所有的PCB组织成若干个链表(或队列),存放在操作系统中专门开辟的PCB区内。40(5)进程控制模块PCB 1进程控制块的作用进程存在的唯进程控制块包含四类信息标识信息现场信息调度信息控制信息41进程控制块包含四类信息标识信息43标识信息 用于唯一地标识一个进程,分由用户使用的外

24、部标识符和被系统使用的内部标识号。 常用的标识信息有数字标识符、进程标识符、父进程的标识符、用户进程名、用户组名等。 “我是谁”进程控制模块(PCB)42标识信息 用于唯一地标识一个进程,分由用户使用的外部标现场信息(处理机状态) 保留进程运行时存放在处理器现场中的各种信息,进程让出处理器时必须把处理器现场信息保存到PCB中,当该进程重新恢复运行时也应恢复处理器现场。 现场信息包括通用寄存器内容、控制寄存器内容、指令计数器、程序状态字、用户堆栈指针、系统堆栈指针等。 “我周围是什么,我在干什么”进程控制模块(PCB)43现场信息(处理机状态) 保留进程运行时存放在处理器现场中进程调度信息 包括

25、进程状态(running、ready、blacked)、队列指针(就绪、阻塞队列),调度参数:进程优先级、进程已执行时间和已等待时间、等待事件和等待原因等。进程控制模块(PCB)44进程调度信息进程控制模块(PCB)46进程控制模块(PCB)进程控制信息 它包括程序和数据的地址、保证进程正常执行的同步和通信机制,如消息队列指针、信号量等互斥和同步机制等、 IO资源清单、链接指针(本进程pcb所在对列的下一个进程的pcb的首地址)。45进程控制模块(PCB)进程控制信息47 UNIX的PCB由Proc和user两个结构组成,proc常驻主存的系统区,是PCB中最基本和常用信息,而user可根据需

26、要换进换出。进程控制模块(PCB)46 UNIX的PCB由Proc和user两个结构组成进程控制模块(PCB)3、进程控制块的组织方式 在一个系统中,通常可拥有数十个、数百个乃至数千个PCB。为了能对它们加以有效的管理,应该用适当的方式将这些PCB组织起来。目前常用的组织方式有以下两种:链接方式索引方式47进程控制模块(PCB)3、进程控制块的组织方式49进程控制模块(PCB)48进程控制模块(PCB)50进程控制模块(PCB)49进程控制模块(PCB)51进程控制模块(PCB)PCB1PCB2PCB3PCB4PCB5PCB6PCB7执行指针就绪表指针阻塞表指针就绪索引表阻塞索引表50进程控制

27、模块(PCB)PCB1PCB2PCB3PCB4PCB5153(6) 进程上下文 进程是由程序、数据和进程控制块组成。进程上下文实际上是执行活动全过程的静态描述。具体说,进程上下文包括系统中与执行该进程有关的各种寄存器(例如:通用寄存器、程序计数器PC、程序状态寄存器PS等)的值,程序段在经编译之后形成的机器指令代码集(或称正文段)、数据集及各种堆栈值和PCB结构,如下图所示。 P C B 各种控制表指针 各种寄存器正文集数据集栈区52(6) 进程上下文 进程是由程序、数据和进程控制块组成。进所谓原语,是由若干条指令所组成的个指令序列用来实现某个特定的操作功能。这个指令序列的执行是连续的,具有不

28、可分割性在执行时也不可间断,直至该指令序列执行结束。 原语是操作系统核心(由一组程序模块所组成的、完成操作系统中基本功能)的一个组成部分。原语必须在管态下执行,并且常驻内存。 (二)进程控制(Process Control )原语53所谓原语,是由若干条指令所组成的个指令序列用来实现某个原语 原语是一种特殊的广义指令,它的功能是由系统通过一段不可分割的指令操作来完成,它又称原子操作,原语在核心态下完成。进程控制操作(创建、撤消、阻塞)大都为原语操作。54原语 原语是一种特殊的广义指令,它的功能是由系统通procedure block begin i:=EP; stop (i); i.statu

29、s:=“blockeda”; i.sdata:=WQ (r); insert (WQ (r), i); scheduler end 55procedure block57核心态和用户态 Intel公司的80386及更高级的CPU可以提供程序代码4层不同等级的权力,包括有Ring0-3。Ring0拥有最高的运行优先权,它访问所有系统内存和所有的CPU指令,而Ring1-3访问权限受到不同限制。Windows 98/NT为了与基于RISC的结构上兼容只使用两个特权级别:Ring0和Ring3 为了防止用户应用程序访问或更改重要的操作系统数据,Windows98/NT、UNIX使用两种处理器访问模式

30、:核心态和用户态。操作系统代码在核心态下执行,即在X86处理器Ring0执行,它有着最高的特权。而用户应用程序代码在用户态下执行,即在X86处理器Ring3中执行。56核心态和用户态 Intel公司的803用户应用程序(在Windows98/NT中以用户线程方式出现)运行用户程序一般代码时,它是在用户态下执行。但当程序要调用系统服务,例如要调用OS中负责从磁盘文件中读取数据的NT执行体例程时,它就要通过一条专门的指令(系统调用)来完成从用户态切换到核心态,OS根据该指令及有关参数,执行用户的请求服务。在服务完成后将处理器模式切换回用户态,并将控制返回用户线程。因此用户线程有时在核心态下执行,在

31、核心态下执行的是调用操作系统有关功能模块的代码。 57用户应用程序(在Windows98/NT中以用户线程方式出现进程切换与模式切换 模式切换不同于进程切换,它并不引起进程状态的变化,在大多数操作系统中,它也不一定引起进程的切换,在完成了中断调用之后,完全可以再通过一次逆向的模式切换来继续执行用户进程。 58进程切换与模式切换 模式切换不同于进程切换,它5961进程切换的步骤如下: 保存被中断进程的处理器现场信息。 修改被中断进程的进程控制块的有关信息,如进程状态等。 把被中断进程的进程控制块加入有关队列。 选择下一个占有处理器运行的进程。 修改被选中进程的进程控制块的有关信息。 根据被选中进

32、程设置操作系统用到的地址转换和存储保护信息。 根据被选中进程恢复处理器现场。60进程切换的步骤如下:62模式切换的步骤如下: 保存被中断进程的处理器现场信息。 根据中断号置程序计数器。 把用户状态切换到内核状态,以便执行中断处理程序。61模式切换的步骤如下:63有效合理地使用模式切换和进程切换有利于操作系统效率的提高。为此,大多数现代操作系统存在两个名词:系统进程(线程)和用户进程(线程)。它们并不是指两个具体的进程实体,而是指一个进程的两个侧面,系统进程是在核心态下执行操作系统代码的进程,用户进程在用户态下执行用户程序的进程。用户进程因中断和系统调用进入内核态,系统进程就开始执行,这两个进程

33、(用户进程和系统进程)使用同一个PCB,所以实质上是一个进程实体。但是这两个进程所执行的程序不同,映射到不同物理地址空间、使用不同堆栈。一个系统进程的地址空间中包含所有的系统核心程序和各进程的进程数据区,所以,各进程的系统进程除数据区不同外,其余部分全相同,但各进程的用户进程部分则各不相同。 62有效合理地使用模式切换和进程切换有利于操作系统效率的提高。为 63 65思考PCB和进程的代码数据放在一起吗?系统态和用户态系统空间和用户空间系统调用和普通调用的区别?系统调用会引起从用户态进入核心态64思考PCB和进程的代码数据放在一起吗?661、进程的创建 引起进程创建的事件在终端上交互式的登录(

34、合法则建立)为终端用户建立一进程作业调度。为被调度的作业建立进程操作系统创建一个服务进程。如要打印时建立打印进程应用请求由应用程序建立多个进程(二)进程控制(Process Control )651、进程的创建 引起进程创建的事件(二)进程控制(Proce进程创建的过程 在主进程表中增加一项,并从PCB池中取一个空白PCB。为新进程所有成分分配地址空间。为新进程分配资源,内存空间及其它各种资源。查找辅助存储器,找到进程正文段并装到正文区。初始化进程控制块,为新进程分配唯一进程标识符,初始化PSW。把进程加入某一就绪进程队列。通知操作系统的某些模块,如记账程序、性能监控程序。进程的创建 66进程

35、创建的过程进程的创建 682、进程的终止引起进程终止的事件正常结束 如Holt、logoff异常结束 如Protect error、overtime外界干预a.系统员kill进程;b.父进程终止;c.父进程请求。672、进程的终止引起进程终止的事件69进程终止的过程(1)检查进程状态;(2)若为执行态中止,且置调度标志为真。(3)有无子孙需终止。(4)归还资源给其父进程或系统。(5)从PCB队列中移出PCB,等待其他程序来搜集信息.68进程终止的过程703、进程的阻塞与唤醒引起进程阻塞和唤醒的事件1.请求系统服务而得不到满足时,如问系统请求打印。2.启动某种操作而需同步时:如该操作和请求该操作

36、的进程需同步运行(即非异步操作)。3.新数据尚未到达:如进程A写,进程B读,则A未写,完B不能读。4.无新工作可做。693、进程的阻塞与唤醒引起进程阻塞和唤醒的事件71进程阻塞过程:是进程自身的一种主动行为a.调block原语b.停止执行,修改PCB入阻塞队列(一个或多个),并转调度。唤醒过程其它相关进程完成。a.wakeup原语b.修改PCB,入就绪队列可见,有block原语,在其它进程中就应有wakeup原语。70进程阻塞过程:是进程自身的一种主动行为724、进程的挂起与激活一、进程的挂起过程由进程自己或其父进程调suspend原语完成,将该进程PCB移到指定区域,注意状态的改变,有可能要

37、重新调度。二、进程的激活过程。active原语(如在外存,调入内存,改变状态,根据情况看是否调度,如抢先或非抢先)。阻塞、唤醒一般由OS实现,而挂起与激活可由用户干预。714、进程的挂起与激活一、进程的挂起过程73讨论 抢占式调度 假如采用抢占式调度策略,则每当有新进程进入就绪队列时,例如执行唤醒原语,被唤醒进程从活动阻塞态转为活动就绪态时,或者执行激活原语,被激活进程从静止就绪态转为活动就绪态时,应检查是否要进行重新调度。即由调度程序将激活的进程(或唤醒的进程)与当前执行进程进行优先级比较,如果被激活的进程的优先级更高,则剥夺当前进程的执行,把处理机分配给刚激活的进程,否则就不必重新调度。

38、72讨论 抢占式调度74(三)进程同步(Synchronization of multiple processes)(1)进程同步的基本概念1。进程间制约关系 在多道程序环境下,系统中各进程以不可预测的速度向前推进,进程的异步性会造成了结果的不可再现性。为防止这种现象,异步的进程间推进受到二种限制:73(三)进程同步(Synchronization of mul资源共享关系(Cooperation Among Processes by Sharing)(间接相互制约) 多进程共享资源相互合作关系 (Cooperation Among Processes by Communication)(直接

39、相互制约) 在某些进程之间还存在合作关系,例如一个程序的输入、计算、打印三个程序段作为三个进程并发执行,由于这三个进程间存在着相互合作的关系,即先输入再计算、最后再打印的关系,所以这三个进程在并发执行时推进序列受到限制,要保证其合作关系正确,进程间这种关系称为同步关系。 74资源共享关系(Cooperation Among Proce 并发进程之间的竞争关系 进程的互斥 并发进程之间的协作关系 进程的同步进程的交往:竞争与协作75 并发进程之间的竞争关系进程的交往:竞争与协作77第一种是竞争关系 系统中的多个进程之间彼此无关,它们并不知道其它进程的存在,并且也不受其它进程的影响。但是,由于这些

40、进程共用了一套计算机系统资源,因而,必然要出现多个进程竞争资源的问题。进程资源进程竞争关系(间接制约关系)76第一种是竞争关系 系统中的多个进程之间彼此无关,它们并不2、进程之间竞争资源面临三个控制问题: 互斥( mutual exclusion ) 死锁( deadlock ) 饥饿( starvation ) 多进程共享资源,例如各进程争用一台打印机,这时各进程使用这台打印机时有一定的限制。每次只允许一个进程使用一段时间打印机,等该进程使用完毕后再将打印机分配给其它进程。这种使用原则称为互斥使用。772、进程之间竞争资源面临三个控制问题:79竞争资源饥饿假设有3个进程P1,P2 ,P3,每

41、个进程都需要周期性的使用资源R如果当前P1正在使用临界资源R,P2和P3因为等待R而阻塞。当P1退出临界区时,P2立即进入临界区执行,若P2还未退出临界区时,P1又申请使用临界资源R.假设P2退出临界区后,系统将R分给了P1,然后,当R空闲时,又将其分给P2,如此反复。 78竞争资源饥饿80竞争资源死锁当并发进程竞争使用同一资源时,它们之间就会发生冲突。如果操作系统将资源分配给其中的某一个进程使用,另一个进程就必须等待,直到申请的资源可用时,由操作系统分配给它。如果竞争某资源的进程太多,这些进程还必须等待在一个队列中,如就绪队列,阻塞队列等。一种极端的情况是,被阻塞进程永久得不到申请的资源,而

42、死锁。79竞争资源死锁当并发进程竞争使用同一资源时,它们之间就会发生P1P2R1R280P1P2R1R282第二种是协作关系某些进程为完成同一任务需要分工协作。比如:输入进程、加工处理、输出进程进程进程进程的同步是解决进程间协作关系(直接制约关系)的手段。81第二种是协作关系某些进程为完成同一任务需要分工协作。83进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程的执行依赖于协作进程的消息或信号,当一个进程没有得到来自于协作进程的消息或信号时需等待,直到消息或信号到达才被唤醒。 82进程同步指两个以上进程基于某个条件来协调它们的活动。一个进程进程互斥关系是一种特殊的进程同步关系,即逐

43、次使用互斥共享资源,是对进程使用资源次序上的一种协调。83进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源进程竞争资源首先必须解决“互斥”问题。某些资源必须互斥使用。如打印机,共享变量等。这类资源又称为临界资源,访临界资源的那段代码称为临界区。任何时刻,只允许一个进程进入临界区,以此实现进程对临界资源的互斥访问。3、临界资源和临界区84进程竞争资源首先必须解决“互斥”问题。某些资源必须互斥使用。临界资源 象打印机这类资源一次只允许一个进程使用的资源称为临界资源。属于临界资源有硬件打印机、磁带机等,软件有消息缓冲队列、变量、数组、缓冲区等。当然还有一类象磁盘等资源,它允许进程间共享,

44、即可交替使用,所以它称为共享资源,而临界资源又称独享资源。引起不可再现性是因为临界资源没有互斥访问。85临界资源87进程同步的概念临界区(critical sections) 多个进程共享临界资源时必须互斥使用,例如A和B两个进程都需要使用打印机,它们必须互斥使用。如果为了保证结果的正确性限制A、B二进程推进序列,规定进程A执行好再执行进程B,这样的限制就显得过死,因为它已不能保证进程A、B能并发执行,所以必须把限制减少到最少,以尽可能支持并发执行。为此把各进程分解,把访问临界资源的那段代码(称为临界区)与其它段代码分割开来,只对各种进程进入自己的临界区加以限制,即各进程互斥地进入自己的临界区

45、。 86进程同步的概念临界区(critical sections)8临界区定义:进程访问临界资源的那段代码。访问临界资源的描述:进入区:检查有无进程进入临界区:退出区:将访问标志复位RepeatEntry sectionCritical sectionExit sectionUntil false87临界区定义:进程访问临界资源的那段代码。89进程进入区临界区退出区阻塞队列唤醒88进程进入区临界区退出区阻塞队列唤醒90互斥使用临界资源当进程需要使用临界资源时,通过获得临界区的使用权实现的。首先,在“进入区”判断是否可以进入临界区,如果可以进入,则必须设置临界区使用标志,阻止其它后来的进程进入临

46、界区。后来的进程同过查看临界区使用标志,知道自己不能进入临界区,就进入阻塞队列,将自己阻塞。89互斥使用临界资源当进程需要使用临界资源时,通过获得临界区的使当临界区内的进程使用完毕,退出临界区时,即在“退出区”修改临界区使用标志,并负责唤醒阻塞队列中的一个进程,让其进入临界区。由于同一个临界资源在多个共享它的进程中将对应多个临界区,那么怎样才能保证诸进程间互斥地执行临界区呢?这就必须保证“临界区使用标志”是可被系统中所有进程共享的全局变量,而且诸进程对该标志的修改操作必须互斥进行。90当临界区内的进程使用完毕,退出临界区时,即在“退出区”修改临空闲让进。 当无进程进入临界区时,相应的临界资源处

47、于空闲状态,因而允许一个请 求进入临界区的进程立即进入自己的临界区。忙则等待。 当已有进程进入自己的临界区时,即相应的临界资源正被访问,因而其它试图进入临界区的进程必须等待,以保证进程互斥地访问临界资源。 临界区使用原则也称为互斥条件91空闲让进。临界区使用原则也称为互斥条件93有限等待。 对要求访问临界资源的进程,应保证进程能在有限时间进入临界区,以免陷入“饥饿”状态。让权等待。 当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等。临界区使用原则也称互斥条件92有限等待。临界区使用原则也称互斥条件94(四)进程互斥和同步方法软件方法硬件指令方法信号量机制管程等消息传递方法93(

48、四)进程互斥和同步方法软件方法95软件方法是指由进程自己,通过执行相应的程序指令,实现与别的进程的同步与互斥,无须专门的程序设计语言或操作系统的支持。实践证明,该方法很难正确控制进程间的同步与互斥,而且可能会大大地增加系统的额外开销,94软件方法是指由进程自己,通过执行相应的程序指令,实现与别的进硬件方法为了解决软件方法存在的不足,有人提出了硬件解决方法,通过屏蔽中断或采用专门的机器指令控制同步与互斥。与软件解决方法比较,这种方法减少了系统额外开销,但由于需要太强的硬件约束条件,以及可能导致进程饥饿与死锁现象,一直没有成为通用的解决方法。95硬件方法为了解决软件方法存在的不足,有人提出了硬件解

49、决方法,软件解决方法有很多种,为了说明设计并发程序时可能出现的典型错误,下面以Dekker算法为例,分析如何设计并改进一个互斥算法的过程96软件解决方法有很多种,为了说明设计并发程序时可能出现的典型错互斥与同步解决方法之一软件方法初步设想为了控制两个进程互斥进入临界区,可以让两个进程轮流进入临界区。当一个进程正在临界区执行时,另一个进程就不能进入临界区,而在临界区外等待。程序实现伪代码如下:97互斥与同步解决方法之一软件方法初步设想为了控制两个进程该算法设置一个公用整型变量turn,用于指示被允许进入临界区的进程编号,即若turn=0,表示允许P0进程进入临界区,若turn=1,表示允许P1进

50、程进入临界区Var turn:0.1;/*共享的全局变量*/ P0While turn0 do nothing;Turn:=1;P1While turn1 do nothing;Turn:=0;98该算法设置一个公用整型变量turn,用于指示被允许进入临界区保证了互斥问题1:“忙等”现象问题2:进程严格交替进入临界区,如果进程需要多次使用临界区,那么,使用临界区频率低的进程严重制约着使用临界区频率高的进程的执行速度。违背了”空闲让进 ”99保证了互斥101例如P0需要每10分钟使用一次临界区,P1需要每一分钟使用一次临界区假设trun 的初值为0,进程p0正好先请求进入临界区,并成功进入临界区

51、执行,这时,如果P1申请进入临界区,循环检测turn=0,不可以进入,只能“空”循环,等待。当P0退出临界区时,修改turn的值为1,P1循环检测到turn=1时,就可以进入临界区执行,退出临界区时,修改 turn=0100例如P0需要每10分钟使用一次临界区,P1需要每一分钟使用一例(续)根据假设,P1很快又需要进入临界区,但是P0却只能在分钟之后,按照turn 规定的顺序,进入临界区执行,退出时修改turn即,P1必须在临界区空闲情况下,等待分钟,才能使用临界区,这不符合互斥原则,降低了系统性能。101例(续)根据假设,P1很快又需要进入临界区,但是P0却只能在互斥与同步解决方法之一软件方

52、法第一次改进可以为临界区设置一个状态标志,标明临界区是否可用,当临界区空闲时,任何一个进程都能进入,但此时必须修改临界区标志为“被占用”,别的进程就不能进入临界区,当临界区使用完毕,必须修改该标志为“空闲”这样就不再使诸进程严格交替使用临界区,算法如下:102互斥与同步解决方法之一软件方法第一次改进可以为临界区设103105分析:第一次改进问题“忙等”问题2不能保证进程互斥进入临界区。问题出在检查、修改有间隔,不能连续操作。104分析:第一次改进问题出在检查、修改有间隔,不能连续操作。10互斥与同步解决方法之一软件方法第二次改进互斥算法的第一次改进不能实现“互斥”因为,进程首先检测临界区状态,

53、若“被占用”,则“忙等”,否则就直接进入临界区,从而,可能出现同时进入临界区的现象。能否让进程预先表明“希望进入临界区的态度”,然后,再检测临界区状态,算法如下:105互斥与同步解决方法之一软件方法第二次改进互斥算法的第一106108分析:第二次改进假设P0需要进入临界区,首先执行flag0:=true,再执行while flag1,若P1正在占用临界区,则P0忙等;否则,P0进入临界区。但是,如果此时P1未占用临界区,而与P0几乎同时需要使用临界区,则死锁107分析:第二次改进假设P0需要进入临界区,首先执行flag0互斥算法的第二次改进可能导致死锁,因为P0,P1”坚持自己的权利,执意进入

54、临界区,且互不谦让”.可以考虑,允许进程即表明需要进入临界区的”态度”,又能互相”谦让”.即首先表示自己需要使用临界区,再检测临界区的状态,若临界区被占用,可以等一小段时间再申请互斥与同步解决方法之一软件方法第三次改进108互斥算法的第二次改进可能导致死锁,因为P0,P1”坚持自己的flag1,flag2:boolean;flag1 := false; /* P1不在其临界区内 */flag2 := false; /* P2不在其临界区内 */process P1 beginflag1 := true;while flag2 do begin flag1:=false; isside1:=tr

55、ue; end;临界区;flag1 := false; end;process P2 beginflag2 := true;while flag1 do begin flag2:=false; isside2:=true; end;临界区;flag2 := false; end;算法3和算法2类似,它们的区别在于进入区操作是先修改后检查。这时标志flagI表示进程Pi想进入临界区,而不再表示进程Pi在临界区。109flag1,flag2:boolean;process P2flag1,flag2:boolean;flag1 := false; /* P1不在其临界区内 */flag2 := f

56、alse; /* P2不在其临界区内 */process P1 begin(1)flag1 := true;(3)while flag2 do begin (5) flag1:=false; (7) isside1:=true; end;临界区;flag1 := false; end;算法3和算法2类似,它们的区别在于进入区操作是先修改后检查。这时标志flagI表示进程Pi想进入临界区,而不再表示进程Pi在临界区。process P2 begin(2)flag2 := true;(4)while flag1 do begin (6)flag2:=false; (8)isside2:=true; end;临界区;flag2 := false; end;110flag1,flag2:boolean;算法3和算法2类似,分析-第三次改进P0,P1的”谦让”可能使它们都不能进入临界区.这种现象不是死锁,因为这种僵局不会是永久行为,某一时刻可能会自动解除.但是,这种现象也是不希望出现的.111分析-第三次改进P0,P1的”谦让”可能使它们都不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论