专业综合操作系统练习题(1).ppt_第1页
专业综合操作系统练习题(1).ppt_第2页
专业综合操作系统练习题(1).ppt_第3页
专业综合操作系统练习题(1).ppt_第4页
专业综合操作系统练习题(1).ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

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

文档简介

1、1,(1)流程和线程(2)处理器计划(3)同步和互斥(4)死锁,第二部分流程管理,2,(3)同步和互斥,3,1。流程同步的基本概念,多通道节目系统流程同步:主要来自流程合作,是流程之间的直接约束关系;流程互不相容:主要来自流程共享,是流程之间的间接约束关系;4;关键资源:一次只能使用一个流程的资源。例如,打印机、公共变量、临界区域:从每个流程访问临界资源的程序。同步机制遵循的准则:空闲、忙碌、等待、受限等待、权限等待、临界区域空闲时,进程立即进入,有效利用临界资源。现有进程进入临界区域时,其他进程必须等待以确保互斥,对于需要输入的进程,必须在有限的时间内进入。2.实施临界区域互斥的基本方法、进

2、程互斥的硬件方法(1)检测和设置(TS)命令(2)swap命令(或exchange)更换两个字(字节)内容,以及使用软件互斥机制在入口区域设置和检查某些徽标(1)算法如果进程Pi未进入临界区域,则进程Pj进入临界区域后不能再进入。因此,不能满足闲置让步和有限等待的两个茄子标准。7,示例2(解决错误)(flag2是布尔数组,两个元素初始化为false),算法2消除了算法1中两个进程依次需要访问临界区域的错误,但两个进程都有进入临界区域的可能性,因此无法满足空闲让步和受限等待。8,示例3算法3(正确的解决方案,也称为Dekker算法)(turn是初始化为I或J的int类型变量。)。Flag2是bo

