书签 分享 收藏 举报 版权申诉 / 62
上传文档赚钱

类型第2章进程管理21课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4915568
  • 上传时间:2023-01-25
  • 格式:PPTX
  • 页数:62
  • 大小:656.94KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第2章进程管理21课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    进程 管理 21 课件
    资源描述:

    1、2.22.2进程控制进程控制 进程控制就是对系统中的所有进程实施管进程控制就是对系统中的所有进程实施管理,进程控制一般用理,进程控制一般用原语来实现。一般由来实现。一般由OS内核来实现。内核来实现。所谓原语是一种特殊的系统功能调用,它所谓原语是一种特殊的系统功能调用,它可以完成一个特定的功能,其特点是原语执可以完成一个特定的功能,其特点是原语执行时不可被中断,既具有行时不可被中断,既具有“原子性原子性”。2023-1-251n因为:因为:为了对进程进行有效的管理和控制,操为了对进程进行有效的管理和控制,操作系统要提供若干基本的操作,以便能创建进作系统要提供若干基本的操作,以便能创建进程、撤消进

    2、程、阻塞进程和唤醒进程。这些操程、撤消进程、阻塞进程和唤醒进程。这些操作对于操作系统来说是最为基本、最为重要的。作对于操作系统来说是最为基本、最为重要的。为了保证执行时的绝对正确,要求它们以一个为了保证执行时的绝对正确,要求它们以一个整体出现,不可分割。也就是说,一旦启动了整体出现,不可分割。也就是说,一旦启动了它们的程序,就要保证做完,中间不能插入其它们的程序,就要保证做完,中间不能插入其他程序的执行序列。这就是所谓的原语。他程序的执行序列。这就是所谓的原语。2023-1-252常用的进程控制原语常用的进程控制原语n创建原语创建原语n终止终止原语原语n阻塞原语、唤醒原语阻塞原语、唤醒原语20

    3、23-1-2532.2.1进程的创建进程的创建 n进程图(Process Graph)n进程图是用于描述一个进程的家族关系的有向树(子进程,父进程)n子进程可以继承父进程所拥有的资源DEFGHBCIJKLMA2023-1-2542.2.1进程的创建进程的创建 n引起进程创建的事件引起进程创建的事件 u用户登录用户登录 u作业调度作业调度 u提供服务提供服务 u应用请求应用请求 n进程创建的过程进程创建的过程 u为新进程分配唯一的为新进程分配唯一的进程标识符进程标识符,并从,并从PCB队列中申请一个空闲队列中申请一个空闲PCB。u为新进程的程序和数据,以及用户栈分配相应的内存空间及其它为新进程的

    4、程序和数据,以及用户栈分配相应的内存空间及其它必要分配必要分配资源资源。u初始化初始化PCB中的相应信息,如标识信息、处理器信息、进程控制中的相应信息,如标识信息、处理器信息、进程控制信息等。信息等。u如果就绪队列可以接纳新进程,便将新进程加入到如果就绪队列可以接纳新进程,便将新进程加入到就绪队列就绪队列中。中。2023-1-2552.2.2进程的终止进程的终止n引起进程终止的事件引起进程终止的事件 u正常结束正常结束 u异常结束异常结束 u外界干预外界干预 n进程终止的过程进程终止的过程 u根据被终止进程的标识符,从根据被终止进程的标识符,从PCB集合中检索该进程的集合中检索该进程的PCB,

    5、读读出进程状态。出进程状态。u若该进程处于执行状态,则立即若该进程处于执行状态,则立即终止终止该进程的执行。该进程的执行。u若该进程有若该进程有子孙进程子孙进程,还要将其子孙进程终止,并准备重新分配,还要将其子孙进程终止,并准备重新分配CPU。u将该进程所占用的将该进程所占用的资源资源回收,归还给其父进程或操作系统。回收,归还给其父进程或操作系统。u将被终止进程的将被终止进程的PCB从所在队列中移出,并从所在队列中移出,并撤消该进程的撤消该进程的PCB。2023-1-2562.2.3进程的阻塞与唤醒进程的阻塞与唤醒n阻塞:阻塞:当一个进程所期待的某一事件尚未出当一个进程所期待的某一事件尚未出现

    6、时,该进程调用阻塞原语将自己阻塞。现时,该进程调用阻塞原语将自己阻塞。进程阻塞是进程的自身的一种主动行为。进程阻塞是进程的自身的一种主动行为。n唤醒:唤醒:处于阻塞状态的进程是绝不可能叫醒处于阻塞状态的进程是绝不可能叫醒它自己的,它必须由它的合作进程用唤醒原它自己的,它必须由它的合作进程用唤醒原语唤醒它。语唤醒它。2023-1-257进程的阻塞进程的阻塞n引起进程阻塞的事件引起进程阻塞的事件 u请求系统服务请求系统服务 u启动某种操作启动某种操作 u新数据尚未到达新数据尚未到达 u无新工作可做无新工作可做 n进程阻塞的过程进程阻塞的过程 u立即立即停止执行停止执行该进程。该进程。u修改修改PC

    7、B中的相关信息。把进程控制块中的运行状态由中的相关信息。把进程控制块中的运行状态由“执行执行”状态改为状态改为“阻塞阻塞”状态,并填入等待的原因,以及进程的各种状态,并填入等待的原因,以及进程的各种状态信息。状态信息。u把把PCB插入到插入到阻塞队列阻塞队列。根据阻塞队列的组织方式,把阻塞进。根据阻塞队列的组织方式,把阻塞进程的进程控制块插入到阻塞队列中。程的进程控制块插入到阻塞队列中。u转调度程序转调度程序重新调度重新调度,运行就绪队列中的其他进程。,运行就绪队列中的其他进程。2023-1-258进程的唤醒进程的唤醒n引起进程唤醒的事件引起进程唤醒的事件 u请求系统服务得到满足请求系统服务得

    8、到满足 u启动某种操作完成启动某种操作完成 u新数据已经到达新数据已经到达 u有新工作可做有新工作可做 n进程唤醒的过程进程唤醒的过程 u从从阻塞队列阻塞队列中找到该进程。中找到该进程。u修改该修改该PCB的相关内容。把阻塞状态改为就绪状态,删的相关内容。把阻塞状态改为就绪状态,删除等待原因等等。除等待原因等等。u把进程控制块插入到把进程控制块插入到就绪队列就绪队列。按照就绪队列的组织方。按照就绪队列的组织方式,把被唤醒的进程的式,把被唤醒的进程的PCB插入到就绪队列中。插入到就绪队列中。2023-1-259进程的唤醒进程的唤醒nBlock原语和原语和wakeup原语是一对作用刚原语是一对作用

    9、刚好相反的原语,因此,如果在进程中调好相反的原语,因此,如果在进程中调用了阻塞原语,则必须在与之相合作的用了阻塞原语,则必须在与之相合作的另一进程中或其他相关进程中安排唤醒另一进程中或其他相关进程中安排唤醒原语,以能唤醒阻塞进程。原语,以能唤醒阻塞进程。2023-1-25102.2.4进程的挂起与激活进程的挂起与激活n引起进程挂起的事件引起进程挂起的事件(suspend)u用户进程请求将自己挂起用户进程请求将自己挂起 u父进程请求挂起子进程父进程请求挂起子进程 n进程挂起的过程进程挂起的过程 u检查进程检查进程状态状态:F有活动就绪转为静止就绪F有活动阻塞转为静止阻塞u把该进程的把该进程的PC

    10、B复制到某指定的内存区域复制到某指定的内存区域u若进程正在执行,则转调度程序若进程正在执行,则转调度程序重新调度重新调度,运行就绪,运行就绪队列中的其他进程。队列中的其他进程。2023-1-2511进程的激活进程的激活(active)n引起进程激活的事件引起进程激活的事件 u父进程或用户进程请求将挂起进程激活父进程或用户进程请求将挂起进程激活 n进程激活的过程进程激活的过程 u将将进程进程调入内存调入内存u检查进程检查进程状态状态:F有静止就绪转为活动就绪F有静止阻塞转为活动阻塞u在抢占策略中,有可能转调度程序在抢占策略中,有可能转调度程序重新调度重新调度。2023-1-2512练习练习n为使

    11、进程由活动就绪转变为静止就绪,应为使进程由活动就绪转变为静止就绪,应用()原语;为使进程由执行状态转变为用()原语;为使进程由执行状态转变为阻塞状态,应利用()原语;为使进程由阻塞状态,应利用()原语;为使进程由静止就绪变为活动就绪,应利用()原语;静止就绪变为活动就绪,应利用()原语;为使进程从阻塞状态变为就绪状态,应利为使进程从阻塞状态变为就绪状态,应利用()原语。用()原语。n对进程的管理和控制使用对进程的管理和控制使用_。A、指令、指令 B、原语、原语 C、信号量、信号量 D、信箱、信箱2023-1-2513练习练习n下面所述步骤中,下面所述步骤中,_不是创建进程所必不是创建进程所必需

    12、的。需的。A、由调度程序为进程分配、由调度程序为进程分配CPUB、建立一个进程控制块、建立一个进程控制块C、为进程分配内存、为进程分配内存D、将进程控制块链入就绪队列、将进程控制块链入就绪队列n下述哪一项体现了原语的主要特点下述哪一项体现了原语的主要特点A、并发性、并发性 B、异步性、异步性 C、共享性、共享性 D、不可分割性不可分割性2023-1-2514练习练习n一个进程被唤醒意味着一个进程被唤醒意味着_。A、该进程重新占有了、该进程重新占有了CPUB、它的优先权变为最大、它的优先权变为最大C、其、其PCB移至等待队列队首移至等待队列队首D、进程变为就绪状态、进程变为就绪状态2023-1-

    13、25152.3 2.3 进程进程同步同步n2.3.1 2.3.1 基本概念基本概念 n2.3.2 2.3.2 信号量机制信号量机制 n2.3.3 2.3.3 信号量机制的应用信号量机制的应用 2023-1-25162.3.12.3.1基本概念基本概念n与时间有关的错误与时间有关的错误:一飞机订票系统,两个终端,运行一飞机订票系统,两个终端,运行T1T1、T2T2进程进程T1:T2:T1:T2:.Read(x);Read(x);Read(x);Read(x);if x=1 then if x=1 thenif x=1 then if x=1 then x:=x-1;x:=x-1;x:=x-1;x

    14、:=x-1;write(x);write(x);write(x);write(x);.2023-1-2517hibdcegfa并发环境下程序间的制约关系并发环境下程序间的制约关系2023-1-25182.3.12.3.1基本概念基本概念n进程同步的主要任务进程同步的主要任务:是使并发执行的诸进程之间能有效地是使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行共享资源和相互合作,从而使程序的执行具有可再现性具有可再现性2023-1-2519 n多道程序间有两种制约关系:多道程序间有两种制约关系:n间接制约:多个操作不能同时执行,如:操:多个操作不能同时执行,如:操作和操作不能在同

    15、时执行。(资源共享作和操作不能在同时执行。(资源共享关系)关系)n直接制约:对于进程操作的时间顺序所加的:对于进程操作的时间顺序所加的某种限制,如操作应在之前执行。(相某种限制,如操作应在之前执行。(相互合作关系)互合作关系)2023-1-2520n临界资源(critical resource):一次仅允许:一次仅允许一个进程访问的资源。一个进程访问的资源。n如:进程共享一台打印机,若让它们交替使用则得到的如:进程共享一台打印机,若让它们交替使用则得到的结果肯定不是我们希望的。结果肯定不是我们希望的。n临界资源可能是硬件,也可能是软件:变量,数据,表格,临界资源可能是硬件,也可能是软件:变量,

    16、数据,表格,队列等。队列等。n并发进程对临界资源的访问必须作某种限制,否则就可能出并发进程对临界资源的访问必须作某种限制,否则就可能出与时间有关的错误,如:联网售票。,如:联网售票。n诸进程之间用互斥的方式,实现对这种资源的共享诸进程之间用互斥的方式,实现对这种资源的共享2023-1-2521 生产者-消费者(producer-consumer)问题是一个著名的进程同步问题。它描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区中;消费者进程可从一个缓

    17、冲区中取走产品去消费。尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区去取产品;也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区中投放产品。2023-1-2522 我们可利用一个数组来表示上述的具有n个(0,1,n-1)缓冲区的缓冲池。用输入指针in来指示下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,输入指针加1;用一个输出指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,输出指针加1。由于这里的缓冲池是组织成循环缓冲的,故应把输入指针加1表示成 in=(in+1)mod n;输出指针

    18、加1表示成out=(out+1)mod n。当(in+1)mod n=out时表示缓冲池满;而in=out则表示缓冲池空。此外,还引入了一个整型变量counter,其初始值为0。每当生产者进程向缓冲池中投放一个产品后,使counter加1;反之,每当消费者进程从中取走一个产品时,使counter减1。生产者和消费者两进程共享下面的变量:2023-1-2523Var n,integer;type item=;var buffer:array0,1,n-1 of item;in,out:0,1,n-1;counter:0,1,n;指针in和out初始化为1。在生产者和消费者进程的描述中,no-op

    19、是一条空操作指令,while condition do no-op语句表示重复的测试条件(condication),重复测试应进行到该条件变为false(假),即到该条件不成立时为止。在生产者进程中使用一局部变量nextp,用于暂时存放每次刚生产出来的产品;而在消费者进程中,则使用一个局部变量nextc,用于存放每次要消费的产品。2023-1-2524producer:repeat produce an item in nextp;while counter=n do no-op;bufferin =nextp;in =in+1 mod n;counter =counter+1;until f

    20、alse;consumer:repeat while counter=0 do no-op;nextc =bufferout;out =(out+1)mod n;counter =counter-1;consumer the item in nextc;until false;2023-1-2525 虽然上面的生产者程序和消费者程序,在分别看时都是正确的,而且两者在顺序执行时其结果也会是正确的,但若并发执行时,就会出现差错,问题就在于这两个进程共享变量counter。生产者对它做加1操作,消费者对它做减1操作,这两个操作在用机器语言实现时,常可用下面的形式描述:register 1 =coun

    21、ter;register 2 =counter;register1 =register 1+1;register 2 =register 2-1;counter =register 1;counter =register 2;2023-1-2526 假设:counter的当前值是5。如果生产者进程先执行左列的三条机器语言语句,然后消费者进程再执行右列的三条语句,则最后共享变量counter的值仍为5;反之,如果让消费者进程先执行右列的三条语句,然后再让生产者进程执行左列的三条语句,counter值也还是5,但是,如果按下述顺序执行:register 1 =counter;(register 1

    22、=5)register 1 =register 1+1;(register 1=6)register 2 =counter;(register 2=5)register 2 =register 2-1;(register 2=4)counter =register 1;(counter=6)counter =register 2;(counter=4)解决此问题的关键,是应把变量counter作为临界资源处理。令生产者进程和消费者进程互斥地访问变量。2023-1-2527互斥关系互斥关系 n互斥互斥n互斥就是若干进程竞争进入临界段时,互斥就是若干进程竞争进入临界段时,相互之间所形成的排它性关系

    23、。相互之间所形成的排它性关系。n对临界段的实现,表现为对互斥关系的对临界段的实现,表现为对互斥关系的实现。实现。n当一个进程处于临界段时,其他的进程当一个进程处于临界段时,其他的进程必须等待,直到临界段中的进程数为零。必须等待,直到临界段中的进程数为零。临界段的设计原则:临界段的设计原则:(1)每次至多只允许一个进程处于临界)每次至多只允许一个进程处于临界段中。段中。(2)对于请求进入临界段的多个进程,)对于请求进入临界段的多个进程,在有限时间内只让一个进入。在有限时间内只让一个进入。(3)进程只应在临界段中停留有限时间。)进程只应在临界段中停留有限时间。要实现临界段,就是要寻找某一种手段来实

    24、现要实现临界段,就是要寻找某一种手段来实现临界段的三条设计原则。临界段的三条设计原则。2023-1-2528互斥关系互斥关系 进程进程A:X=1;Y=2;M=X;X=Y;Y=M;printf(A:X=%d,Y=%dn,X,Y);了解临界段了解临界段进程进程B:K=3;L=4;M=K;K=L;L=M;printf(B:K=%d,L=%dn,K,L);不同的执行顺序有不同的结果!进程A进程B、或者进程B进程A 结果:A:X=2,Y=1 B:K=4,L=3或者B:K=4,L=3A:X=2,Y=1如果两个进程交替运行,形式如:进程A:X=1;Y=2;进程B:K=3;L=4;进程A:M=X;X=Y;Y=

    25、M;进程B:M=K;K=L;L=M;进程A:printf(A:X=%d,Y=%dn,X,Y);进程B:printf(B:K=%d,L=%dn,K,L);产生的结果会是:A:X=2,Y=1 B:K=4,L=3进程A和进程B完全交替执行:进程A:X=1进程B:K=3进程A:Y=2进程B:L=4进程A:M=X进程B:M=K进程A:X=Y进程B:K=L进程A:Y=M进程B:L=M进程A:printf(A:X=%d,Y=%dn,X,Y);进程B:printf(B:K=%d,L=%dn,K,L);运行的结果是:A:X=2,Y=3 B:K=4,L=3X和和Y中的数据没有完成正常的数中的数据没有完成正常的数据

    26、交换,这不是我们希望得到的据交换,这不是我们希望得到的结果。结果。获得正确结果的方法:获得正确结果的方法:只要保证指定程序段执行的完整性,只要保证指定程序段执行的完整性,就可以获得预期的结果。就可以获得预期的结果。这两个程序段就是这两个程序段就是临界段临界段。临界段。临界段中程序的执行必须遵守临界段的设中程序的执行必须遵守临界段的设计原则。只有在上面两个程序段计原则。只有在上面两个程序段互互斥运行斥运行的情况下,才可以保证获得的情况下,才可以保证获得正确的运行结果。正确的运行结果。期望:各自进行数据交换,然后将交换过的数据输出。2023-1-2529n临界区(critical section)

    27、:临界段,在每个进程中:临界段,在每个进程中访问临界资源的那段程序代码。访问临界资源的那段程序代码。注意:临界区是对某一临界资源而言的,对于临界区是对某一临界资源而言的,对于不同临界资源的临界区,它们之间不存在互斥。不同临界资源的临界区,它们之间不存在互斥。如有程序段如有程序段A、B是关于变量是关于变量X的临界区,而的临界区,而C、D是关于变量是关于变量Y的临的临界区,那么,界区,那么,A、B之间需要互斥执行,之间需要互斥执行,C、D之间也要互斥执行,而之间也要互斥执行,而A与与C、B与与D之间不用互斥执行。之间不用互斥执行。n进入区:进入区:临界区前检查临界资源是否被使用的代码检查临界资源是

    28、否被使用的代码段。段。n退出区:退出区:临界区后将临界资源恢复未被使用的代码段。n剩余区:上述三个区以外的代码区域。2023-1-2530同步机制应遵循的准则同步机制应遵循的准则为了禁止两个进程为了禁止两个进程同时同时进入临界区内进入临界区内,可以采用软件办法可以采用软件办法或系统提供的同步机构来协调它们的关系。但是,不论用或系统提供的同步机构来协调它们的关系。但是,不论用什么办法都要遵循下述准则(评判的标准)什么办法都要遵循下述准则(评判的标准):1.空闲让进空闲让进:无进程处于临界区时应允许一个请求进入临界区:无进程处于临界区时应允许一个请求进入临界区的进程立即进入临界区。的进程立即进入临

    29、界区。2.忙则等待忙则等待:每次至多有一个进程处于临界区:每次至多有一个进程处于临界区3.有限等待有限等待:当有若干进程欲进入它的临界区时当有若干进程欲进入它的临界区时,应在有限时间内应在有限时间内使进程进入临界区。以免限入使进程进入临界区。以免限入“死等死等”状态状态4.让权等待让权等待:当进程不能进入自己的临界区时,应立即释放处:当进程不能进入自己的临界区时,应立即释放处理机,以免进程应陷入理机,以免进程应陷入“忙等忙等”。2023-1-2531n1965年,由荷兰学者年,由荷兰学者Dijkstra提出提出n一种卓有成效的进程同步工具一种卓有成效的进程同步工具n已被广泛应用于单处理机和多处

    30、理机系统以及计算已被广泛应用于单处理机和多处理机系统以及计算机网络中。机网络中。n信号量机制由信号量机制由“信号量信号量”和和“P,V操作操作”两部分组两部分组成。成。n信号量就是一种特殊变量,它用来表示系统中资源信号量就是一种特殊变量,它用来表示系统中资源的使用情况,它只能由两个标准原语所访问,分别的使用情况,它只能由两个标准原语所访问,分别记作记作P操作原语,操作原语,V操作原语,操作原语,P,V操作是由操作操作是由操作系统提供的可供外部调用的两条原语。系统提供的可供外部调用的两条原语。2.3.2 信号量机制信号量机制2023-1-25321整型信号量的概念整型信号量的概念n概念概念u整型

    31、信号量就是一个整型变量。整型信号量就是一个整型变量。n信号量的操作:信号量的操作:u(1)wait(S):称为:称为P操作,描述为:操作,描述为:wait(S):while s=0 do no_op;当S=0时,一直在检测 S=S-1;u(2)signal(S):称为:称为V操作,描述为:操作,描述为:signal(S)S=S+1;缺点:忙等2023-1-25332 2记录型信号量:记录型信号量:在整型信号量机制中的P操作,只要是信号量S0,就会不断地测试。因此,该机制并未遵循“让权等待”的准则,而是使进程处于“忙等”的状态。记录型信号量机制,则是一种不存在“忙等”现象的进程同步机制。但在采取

    32、了“让权等待”的策略后,又会出现多个进程等待访问同一临界资源的情况。2023-1-25342 2记录型信号量:记录型信号量:为此,在信号量机制中,除了需要一个用于代表资源数目的整型变量value外,还应增加一个进程链表L,用于链接上述的所有等待进程。记录型信号量是由于它采用了记录型的数据结构而得名的。它所包含的上述两个数据项可描述为:2023-1-25352 2记录型信号量:记录型信号量:定义如下:n type semaphore=recordn value:integer;(资源数目)n L:list of process;(进程链表)n end信号量说明:var S semaphore;s

    33、emaphore;2023-1-2536P P操作操作wait(s)wait(s)s.value=s.value-1;s.value=s.value-1;if(s.value 0)if(s.value 0)block(s.L)block(s.L)该进程状态置为阻塞状态该进程状态置为阻塞状态 将该进程的将该进程的PCBPCB插入相应的阻塞队列末尾插入相应的阻塞队列末尾;2023-1-2537V V操作操作signal(s)signal(s)s.value=s.value+1;s.value=s.value+1;if(s.value =0)if(s.value=ti;即当资源数量低于即当资源数量低

    34、于ti时,便不予时,便不予分配)分配)需求值为需求值为di(表示资源的申请量,即表示资源的申请量,即Si=Si-di)对应的操作格式为:对应的操作格式为:uSwait(S1,t1,d1;.;Sn,tn,dn);uSsignal(S1,d1;.;Sn,dn);2023-1-2550Swait(S1,t1,d1;.;Sn,tn,dn)nif Sit1 and and Sntn thenn for i=1 to n don Si=Si-di;n endforn elsen Place the executing process in the waiting queue of the first Si

    35、 with Siti and set its program counter to the beginning of the Swait Operation.n endif2023-1-2551Ssignal(S1,d1;.;Sn,dn);n for i=1 to n don Si=Si+di;nRemove all the process waiting in the queue associated with Si into the ready queuen endfor;2023-1-2552信号量集可以用于各种情况的资源分配和释放,信号量集可以用于各种情况的资源分配和释放,几种特殊情况

    36、:几种特殊情况:nSwait(S,d,d)表示每次申请表示每次申请d个资源,当少个资源,当少于于d个时,便不分配个时,便不分配nSwait(S,1,1),当当S1时,表示记录型信号量;时,表示记录型信号量;当当S=1时,表示互斥信号量时,表示互斥信号量nSwait(S,1,0)可作为一个可控开关(当可作为一个可控开关(当S 1时,允许多个进程进入特定区域时,允许多个进程进入特定区域;当当S=0时,时,禁止任何进程进入该特定区域)禁止任何进程进入该特定区域)n一般一般信号量集信号量集未必成对使用未必成对使用Swait和和Ssignal:如:一起申请,但不一起释放如:一起申请,但不一起释放2023

    37、-1-2553练习练习n临界区是临界区是_。A、一个缓冲区、一个缓冲区 B、一段共享数据区、一段共享数据区 C、一段程序一段程序 D、一个互斥资源、一个互斥资源n若信号量若信号量S的初值为的初值为2,当前值为,当前值为-1,则表,则表示有示有_等待进程。等待进程。A、0个个 B、1个个 C、2个个 D、3个个2023-1-2554练习练习n对于记录型信号量,在执行一次对于记录型信号量,在执行一次wait操作时,操作时,信号量的值应当信号量的值应当_,当其值为,当其值为_时,进程应时,进程应阻塞。在执行阻塞。在执行signal操作时,信号量的值应当操作时,信号量的值应当_,当其值为,当其值为_时

    38、,应唤醒阻塞队列中的进时,应唤醒阻塞队列中的进程。程。n某一时刻、某一资源的信号量某一时刻、某一资源的信号量s=0,它表示,它表示()A 该时刻该类资源的可用数目为该时刻该类资源的可用数目为1 B 该时刻该类资源的可用数目为该时刻该类资源的可用数目为1C 该时刻等待该类资源的进程数目为该时刻等待该类资源的进程数目为1 D 该时刻等待该类资源的进程数目为该时刻等待该类资源的进程数目为02023-1-25552.3.32.3.3信号量的应用信号量的应用1 1用信号量解决进程间互斥问题用信号量解决进程间互斥问题wait(mutex)signal(mutex)P1P2P3互斥区互斥区wait(mute

    39、x)wait(mutex)signal(mutex)signal(mutex)2023-1-2556利用信号量实现互斥利用信号量实现互斥n概念:概念:u互斥信号量是根据临界资源的类型设置的。互斥信号量是根据临界资源的类型设置的。有几种类型的临界资源就设置几个互斥信号有几种类型的临界资源就设置几个互斥信号量。它代表该类临界资源的数量,量。它代表该类临界资源的数量,或表示是或表示是否可用,其初值一般为否可用,其初值一般为“1”。n例题例题2023-1-2557图:图:假定把进程假定把进程A程序中的临界区记为程序中的临界区记为CSa,假假定把进程定把进程B程序中的临界区记为程序中的临界区记为CSb,

    40、如图如图(a)所示。所示。所谓所谓“CSa和和CSb互斥地执行互斥地执行”,含义是:如果进程,含义是:如果进程A已进入了已进入了CSa,那么那么进程进程B就只能在其就只能在其CSb的进入点处等待,不的进入点处等待,不能进入,只有等到进程能进入,只有等到进程A退出了退出了CSa,进程进程B才能进入才能进入CSb。同样地,如果进程同样地,如果进程B已进已进入了入了CSb,那么进程那么进程A就只能在其就只能在其CSa的进的进入点处等待,不能进入。只有等到进程入点处等待,不能进入。只有等到进程B退出了退出了CSb,进程进程A才能进入才能进入CSa。为了保证做到这一点,设置一个初值为为了保证做到这一点,

    41、设置一个初值为1的的信号量信号量S,在进程在进程A和和B的进入点处安排关的进入点处安排关于信号量于信号量S的的wait操作,在进程操作,在进程A和和B的退的退出点处安排关于信号量出点处安排关于信号量S的的signal操作。这操作。这样,就能够确保样,就能够确保CSa和和CSb互斥地执行。如互斥地执行。如图图(b)所示。所示。n现在来分析一下现在来分析一下为什么为什么这样的安排就这样的安排就能够保证能够保证CSa和和CSb的的互斥执行互斥执行。在图。在图(b)的情形下,不失其一般性,假定进的情形下,不失其一般性,假定进程程A先于进程先于进程B做做wait(S)。由于由于S初始初始时取值为时取值为

    42、1,做了,做了wait(S)后,后,S变为变为0。根据信号量上根据信号量上wait操作的定义,在实操作的定义,在实施减施减1后如果后如果S=0,则调用进程继续运则调用进程继续运行,因此进程行,因此进程A进入了它的临界区。如进入了它的临界区。如果这时进程果这时进程A的时间片到,则调度到进的时间片到,则调度到进程程B运行。当它调用信号量运行。当它调用信号量S的的wait操操作时,由于现在的作时,由于现在的S=0,于是减于是减1后后S=-10。根据信号量上根据信号量上wait操作的定义,操作的定义,在实施减在实施减1后如果后如果S0,那么调用进程那么调用进程由运行状态变为阻塞状态,并到与该由运行状态

    43、变为阻塞状态,并到与该信号量有关的队列信号量有关的队列Vq上排队等待,直上排队等待,直到其他进程在到其他进程在S上执行上执行signal操作将其操作将其释放为止。因此进程释放为止。因此进程B被阻塞(不能进被阻塞(不能进入它的临界区入它的临界区CSb),),到关于信号量到关于信号量S的队列的队列Vq上去排队,等候别的进程释上去排队,等候别的进程释放它。可见,这样安排,可以保证只放它。可见,这样安排,可以保证只有一个进程进入它的临界区。有一个进程进入它的临界区。2023-1-2558n这时进程这时进程A在它的临界区里,进程在它的临界区里,进程B被阻挡在它的临界被阻挡在它的临界区外等待进入。下面介绍

    44、区外等待进入。下面介绍进程进程B要等到什么时候要等到什么时候才能才能有可能进入自己的临界区。如果又一次调度到进程有可能进入自己的临界区。如果又一次调度到进程A运行,则它从临界区里的断点处往下做,退出临界区运行,则它从临界区里的断点处往下做,退出临界区时做时做signal(S)。由于现在的由于现在的S=-1,于是加于是加1后后S=0。根据信号量上根据信号量上signal操作的定义,在实施加操作的定义,在实施加1后如果后如果S=0,则先从与该信号量有关的队列则先从与该信号量有关的队列Vq上摘下一个等上摘下一个等待进程,让它从阻塞状态变为就绪状态,到就绪队列待进程,让它从阻塞状态变为就绪状态,到就绪

    45、队列中排队,然后调用进程继续运行。现在,在队列中排队,然后调用进程继续运行。现在,在队列Vq上上等待的正是进程等待的正是进程B。于是将进程于是将进程B的的PCB从队列上摘下,从队列上摘下,把状态由阻塞改变成为就绪,让它重新参与调度。而把状态由阻塞改变成为就绪,让它重新参与调度。而进程进程A在做完这些事情后,继续运行下去。这里要注在做完这些事情后,继续运行下去。这里要注意,上次进程意,上次进程B已经做了已经做了wait操作操作,只是没有能进入临,只是没有能进入临界区罢了,因此再调度到它运行时,就直接进入临界界区罢了,因此再调度到它运行时,就直接进入临界区了。区了。2023-1-2559n通过这一

    46、分析可以看到通过这一分析可以看到,在这种安排下,哪个进程先,在这种安排下,哪个进程先对信号量对信号量S做做wait操作,就会使操作,就会使S的值由的值由1变成为变成为0,且,且它就获得了进入临界区的权利。当有一个进程在临界它就获得了进入临界区的权利。当有一个进程在临界区内时,区内时,S的值肯定是的值肯定是0。因此,此时另一个进程想通。因此,此时另一个进程想通过做过做wait操作进入自己的临界区时,就会因为使操作进入自己的临界区时,就会因为使S的值的值由由0变为变为-1而受到阻挡。只有等到在临界区内的那个进而受到阻挡。只有等到在临界区内的那个进程退出临界区、对程退出临界区、对S做做signal操

    47、作时,使操作时,使S的值由的值由-1变变为为0,才会解除阻挡,以此来保证进程间的互斥。,才会解除阻挡,以此来保证进程间的互斥。我们发现不管调度顺序如何,我们发现不管调度顺序如何,都能够实现在临界段中只有一都能够实现在临界段中只有一个进程,进程在等待有限时间个进程,进程在等待有限时间后必然有机会进入临界段,处后必然有机会进入临界段,处于临界段中的进程只能停留有于临界段中的进程只能停留有限时间。限时间。2023-1-2560 结束语当你尽了自己的最大努力时,失败也是伟大的,所以不要放弃,坚持就是正确的。When You Do Your Best,Failure Is Great,So DonT Give Up,Stick To The End谢谢大家荣幸这一路,与你同行ItS An Honor To Walk With You All The Way演讲人:XXXXXX 时 间:XX年XX月XX日

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第2章进程管理21课件.pptx
    链接地址:https://www.163wenku.com/p-4915568.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库