




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机操作系统主讲教师:曹建秋 贺清碧课程主要内容课程主要内容操作系统引论(1章)进程管理(2-3章)存储管理(4章)设备管理(5章)文件管理(6章)操作系统接口(7章)系统安全性(9章)*分布式操作系统从进程的观点研究操作系统n把OS看作是由若干个可独立运行的程序和一个可对这些程序进行协调控制的核心(内核)组成。这些运行的程序称为进程,它是资源分配和独立运行的基本单位,每一进程都完成某一特定任务,而OS的内核则必须要控制和协调这些进程的运行,解决进程之间的通信,并从系统可并发工作为出发点,实现并发进程间通信,并解决由此带来的共享资源的竞争问题。Process Management Proce
2、ss Management 进程管理进程管理-第第2 2章章n进程的基本概念与控制n进程的基本概念n进程控制n线程的基本概念nUNIX中进程的描述与控制n进程同步与通信n进程同步n经典进程的同步问题n管程机制n进程通信nUNIX中进程的同步与通信n调度与死锁(第3章)本章作业本章作业2.1 进程的基本概念n前趋图n程序顺序执行n程序并发执行n进程的描述进程的定义、特征进程的状态(状态、状态转换 及挂起状态)进程控制块PCBProcess Management进程管理-processes 进程 返回目录一、前趋图的定义3有向无循环图,记DAG124567结点,可表一语句、程序段或进程前趋关系初始
3、结点终止结点前趋关系: P1 P2 , P2 P5 , P5 P7 P1 P3 , P3 P5 P1 P4 , P6 P7直接前趋直接后继Eg1: 以下三条语句的前趋图为: s1: a:=x+y s2: b:=a-5 s3: c:=b+1 Eg2: S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+6 s1s2s3s1s2s3s4返回二、程序顺序执行二、程序顺序执行n程序执行时,必须按照某种先后次序逐个执行程序执行时,必须按照某种先后次序逐个执行nEg s1: a:=x+y s2: b:=a-5 s3: c:=b+1n程序顺序执行时有如下特征:n顺序性n封闭性
4、n可再现性s1s2s3返回三、程序并发执行在处理一批作业时,有的程序可实现并发执行在处理一批作业时,有的程序可实现并发执行n n S1: a:=x+2 S2: b:=y+4 S3: c:=a+b S4: d:=c+6I1I2I3I4C1C2C3C4P1P2P3P4s1s2s3s4三、程序并发执行三、程序并发执行n程序并发执行时的特征n间断性n失去封闭性n不可再现性n(补充)(补充)程序并发执行的条件(Bernstein)()()()()()(211221 pWpWpWpRpWpR程序并发执行条件例题程序并发执行条件例题nEg S1: a:=x+2 S3: c:=a-b S2: b:=z+4 S
5、4: w:=c+1试利用Bernstein条件证明: (1)s1与s2并发执行;(2) s1与s3,s2与s3,s3与s4不能。解:各语句的读、写集分别为: R(S1)=x, W(S1)=a, R(S2)=z, W(S2)=b, R(S3)=a,b, W(S3)=c, R(S4)=c, W(S4)=w, 因为 R(S1) W(S2)=,R(S2) W(S1) = 且W(S1) W(S2) =所以由Bernstein条件,s1与s2并发执行。 同理可证s1与s3,s2与s3,s3与s4不能(略)。 返回一、进程的定义、特征一、进程的定义、特征1、进程进程process的定义的定义 1)进程是程序
6、的一次执行。 2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 3)进程是程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位。注:进程与程序的主要区别注:进程与程序的主要区别Process Management进程管理-processes 进程 进程与程序的主要区别进程与程序的主要区别1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态动态概念。2)程序的存在是永久存在是永久的。而进程则是有生命期进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。3)程序
7、仅是指令的有序集合指令的有序集合。而进程则由程序段、相关数据段程序段、相关数据段进程控制块(进程控制块(PCB)组成。4)进程与程序之间不是一一对应进程与程序之间不是一一对应。程序进程概念静态动态所在存储器外存内存存在时间永久有生命期组成有序指令程序段,数据段,PCB对应关系一个程序可对应多个进程一个进程可对应多个程序进程与程序的主要区别进程与程序的主要区别2、进程、进程process的基本特征的基本特征 (1)结构特征结构特征 为了描述和记录进程的运动变化过程,并使之能正确运行,每个进程都应配置了一个进程PCB。所以,从结构上看,每个进程(进程实体)都是由程序段、相关数据段及进程控制块(程序
8、段、相关数据段及进程控制块(PCB)组成。注:1.在早期UNIX版本中称进程的三个组成部分为“进程映像” 2.区别进程实体和进程 (2)动态性动态性 进程的实质是程序在处理机上的一次执行过程程序在处理机上的一次执行过程,因此是动态性的。所以动态性是进程的最基本的特征。同时动态性还表现在 进程则是有生命期进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤消而消亡。Process Management进程管理-processes 进程 一、进程的定义、特征一、进程的定义、特征(3)并发性并发性 指多个进程实体同时存在于内存中,能在一段时间内同时运行。 引入进程的目的就是为了
9、使进程能并发执行,以提高资源利用率,所以并发性是进程的重要特征,也是OS的重要特征。(4)独立性独立性 指进程是一个能独立运行的基本单位,也是系统进行资源分配和调度的独立单位。(5)异步性异步性 指进程以各自独立的、不可预知的速度向前推进。返回二、二、 进程状态进程状态 为了刻画了整个进程,可以将一个进程的生命周期划分为一组状态:1、进程的5种状态(三种基本状态三种基本状态)nnew新建/创建:进程正在创建中的状态nready就绪就绪: 进程已获得了除处理机以外的所有资源,等待分配处理机执行的等待状态。nrunning运行/执行执行: 当一个进程获得必要的资源并正在处理机上执行的状态。nwai
10、ting等待/阻塞阻塞: 正在执行的进程由于发生某事件而暂时无法执行下去,此时进程所处的状态。nterminated终止/撤消/退出:进程执行完毕,释放所占资源的状态。Process Management进程管理-processes 进程 进程在运行期间并非固定处于某个状态,而是不断从一个状态转换到另一个状态。n2 2、进程状态转换、进程状态转换3 3、进程的挂起状态、进程的挂起状态 在某些系统中,为了更好地管理和调度进程,引入了挂起状态:n挂起状态挂起状态/静止状态:静止状态: 程序在运行期间,由于某种需要,往往要将进程程序在运行期间,由于某种需要,往往要将进程暂停执行,使其静止下来,以满足
11、其需要。这种静止状暂停执行,使其静止下来,以满足其需要。这种静止状态就称为进程的挂起状态。态就称为进程的挂起状态。引起挂起状态的原因引起挂起状态的原因 终端用户的需要终端用户的需要:终端用户在自己程序运行中发现问题要求使正在 执行的进程暂停执行而使进程处于挂起状态。父进程的需要:父进程的需要:父进程为了考查和修改某个子进程,或者协调各子进 程间的活动,需要将该子进程挂起。操作系统的需要:操作系统的需要:操作系统为了检查运行中的资源使用情况或进行记 帐,而将某些进程挂起。对换的需要:对换的需要:为了提高内存的利用率,而将内存中某些进程挂起,以 调进其它程序运行。负荷调节的需要:负荷调节的需要:由
12、于工作负荷较重,而将一些不重要的进程挂起, 以保证系统能正常运行(实时操作系统) 返回控制进程的挂起与激活具有挂起状态的进程状态具有挂起状态的进程状态 在引入挂起状态后,就增加了挂起状态(静止状态)与非挂起状态(活动状态)间的转换,如图所示:活动就绪挂起就绪活动阻塞挂起阻塞执行进程调度时间片用完挂起激活挂起挂起事件发生事件发生等待事件激活返回三、进程控制块三、进程控制块Process Control Block (PCB)Process Control Block (PCB)进程控制块进程控制块PCBPCB 是操作系统为了管理和控制进程的运行而为每一个进程定义的一个数据结构,它记录了系统管理进
13、程所需的全部信息。系统根据PCB而感知进程的存在,PCB是进程存在的唯一标志。1 1、进程控制块、进程控制块PCBPCB的作用的作用是OS对并发执行的进程进行控制和管理的根据。也是系统用来感知进程存在的根据,即PCB是进程存在的唯一标志。Process Management进程管理-processes 进程 1、进程控制块PCB的作用2、进程控制块PCB中的信息3、进程控制块PCB的组织方式2 2、进程控制块、进程控制块PCBPCB中的信息中的信息 根据操作系统的要求不同,PCB所包含信息有些不同,但通常包含以下信息:进程标志符进程标志符:由系统创建进程时分配给进程的唯一标识号,通常为一整数,
14、称为进程号,用于区分不同的进程。其所属用户通常也为一整数,称为用户号。处理机状态(断点信息)处理机状态(断点信息):即处理机中各种寄存器(通用寄存器、PC、PSW等)的内容进程调度进程调度:记录了进程调度的相关信息(状态、优先级、事件等)。进程控制进程控制:记录了系统对进程控制的信息(程序和数据的地址、同步机制、资源清单、链接指针)Process Management进程管理-processes 进程 3 3、进程控制块、进程控制块PCBPCB的组织方式的组织方式 在一个系统中,通常存在着许多进程,它们所处的状态不同,为了方便进程的调度和管理,需要将各进程的PCB用适当方法组织起来。目前常用的
15、组织方式有:链接方式链接方式 图示 把同一状态的PCB链接成一个队列,这样就形成了就绪队列、阻塞队列等。索引方式索引方式 图示 将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB ,不同状态对应不同的索引表。 Process Management进程管理-processes 进程 返回1PCB90PCB89PCB77PCB6 PCB58PCB40PCB33PCB24PCB1执行指针就绪队列指针阻塞队列指针空闲队列指针按链接方式组织PCB按索引方式组织PCB1PCB90PCB89PCB77PCB6 PCB58PCB40PCB33PCB24PCB1执行指针就绪表指针阻塞表指针就绪索引
16、表阻塞索引表2.3 2.3 进程的控制进程的控制 进程控制是进程管理中最基本的功能,即对系统中所有的进程实施有效的管理,其功能包括进程的创建、撤消、阻塞与唤醒等,这些功能一般是由操作系统的内核来完成。补充:补充:OS OS 内核:内核:在现代OS中,常把一些功能模块(与硬件紧密相关的、常用设备的驱动程序及运行频率较高的)放在紧靠硬件的软件层次中,加以特殊保护,同时把它们常驻内存,以提高OS的运行效率,这部分功能模块就称OS的内核。内核是基于硬件的第一层软件扩充,它为系统控制和管理进程提供了良好的环境。Process Management进程管理-processes 进程 补充:处理机的执行状态
17、处理机的执行状态 为防止OS及其关键数据(如PCB等)不被用户有意或无意破坏,通常将处理机的执行状态分为两种Process Management进程管理-processes 进程 处理机状态特权(执行指令,访问)程序系统态系统态( (核心态核心态) ) 较高(一切指令,所有R及存储区)OS内核用户态用户态较低(规定指令,指定R及存储区)用户程序一、进程创建一、进程创建 一个进程可以创建若干个新进程,新创建的进程又可以创建子进程,为了描述进程之间的创建关系,引入了进程图(如下图所示:) 1 1、进程图、进程图:又称为进程树或进程家族树,是描述进程家族关系的一棵有向树。Process Manage
18、ment进程管理-processes 进程 ABDECF父进程祖先进程子进程2 2、引起进程创建的事件、引起进程创建的事件 在多道程序环境中,只有进程才可以在系统中运行。为了使一个程序能运行,必须为它创建进程。导致进程创建的事件有: 用户登录:用户登录:在分时OS中,用户在终端键入登录命令后,如是合法用户,则系统为该终端创建一进程,并插入就绪队列。 作业调度作业调度:在批处理OS中,当按某算法调度一作业进内存,系统为之分配必要资源,同时为该作业创建一进程,并插入就绪队列。 提供服务:提供服务:在程序运行中,若用户需某种服务,则系统创建一进程为用户提供服务,并插入就绪队列。 应用请求应用请求:在
19、运行中,由于应用进程本身的需求,自己创建一进程,并插入就绪队列。3 3、进程的创建进程的创建 操作系统一旦发现了要求创建进程的事件后,便调用进程创建原语create()按以下过程创建一新进程:申请一个空闲的申请一个空闲的PCBPCB为新进程分配资源为新进程分配资源对对PCBPCB初始化初始化将将PCBPCB插入就绪队列插入就绪队列返回一个进程标识号返回一个进程标识号 一个进程在完成其任务后,应加以撤消,以便及时释放其占有的各类资源。1 1、导致进程撤消的事件、导致进程撤消的事件u进程正常结束进程正常结束u进程异常结束进程异常结束u外界干预外界干预 如果系统中发生了要求撤消进程的事件,OS便调用
20、撤消原语去撤消进程。2 2、撤消原语可采用、撤消原语可采用2 2种撤消策略:种撤消策略:u只撤消指定的进程只撤消指定的进程u撤消指定进程及其所有的子孙进程撤消指定进程及其所有的子孙进程 二、二、进程的撤消进程的撤消Process Management进程管理-processes 进程 3 3、进程撤消的过程、进程撤消的过程Process Management进程管理-processes 进程 在运行?在运行?NYNY由标识符在由标识符在PCBPCB集中找集中找PCBPCB并读状态并读状态归还占有资源归还占有资源从所在队列从所在队列( (索引表索引表) )撤消撤消PCBPCB中止运行重置调度标志
21、中止运行重置调度标志终止所有子孙进程终止所有子孙进程有子孙进程?有子孙进程? 当一个进程期待的事件尙未出现时,该进程调用阻塞原语block()(功能:将进程由执行状态转为阻塞状态)将自己阻塞起来。对于处于阻塞状态的进程,当该进程期待的事件出现时,由其它相关进程调用唤醒原语wakeup()(功能:将进程由阻塞状态变为就绪状态)将阻塞的进程唤醒,使其进入就绪状态。1、引起进程阻塞和唤醒的事件、引起进程阻塞和唤醒的事件请求系统服务请求系统服务启动某种操作启动某种操作新数据尚未到达新数据尚未到达无新工作可做无新工作可做三、进程的阻塞与唤醒三、进程的阻塞与唤醒Process Management进程管理
22、-processes 进程 停止执行停止执行修改修改PCBPCB中的状态中的状态(执行(执行- -阻塞)阻塞)插入到相应的阻塞队列插入到相应的阻塞队列另调度一就绪进程,切换另调度一就绪进程,切换CPUCPU(保留阻塞进程的(保留阻塞进程的CPUCPU状态)状态)将阻塞进程移出阻塞队列将阻塞进程移出阻塞队列插入到就绪队列插入到就绪队列另调度一就绪进程,切换另调度一就绪进程,切换CPUCPU(保留阻塞进程的(保留阻塞进程的CPUCPU状态)状态)修改修改PCBPCB中的状态中的状态(阻塞(阻塞- -就绪)就绪)2、进程的阻塞过程、进程的阻塞过程3、进程的唤醒过程、进程的唤醒过程 当引起进程挂起的事
23、件发生时,系统就将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。当发生激活进程的事件时,系统就将利用激活原语active()将指定进程激活。1、引起进程的挂起与激活的事件引起进程的挂起与激活的事件四、进程的挂起与激活四、进程的挂起与激活Process Management进程管理-processes 进程 2、进程的挂起过程、进程的挂起过程检查该进程状态检查该进程状态修改修改PCBPCB中的状态中的状态* *(活动(活动- -静止)静止)复制复制PCBPCB至指定内存区域至指定内存区域运行?运行?另调度另调度一就绪进程一就绪进程3、进程的激活过程、进程的激活过程NY将挂起进
24、程从外存调入内存将挂起进程从外存调入内存决定是否需重新调度决定是否需重新调度修改修改PCBPCB中的状态中的状态* *(静止(静止- -活动)活动)活动就绪?活动就绪?返回目录* *2.7 2.7 线程线程 线程是近年来操作系统领域出现的一个非常重要的技术,其引入进一步提高了程序并发执行的程度,从而进一步提高了资源的利用率和系统的吞吐量。 线程的基本概念 线程间的同步和通信 内核支持线程和用户级线程 线程控制Process Management进程管理-processes 进程 进程进程线程线程引入引入目的目的能并发执行能并发执行, ,提高资源的利用率和提高资源的利用率和系统吞吐量系统吞吐量.
25、 .提高并发执行的程度,进一步提提高并发执行的程度,进一步提高资源的利用率和系统吞吐量高资源的利用率和系统吞吐量. .并发性并发性较低较低较高较高基本属性基本属性(调度)(调度)资源拥有的基本单位资源拥有的基本单位进程进程独立调度独立调度/ /分派的基本单位分派的基本单位进程进程资源拥有的基本单位资源拥有的基本单位进程进程独立调度独立调度/ /分派的基本单位分派的基本单位线程线程基本状态基本状态就绪就绪; ; 执行执行; ;等待等待就绪就绪; ;执行执行; ;等待等待拥有资源拥有资源资源拥有的基本单位资源拥有的基本单位进程进程资源拥有的基本单位资源拥有的基本单位进程进程系统开销系统开销创建创建
26、/ /撤消撤消/ /切换切换时空开销较大时空开销较大创建创建/ /撤消撤消/ /切换时空开销较小切换时空开销较小系统操作系统操作创建创建, ,撤消撤消, ,切换切换创建创建, ,撤消撤消, ,切换切换存在标志存在标志进程控制块进程控制块PCBPCB进程控制块进程控制块PCBPCB,线程控制块,线程控制块TCBTCB关系关系单进程单线程单进程单线程; ;单进程多线程单进程多线程; ;多进程单线程多进程单线程; ;多进程多线程多进程多线程一、线程的基本概念一、线程的基本概念进程间CPU的切换/上下文切换Process Management进程管理-processes 进程 Process Mana
27、gement进程管理-threads 线程 用户级线程用户级线程ULT核心级线核心级线程程KLT管理管理线程库线程库内核内核调度单位调度单位进程进程线程线程切换速度切换速度同一进程诸线程间切换,由线程同一进程诸线程间切换,由线程库完成,速度较快库完成,速度较快由内由内核完成,速度较慢核完成,速度较慢系统调用行为系统调用行为内核看作是整个用户进程的行为内核看作是整个用户进程的行为内核只看作该线程的行为内核只看作该线程的行为阻塞阻塞用户进程用户进程线程线程优点优点线程切换不调用内核,切换速度线程切换不调用内核,切换速度较快;调度算法可由应用程序定较快;调度算法可由应用程序定对多处理器,可同时调度同
28、对多处理器,可同时调度同一进程的多个线程,速度较一进程的多个线程,速度较快;阻塞是在线程一级快;阻塞是在线程一级缺点缺点阻塞在用户进程一级阻塞在用户进程一级同同- -进程内的线程切换速度慢进程内的线程切换速度慢二、线程的分类二、线程的分类三、三、Solaris OS 中的线程中的线程qSolaris 2:是UNIX的一种版本,92年以前仅支持传统的单线程的重型进程,现在已发展为可支持用户级、内核/核心级线程,对称多处理器和实时调度的OS。用户级线程用户级线程轻型进程轻型进程内核级线程内核级线程进程进程内核内核返回目录* *2.8 UNIX2.8 UNIX中进程的描述与控制中进程的描述与控制P3
29、23P323n进程的描述进程的描述n进程的数据结构进程的数据结构n进程的状态及其转换进程的状态及其转换n进程映像进程映像进程的数据结构进程的数据结构 UNIX系统V中,一个进程由程序区、数据区、栈区、共享存储区等若干区组成,同时设置PCB,PCB分为以下四部分:n进程表进程表:记录了进程的状态及有关控制信息等。nU U区:区:存放进程表项的一些扩充信息n进程区表进程区表:记录了进程每个区的起始虚地址及指向系统区表中对应区表项的指针。n系统区表:系统区表:记录了各区的类型、状态及在物理存储器中的地址信息等,以实现对区的管理。U区进程表a b c本进程区表系统区表abc进程的数据结构进程的状态及转
30、换进程的状态及转换 UNIX系统中,进程的状态(9种)及转换如图图10-410-4所示所示。n进程的九种状态进程的九种状态n核心态执行核心态执行n用户态执行用户态执行n内存中就绪内存中就绪n被剥夺状态被剥夺状态n就绪且换出就绪且换出n内存中睡眠内存中睡眠n睡眠且换出睡眠且换出n创建状态创建状态n僵死状态僵死状态85系统调用中断返回用户态执行返回用户态4962137抢占核心态执行僵死睡眠内存中睡眠睡眠且换出换出唤醒内存中就绪调度换出 换入唤醒就绪且换出内存不足内存足创建fork被抢占进程的映像进程的映像 UNIX系统中,进程是进程映像的执行过程,进程映像由三部分组成:n用户级上、下文用户级上、下
31、文 主要是用户程序,在系统中分为正文区、数据区、栈区和主要是用户程序,在系统中分为正文区、数据区、栈区和共享数据区。共享数据区。n寄存器上、下文寄存器上、下文 由由CPUCPU中一些寄存器的内容所构成。中一些寄存器的内容所构成。n系统级上、下文系统级上、下文 分静态(只有一个,大小不变)和动态两部分(大小可分静态(只有一个,大小不变)和动态两部分(大小可变)。变)。进程的控制进程的控制系统调用系统调用 unix系统向用户提供了一组系统调用,用户可利用这些系统调用来实现对进程的控制。nfork()fork()创建一新进程(创建一新进程(0 0进程由系统引导时建)进程由系统引导时建)nExec()
32、Exec()改变进程的原有代码改变进程的原有代码nExit()Exit()实现进程的自我终止实现进程的自我终止nWait()Wait()挂起进程,等待子进程终止挂起进程,等待子进程终止nGetpidGetpid()()获取进程标识符获取进程标识符nNice()Nice()改变进程的优先级改变进程的优先级返回目录 2.3 2.3 进程同步进程同步n进程同步进程同步是指对多个相关进程在执行次序上进行协调,它的目的是使系统中诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性;或系统中诸进程之间在逻辑上的相互制约的关系(直接的-同步;间接的互斥)。n用来实现同步的机制称为同步机制。如:
33、信号量机制;管程机制。 2.3 2.3 进程同步进程同步进程同步的基本概念进程同步的基本概念 两种形式的制约关系两种形式的制约关系 临界资源、临界区临界资源、临界区 同步机制应遵循的规则同步机制应遵循的规则信号量机制信号量机制 整型信号量整型信号量 记录型信号量记录型信号量 ANDAND型信号量集、一般信号量集型信号量集、一般信号量集信号量的应用信号量的应用 信号量实现进程互斥信号量实现进程互斥 信号量描述进程间的前趋关系信号量描述进程间的前趋关系返回目录一、进程同步的基本概念一、进程同步的基本概念1 1、两种形式的制约关系、两种形式的制约关系系统中诸进程之间在逻辑上存在着两种制约关系:n直接
34、制约关系(进程同步)直接制约关系(进程同步):即为完成同一个任务的诸进程间,因需要协调它们的工作而相互等待、相互交换信息所产生的直接制约关系。 n间接制约关系(进程互斥)间接制约关系(进程互斥) :是进程共享独占型资源而必须互斥执行的间接制约关系。n同步与互斥比较同步与互斥比较同同 步步互互 斥斥进程-进程进程-资源-进程时间次序上受到某种限制竞争到某一物理资源时不允许进程工作相互清楚对方的存在及作用,交换信息不一定清楚其进程情况往往指有几个进程共同完成一个任务往往指多个任务多个进程间通讯制约例:生产与消费之间,发送与接受之间,作者与读者之间,供者与用者之间例:交通十字路口,单轨火车的拨道岔2
35、 2、临界资源、临界区、临界资源、临界区n一次只允许一个进程使用的资源称为临界资源一次只允许一个进程使用的资源称为临界资源,如打印机,绘图机;变量,数据等,诸进程间采取互斥方式式实现对这种临界资源的共享,从而实现并行程序的封闭性。例例:有两个进程A和B,它们共享一个变量x,且两个进程按以下方式对变量X进行访问和修改: 其中R1和R2为处理机中的两个寄存器。A与B均对X+1,即X+2。若按另一顺序对变量进行修改:结果x只加了1.A: R1=X;B: R2=X;A: R1=R1+1; X=R1;B: R2=R2+1; X=R2;A: R1=X; R1=R1+1; X=R1;B: R2=X; R2=
36、R2+1; X=R2;(1 1)变量)变量X X必必需按临界资源需按临界资源处理。处理。(2 2)每个进程)每个进程中访问临界资中访问临界资源的那段代码源的那段代码称为临界区称为临界区2 2、临界资源、临界区、临界资源、临界区 为了保证临界资源的正确使用,可以把临界资源的访问过程临界资源的访问过程分成以下几部分: 进入区临界区退出区剩余区v进入区增加在临界区前面的一段代码,用于检查欲访问的临界资源此刻是否被访问。v退出区增加在临界区后面的一段代码,用于将临界资源的访问标志恢复为未被访问标志。v剩余区进程中除了进入区、临界区及退出区之外的其余代码。2 2、临界资源、临界区、临界资源、临界区 要进
37、入临界区的若干进程必须满足要进入临界区的若干进程必须满足:(1)一次只允许一个进程进入临界区(2)任何时候,处于临界区的进程不得多于一个(3)进入临界区的进程要在有限的时间内退出(4)如果不能进入自己的临界区,则应让出处理机资源解决临界区(互斥)问题的几类方法:解决临界区(互斥)问题的几类方法:(1)软件方法(2)硬件方法(3)P-V操作进入区临界区退出区剩余区同步机制3 3、同步机制应遵循的规则、同步机制应遵循的规则q 有空让进有空让进( (空闲让进)空闲让进): :当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程立即进入自己的临界区,以有效地利用临界资源。q
38、互斥(忙则等待)互斥(忙则等待): :当已有进程进入临界区时,表明临界资源正在被访问,因而其他试图进入临界区的进程必须等待,以保证对临界资源的互斥访问q 有限等待有限等待: :对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态.q 让权等待让权等待: :当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”。返回二、信号量机制解决临界区(互斥)问题的几类方法解决临界区(互斥)问题的几类方法n* *软件方法软件方法RepeatRepeat flagi:=true;turn:=j;flagi:=true;turn:=j; while(flagi an
39、d turn=j) while(flagi and turn=j) do no_op; do no_op; critical section critical section flagi:=false;flagi:=false; remainder section remainder sectionUntil falseUntil false遵循遵循“忙则等待忙则等待”;“有空让进有空让进”,但难但难度和局限性较大。度和局限性较大。u硬件方法硬件方法 用硬件方法来解决临界区问题,用硬件方法来解决临界区问题,即定义一些特殊指令,如即定义一些特殊指令,如TEST TEST 、SETSET、SWAP
40、SWAP等指令,有效地实现了等指令,有效地实现了进程互斥,但不满足进程互斥,但不满足“让权等待让权等待”。有效解决同步问题的方法有效解决同步问题的方法信号机制信号机制为临界资源加锁的方法二、信号量机制n信号量机制是荷兰科学家E.W.Dijkstra在1965年提出的一种同步机制,也称为P、V操作。由最初的整型信号量发展为记录型信号量,进而发展为信号量集。n整型信号量整型信号量n记录型信号量记录型信号量n信号量集(信号量集(AND信号量集、一般信号量集)信号量集、一般信号量集)1 1、整型信号量、整型信号量n整型信号量整型信号量非负整数,除了初始化外,只能通过两个原子操作waitwait和sig
41、nalsignal(P P,V V)来访问。nwaitwait和和signalsignal操作描述操作描述: wait(S)wait(S): while Swhile S 0 do no-op0 do no-op 测试有无可用资源 S:=S-1; S:=S-1; 可用资源数减一个单位 signal(S): S:=S+1;signal(S): S:=S+1; 主要问题主要问题:只要S S 0 0, waitwait操作就不断地测试(盲等),因而,未做到“让权等待”。 2 2、记录型信号量、记录型信号量n基本思想基本思想 1、设置一个代表资源数目的整型变量valuevalue(资源信号量) 2、设
42、置一链表L L用于链接所有等待的进程记录型信号量的数据结构记录型信号量的数据结构 Type semaphore=record value:integer; L: list of process; endwaitwait和和signalsignal操作描述操作描述: wait(S)wait(S): S.value:=S.value-1; S.value:=S.value-1; if S.value0 then block(S.L);if S.value0),一群生产者进程),一群生产者进程p1,p2,,pm,一群消费者进程,一群消费者进程c1,c2,,cm,如图所示。假定生产者和消费,如图所示。
43、假定生产者和消费者是相互等效,只要缓冲区未满,生产者就可以把产品送入缓冲区,者是相互等效,只要缓冲区未满,生产者就可以把产品送入缓冲区,类似地,只要缓冲区未空,消费者便可以从缓冲区取走产品并消耗它。类似地,只要缓冲区未空,消费者便可以从缓冲区取走产品并消耗它。生产者和消费者的同步关系将禁止生产者向满的缓冲区输送产品,也生产者和消费者的同步关系将禁止生产者向满的缓冲区输送产品,也禁止消费者从空的缓冲区提取产品。禁止消费者从空的缓冲区提取产品。 P1P2pmc1c2cmn设置两个同步信号量及一互斥信号量设置两个同步信号量及一互斥信号量empty:说明空缓冲单元的数目,其初值为有界缓冲区的大小说明空
44、缓冲单元的数目,其初值为有界缓冲区的大小n n。Full: 说明满缓冲单元的数目(即产品数目),其初值为说明满缓冲单元的数目(即产品数目),其初值为0.0.Mutex: 说明该有界缓冲区是一临界资源,必须互斥使用,说明该有界缓冲区是一临界资源,必须互斥使用, 其初值为其初值为1 1。 “ “生产者生产者消费者消费者”问题的解决问题的解决n“生产者生产者消费者消费者”问题的同步算法描述问题的同步算法描述 semaphore full=0; /*表示满缓冲区的数目表示满缓冲区的数目*/ semaphore empty=n; /*表示空缓冲区的数目表示空缓冲区的数目*/ semaphore mute
45、x=1; /*表示对缓冲区进程操作的互斥信号量表示对缓冲区进程操作的互斥信号量*/Main() cobegin producer(); consumer(); coend “ “生产者生产者消费者消费者”问题的解决问题的解决 while(true) while(true) 生产一个产品生产一个产品; ; p(empty); p(empty); P(mutex P(mutex); ); 将一个产品送入缓冲区;将一个产品送入缓冲区; V(mutexV(mutex);); V(full); V(full); Producer() while(true) while(true) p(full); p(
46、full); P(mutex P(mutex); ); 从缓冲区取走一个产品从缓冲区取走一个产品; ; V(mutex V(mutex);); V(empty); V(empty); 消费一个产品;消费一个产品; consumer()“生产者生产者- -消费者消费者”问题中应注意问题中应注意1. 互斥信号量的P,V操作在每一程序中必须成对出现.2. 资源信号量(full,empty)也必须成对出现,但可分别处于不同的程序中.3. 多个P操作顺序不能颠倒.4. 先执行资源信号量的P操作,再执行互斥信号量的P操作,否则可能引起进程死锁.5. 它是一个同步问题: (1)消费者想要取产品,有界缓冲区中
47、至少有一个单元是满的。 (2)生产者想要放产品,有界缓冲区中至少有一个是空的。6. 它是一互斥问题 有界缓冲区是临界资源,因此,各生产者进程和各消费者进程必须互斥执行。返回2 2、“哲学家进餐哲学家进餐”问题问题n问题描述:问题描述: 有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐毕,放下筷子又继续思考。n哲学家进餐问题可看作是并发进程并发执行时,处理共享资源的一个有代表性的问题。n semaphore stick5=1,1
48、,1,1,1; /*分别表示分别表示5支筷子支筷子*/ Main() cobegin philosopher(0); philosopher(1); philosopher(2); philosopher(3); philosopher(4); coend 哲学家进餐问题的解决哲学家进餐问题的解决 while(true) while(true) 思考思考; ; p(sticki); p(sticki); P(stick(i+1)%5); P(stick(i+1)%5); 进餐;进餐; V(sticki);V(sticki); V(stick(i+1)%5); V(stick(i+1)%5);
49、第第i个哲学家的活动算法个哲学家的活动算法philosopher(int i)返回说明:说明:1、此算法可以保证不会有相保证不会有相邻的两位哲学家同时进餐邻的两位哲学家同时进餐。2、若五位哲学家同时饥饿而各自拿起了左边的筷子,这使五个信号量stick均为0,当他们试图去拿起右边的筷子时,都将因无筷子而无限期地等待下去,即可能会引起死锁可能会引起死锁。3 3、“读者读者写者写者”问题问题n问题描述:问题描述: 一个数据对象(数据文件或记录)可被多个进程共享。其中,reader进程要求读,writer 进程要求写或修改。允许多个reader进程同时读共享数据,但绝不允许一个writer进程与其它的
50、reader进程或writer进程同时访问,即writer进程必须与其它进程互斥访问共享对象。n“读者读者写者写者”问题的同步算法描述问题的同步算法描述 设置一个共享变量和两个信号量:设置一个共享变量和两个信号量:共享变量Readcount:记录当前正在读数据集的读进程数目, 初值为0。读互斥信号量Rmutex :表示读进程互斥地访问共享变量 readcount,初值为1.写互斥信号量wmutex:表示写进程与其它进程(读、写) 互斥地访问数据集,初值为1. “ “读者读者写者写者”问题的解决问题的解决n“读者读者写者写者”问题的同步算法描述问题的同步算法描述 semaphore rmutex
51、=1; semaphore wmutex=1; int readcount=0; Main() cobegin reader(); writer(); coend “ “读者读者写者写者”问题的解决问题的解决 while(true) while(true) p(rmutex p(rmutex); ); if(readcount= =0) p(wmutex if(readcount= =0) p(wmutex););/ /* *第一位读者阻止写者第一位读者阻止写者* */ / readcount readcount+;+; V(rmutex V(rmutex);); 读数据集;读数据集; p(r
52、mutexp(rmutex); ); readcount readcount-; -; if(readcount= =0) v(wmutex if(readcount= =0) v(wmutex););/ /* *第末位读者允许写者进第末位读者允许写者进* */ / V(rmutex V(rmutex);); reader()修改修改readcount修改修改readcount while(true) p(wmutex); /*阻止其它进程(读、写)进阻止其它进程(读、写)进/ 写数据集;写数据集; V(wmutex); /*允许其它进程(读、写)进允许其它进程(读、写)进/writer()返
53、回2.5 管程机制n信号量机制实现进程同步的问题信号量机制实现进程同步的问题 用信号量机制实现进程间的同步和互斥,即方便又有效。但存在以下两个问题:v 每个访问临界资源每个访问临界资源的进程都必须自备同步操作(的进程都必须自备同步操作(P P、V V操作)操作),这使大量的同步操作分散在各个进程中,给系统的管理带来麻烦。给系统的管理带来麻烦。v会因同步操作使用不当而导致系统死锁会因同步操作使用不当而导致系统死锁。n解决方法解决方法-管程(管程(Monitors)Monitors) Dijkstra于1971年提出,为每个共享资源设立一个“秘书”来管理对它的访问。一切来访者都要通过秘书,而秘书每
54、次仅允许一个来访者(进程)来访问共享资源。这样既便于系统管理共享资源,又能保证进程的互斥访问和同步。1973年,Hanson和Hoare又把“秘书”概念发展为管程概念。 一、管程的基本概念基本思想基本思想 把访问某种临界资源的所有进程的同步操作都集中起来,构成一个所谓的“秘书秘书”进程(管程)进程(管程),凡是访问临界资源的进程,都需要报告 “秘书”,由秘书来实现诸进程的同步。管程的定义管程的定义 一个数据结构一个数据结构和在该数据结构上能被并发进程所执行的一组操作一组操作,这组操作能同步进程和改变管程中的数据。如下图所示。一、管程的基本概念条件变量条件变量 在管程机制中,当某进程通过管程请求
55、临界资源未能满足时,管程便调用wait原语使该进程等待,但等待的原因可能有多个,为了加以区别,在P,V操作前,引入条件变量加以说明。 (1 1)条件变量的定义格式)条件变量的定义格式 Var x,y: condition (2 2)对条件变量执行的两种操作)对条件变量执行的两种操作nWait操作 如x.wait用来将执行进程挂到与条件变量x相应的 等待队列上。nSignal操作 如x.signal用来唤醒与条件变量x相应的等待队列 上的一个进程。 二、用管程机制解决生产者二、用管程机制解决生产者消费者问题消费者问题1、建立Producer-consumer(PC)管程 Type produce
56、r-consumer=monitor var in,out,count:integer; buffer:array0,n-1 of item; notfull,notempty:condition; put(item); get(item); begin in:=out:=0; /* 初始化代码*/ count:=0; end管程中的两个条件变量:管程中的两个条件变量: (1) notfull 当缓冲区中不全满,该变量为真。 (2)notempty 当缓冲区中不全空,该变量为真。二、用管程机制解决生产者二、用管程机制解决生产者消费者问题消费者问题1、建立Producer-consumer(PC
57、)管程n put(item)过程 生产者利用此过程将自已的消息放到缓冲池中,若发现缓冲已满(count n),则等待。nGet(item)过程 消费者利用此过程将缓冲池中的消息取走,若发现缓冲已空(count 0),则等待。 put(item) put(item)Procedure entry put(item) begin if count n then full.wait; buffer(in):=nextp; in:=(in+1) mod n; count:=count+1; if empty.queue then empty.signal; end get(item) get(item
58、)Procedure entry get(item) begin if count 0 then empty.wait; nextc:=buffer(out); out:=(out+1) mod n; count:=count-1; if full.queue then full.signal; end2 2、生产者、生产者消费者问题的解决消费者问题的解决Producer:begin repeat produce an item in nextp; PC.put(item); until false endConsumer:begin repeat PC.get(item); consume the item in nextc; until false end返回目录 2.6 进程通信高级通信一、进程通信的类型一、进程通信的类型 进程通信是指进程之间的信息交换。根据所交换的信息量的多少分为: v低级通信低级通信 进程之间交换的信息量较少且效率低。如进程同步和互斥。v高级通信高级通信 进程之间交换的信息量较多且效率高。又分:共享存储器系统共享存储器系统 指进程之间通过对共享存储区读写来交换数据。消息传递系统消息传递系统 指进程间的通信以消息为单位,程序员可通过通信原语 实现通信,按其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑施工事故责任解析试题及答案
- 智能驾驶技术发展考题试题及答案
- 数字运用与问题试题及答案
- 新能源汽车市场消费者需求变化的影响因素研究试题及答案
- 自然探索的幼儿园数学试题及答案
- 电动汽车的驾乘体验创新试题及答案
- 家具行业的数字化转型与设计创新及试题及答案
- 掌控节拍变化2025年乐理考试试题及答案
- 经济师农业试题及答案
- 旋律与和声创作过程中的灵感借鉴试题及答案
- 课前游戏-数字炸弹-模板可修改
- MOOC 电工学(电气工程学概论)-天津大学 中国大学慕课答案
- 电厂预防触电培训课件
- DB13-T1725-2013高粱抗蚜性评价技术规程
- 相关方需求和期望识别评价表
- 西南科技大学井巷工程课程设计样本
- 《养老护理员职业培训》课程标准
- 船舶修造业通用安全知识讲义课件
- 新生儿死亡讨论模板课件
- 曼娜小说全文的回忆
- 《精益生产培训》课件
评论
0/150
提交评论