3、ol类型的数组,两个元素初始化为FALSE。)Dekker将算法1和算法2组合在一起,以允许空闲让步和使用中等待。(David aser,Northern Exposure(美国电视电视剧),自由名言)基本上,这是正确的算法,Dekker算法可以正常工作。9,示例4算法4(正确的解决方案,也称为Peterson算法)(turn是int型变量,初始化为I或J;Flag2是两个元素初始化为false的bool类型数组,Peterson算法类似于Dekker算法,实现了空闲让步、忙队列和受限等待。相比之下,德克算法,复杂难证明,彼得森算法简洁。10,示例11 (2010年年度考试27次)流程P0和P

4、1的孔刘变量定义和初始值:boolean falg2int turn=0;Falg0=FALSEFalg1=FALSE如果访问进程P0和P1牙齿临界资源的类C伪代码实现如下,则void P0() /进程P0 while(TRUE)flag 0=TRUE;turn=1;While(flag1,void P1() /进程P1 while(TRUE)flag 1=TRUE;turn=0;While(flag0),并发运行进程P0和P1出现的情况为A。过程互斥不能保证进入临界区域,也不能保证会发生“饥饿”现象。过程互斥不能保证进入临界区域,也不能保证不会出现“饥饿”现象3。信号标量机制包括信号标量“w

5、ait操作(P操作)”和“signal操作(V操作)”两部分,可用于解决过程的互斥和同步问题。p,v操作是原子操作,不能中断。(1)整数信号量定义:除了表示资源数量的整形量s .初始化以外,只能通过以下两个茄子原子操作进行访问:,12,3。信号量,(2)记录型信号量,指示资源数量的整数变量value,以及用于连接等待该资源的所有进程链表l的记录型数据结构:Typedef struct int valuequeue L;Semaphore,如果有semap hore S;相应的wait(S)和signal(S)操作可以解释为,13,(1)通常调查对记录型信号量的理解。信号量的物理含义:S.val

6、ue0表示S.value资源可用。S.value=0表示没有可用资源。S.value0规则|S.value|指示队列中等待的进程数。说明:根据上述信号量的物理意义,可以计算信号量的变化范围。(2)S.value的初始值表示系统中特定类型的资源数,这称为资源信号量。S.value的初始值为1时,只能访问一个进程,在牙齿情况下,信号量将转换为互斥的信号量。(3)对于信号量,wait、signal操作wait(S)表示一个资源申请。信号(s)表示释放资源。注:整数信号量不取负值,因此可以判断标题的信号量是整数信号量还是记录型信号量。确定信号量的物理意义,14,示例5 M个进程共享相同的临界资源,并且

7、如果使用信号量机制实现了对临界资源的互斥访问,则信号量的变化范围为()。A. 1到-(m-1) B. 1到m-1 C. 1到-m D. 1,答案 A,15,示例6设置两个进程共享一个关键资源的互斥信号量互斥。a .一个进程进入临界区域,另一个进程等待B。一个进程未进入临界区域C。两个过程都进入临界区域D。两个进程都在等待。回答 B,16,示例7如果三个进程共享同一节目段,并且一次最多可以有两个进程进入节目段,则A. 3 B. 1 C. 2 D. 0,回答 C,示例8在记录信号量S上执行P(S)操作来阻止进程,则S的值为A. 0 B.=0 D.=0,答案 B,17,4。管路定义:管路是一组软件模

8、块,由孔刘资源的数据结构及其对该资源的操作组成。官井是编程语言构件,为此需要编译器支持。管线定义了可为同步进程和更改进程数据的并发进程运行的数据结构和任务集。管道过程由三部分组成:管道孔刘数据描述;为用于数据结构操作的一组流程管道范围中的本地数据设置初始值的语句。18,生产者-消费者问题读者-笔者问题哲学家吃饭问题,5。经典同步问题,19,通过利用信号量机制的互斥模式,允许多个进程相互排斥地访问关键资源。(1)首先,必须为该资源设置互斥的信号量mutex,并将初始值设置为1。(2)然后将每个进程访问临界资源的临界区域放置在wait(mutex)和signal(mutex)之间。例如,使用记录型

9、信号量,两个进程可以互斥地使用一台打印机。semap hore mutex=1;main()cobegin process 1()wait(mutex);Critical section signal(mutex):Process 2()wait(mutex);critical section signal(mutex):Coend,说明:互斥的wait(mutex)和signal(mutex)在每个程序中必须成对出现。20,使用信号量机制执行同步模式P1牙齿语句L1后,P2才能开始执行语句L2。必须在P1和P2之间同步。将s设置为两个并发进程P1,P2的公共信号量。初始值为零(可能取决于实际

10、情况)。使用信号量解决进程同步问题的方法如下:semap hore S=0;主()cobe ginp 1()L1;信号(s);p2()wait(S);L2;Coend,21,信号标机构操作是互斥或同步的一般步骤。也就是说,通过确定有多少茄子或多少茄子类型的进程的问题给出了条件。确定进程之间的约束关系是互斥的还是同步的。决定每个过程之间通过什么样的信号量实现彼此的约束,显示信号量的意义和初始值。使用p,v操作创建相应的代码段。确认代码的正确性:您可以徐璐按不同的顺序运行每个流程,以确保问题能够圆满解决。不要按固定顺序运行每个进程。22、生产者和消费者进程中的signal操作的顺序无关紧要,但两个

11、wait操作的顺序不能颠倒。否则,必须首先对死锁(即资源信号量)执行wait操作,然后对互斥信号量执行wait操作。23,N个缓冲区,缓冲区又是临界资源,因此需要添加信号量mutex以进行缓冲区互斥访问。初始值为1。特别需要强调的是,牙齿不能省略mutex。缓冲区互斥访问可以看作是对缓冲门户的互斥访问,生产者使用缓冲区时不允许消费者进入缓冲区,反之亦然。在每个程序中,互斥的wait(mutex)和signal(mutex)必须成对出现。资源信号量empty和full的wait和signal操作也必须成对出现,但它们分别位于不同的程序中。每个程序的多个wait任务顺序也不能颠倒。在对互斥信号量执

12、行wait操作之前,必须对资源信号量执行wait操作。否则,可能会出现与流程死锁的问题。24,示例9中所示,多个PUT操作同时将数据放入Buff1,移动操作将继续Buff1中的数据移动到Buff2,多个GET操作继续从Buff2中删除数据。Buff1的容量为M,Buff2的容量为N、PUT、MOVE和GET牙齿一次操作一个数据,因此必须确保操作过程中不会丢失数据。使用p,V原语调整PUT,MOVE的操作,说明每个信号量的含义和初始值。设置、25、6个信号量full1、empty1、B-M1、full2、empty2和B-M2。其含义和初始值为:full1表示Buff1是否包含数据,初始值为0。

13、Empty1表示Buff1中有空间,初始值为m。B-M1表示Buff1是否工作,初始值为1。完整2表示Full2是否包含数据,初始值为0。Empty2表示Buff2中有空间,初始值为n。B-M2表示Buff2是否工作,初始值为1。26,示例10 (2009年问题45,7分钟)使用一个包含三个茄子进程P1、P2、P3互斥的N(N0)单位的缓冲区。P1每次使用produce()生成正整数,使用put()将其发送到缓冲区空单元格。P2一次使用getodd()弹出缓冲区过程中的奇数,使用countodd()计算奇数。P3每次使用geteven()获取缓冲区中的偶数,使用counteven()计算偶数。

14、使用信号标机制实现牙齿三过程的同步和互斥活动,说明定义的信号量的含义。要求伪代码说明。“分析”牙齿主题调查进程的同步和互斥。牙齿主题是苹果-橙子问题的变体。进程P1可以看作生产者,进程P2和P3可以看作消费者,进程P1和P2,P3孔刘大小N的缓冲区。流程P1、P2和P3必须具有互斥的使用缓冲区,P1流程必须与P2流程、P3流程同步。27,28,29,30,31,例11售票员负责售票、开馆、关门,售票员关上车门后才能继续开司机。为了司机和指挥之间的同步,尝试P,V操作。分析这里有两种茄子同步关系。在司机站停车才能让售票员开门。售票员关上车门后,司机选手才能发动汽车。32,设置停车初始状态,门打开

15、。设定讯号量:close确定门是否关闭,是否可以启动车辆stop,驾驶门semaphore close=0,stop=1;main()cobe gin drive()while(true)p(close);启动车辆,在正常行驶站停车V(停);Conductor() While(true)关闭语句V(close);售票P(停止);司机门上下乘客,33,例12 (2011年年试45号)一家银行提供服务窗口和顾客等的10个座位。顾客到达银行的时候,有座位时间的话,就在接送机上拿到号码,等着叫号码。拾音机一次只能使用一个客户。售货员空闲的时候,叫号码挑选一位顾客服务。客户和销售代表的活动过程说明如下:

16、Cobegin Process客户I从编号器中获取编号。等待呼叫服务Process销售人员while(TRUE)电话号码;顾客服务;Coend添加所需的信号量和P、V(或wait()、signal()任务,以便在上述过程中相互排斥和同步。要求描述信号量的意义,并编写指定初始值的完整过程。分析 (1)互斥关系:客户应使用互斥存取器,设置互斥信号量互斥,初始值为1。(2)同步关系:顾客需要得到空的座位等候号码,营业人员空闲时选择一名顾客服务。34,semap hore mutex=1;/互斥使用编号器Semaphore empty=10/空座位数semap hore full=0;/已占用的座位数semap hore service=0;/号等待,cobejin流程客户I P(empty);p(互斥锁);从拾音机上获取号码。v(互斥锁);v(全部);p(服务);/等待电话号码接收服务。流程销售人员while(TRUE)P(full);v(empty);v(服务);/号码是顾客服务;35,例13有腿。如箭

温馨提示

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

评论

0/150

提交评论