考研P、V操作习题答案
- 格式:doc
- 大小:75.00 KB
- 文档页数:9
考研操作系统-进程的同步与通信(总分:82.00,做题时间:90分钟)一、单项选择题(总题数:12,分数:24.00)1.相关临界区是指( )。
A.一个共享资源B.并发进程中涉及相同变量的那些程序段√C.并发进程中与共享变量有关的程序段D.一个独占资源2.下列关于P、V操作的说法中正确的是( )。
A.P、V操作是两个操作,而且都是原语操作√B.P、V操作中P操作可以不用原语方式,而V操作必须使用原语操作C.P、V操作是一个过程,同一般函数,过程一样,只是执行管理临界区的操作D.P、V操作中P操作必须使用原语方式,而V操作可以不使用原语操作3.由于并发进程之间( )不能由进程本身控制,当它们在共享某些资源的时候可能会产生与时间有关的错误。
A.分配外部设备B.分配内存空间C.执行的相对速度√D.占用存储器的位置4.下面对线程的描述中,错误的是( )。
A.同一进程中的线程可共享该进程的主存空间B.线程是调度和执行单位C.不同的线程可执行相同的程序D.线程是资源分配单位√5.如果有4个进程共享同一程序段,每次允许3个进程进入该程序段,若用P、V操作作为同步机制,则信号量的取值范围是( )。
A.4,3,2,1,-1B.2,1,0,-1,-2C.3,2,1,0,-1 √D.2,1,0,-2,-36.在进程通信中,( )常用信件交换信息。
A.低级通信B.高级通信√C.信息缓冲D.消息通信7.下列关于进程和线程的说法中正确的是( )。
A.线程是进程中可独立执行的子任务,一个进程可以包含一个或多个线程,一个线程可以属于一个或多个进程B.多线程技术具有明显的优越性,如速度快、通信简便、设备并行性高等√C.由于线程不作为资源分配单位,线程之间可以无约束地并行执行D.线程又称为轻型进程,因为线型都比进程小8.并发进程之间相互通信时两个基本的等待事件是( )。
A.等信件和等信箱√B.等消息和等信件C.等发送原语和接收原语D.等消息和等信箱9.对若干个并发进程共享某—变量的相关临界区的管理,下列说法中不正确的是( )。
python考研题库Python作为一种广泛使用的编程语言,在考研计算机专业科目中占有一席之地。
以下是一些模拟考研题库中可能出现的Python编程题目,旨在帮助考生熟悉考试题型和难度。
# 一、选择题1. 下列哪个是Python的内置数据类型?A. ListB. ArrayC. SetD. All of the above2. Python中的列表推导式可以用于创建什么?A. 列表B. 元组C. 字典D. 集合3. 在Python中,以下哪个语句可以用来实现异常处理?A. `try...except`B. `if...else`C. `switch...case`D. `for...in`# 二、简答题1. 简述Python中的装饰器是什么,并给出一个使用装饰器的示例代码。
2. 解释Python中的生成器(generator)和迭代器(iterator)的区别。
# 三、编程题1. 编写一个Python函数,实现对列表中的元素进行排序,并返回排序后的列表。
2. 编写一个Python程序,实现一个简单的文本编辑器,能够读取文件内容、显示内容、添加新内容以及保存修改。
# 四、综合应用题1. 描述如何使用Python进行网络编程,给出一个简单的HTTP服务器的实现代码。
2. 描述Python在数据分析领域的应用,并给出一个使用Pandas库进行数据清洗和分析的示例。
请注意,这些题目仅用于模拟考研题型,实际考试题目可能会有所不同。
考生在备考时应以官方发布的考试大纲和样题为准,同时加强编程实践,提高解题能力。
希望这些模拟题目能够帮助你更好地准备考研,祝你考试顺利!。
2011 操作系统考研真题及答案1、下列的选项中,满足短任务优先且不会发生饥饿现象的调度算法是( B )A、先来先服务B、高响应比优先C、时间片轮转D、非抢占式短任务优先2、下列选项中,在用户态执行的是( A )A、命令解释程序B、缺页处理程序C、进程调度程序D、时钟中断处理程序3、在支持多线程的系统中,进程P创建的若干个线程不能共享的是( D )A、进程P的代码段B、进程P中打开的文件C、进程P的全局变量D、进程P中某线程的栈指针4、用户程序发出磁盘I/O请求后,系统的正确处理流程是( B )A.用户程序→系统调用处理程序→中断处理程序→设备驱动程序B.用户程序→系统调用处理程序→设备驱动程序→中断处理程序C.用户程序→设备驱动程序→系统调用处理程序→中断处理程序D.用户程序→设备驱动程序→中断处理程序→系统调用处理程序5此时的安全序列是( D )A、P1,P2,P3,P4B、P1,P3,P2,P4C、P1,P4,P3,P2D、不存在6、在缺页处理过程中,操作系统执行的操作可能是( D )I、修改页表II、磁盘I/O III、分配页框A、仅I、IIB、仅IIC、仅IIID、I、II和III7、当系统发生抖动(thrashing)时,可以采取的有效措施是( A )I、撤销部分进程II、增加磁盘交换区的容量III、提高用户进程的优先级A、仅IB、仅IIC、仅IIID、仅I、II8、在虚拟内存管理中,地址变换机构将逻辑地址变换为物理地址,形成该逻辑地址的阶段是( B )A、编辑B、编译C、链接D、装载9、某文件占10个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析。
假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为100μs,将缓冲区的数据传送到用户区的时间是50μs,CPU对一块数据进行分析的时间为50μs。
在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是(B )A、1500μs、1000μsB、1550μs、1100μsC、1550μs、1550μsD、2000μs、2000μs10、有两个并发执行的进程P1和P2,共享初值为1的变量x。
北京理工大学2005年考研试题及参考答案一、判断题:1、在现代操作系统中,作业拥有的最大编址空间受CPU的地址结构和外存容量的限制。
2、在批处理系统中,提交的批处理作业必须具有作业的控制信息。
3、并发执行的进程间必定具有相互制约关系。
4、处理机处于核心态时,只能执行特权指令。
5、采用虚拟存储技术后,内存就可以无限制地进行扩充。
6、共享设备是指在同一时间内,允许多进程同时访问的设备。
7、存储型设备通常是直接存取设备,而I/O型设备属于顺序存取的设备。
8、文件的存取方法依赖于文件的物理结构和存放文件的存储设备的特性。
二、填空1、现代操作系统两个最基本的特性是()和()2、在操作系统中,一种用空间换时间的资源转换技术是()3、地址转换机构的最基本任务是将程序在()中的()转换为()中的()4、在分页管理系统中,为实现地址转换设置了控制寄存器,其中存放的是()和()5、磁盘属于块设备,信息的存取单位是以()为单位进行的;磁盘的I/O控制主要采用()控制方式三、选择题1、为了使并发进程有效地进行输入输出,应该采用()结构的缓冲技术A多缓冲B环行缓冲C缓冲池D多队列轮转2、在可变式分区管理中,采用拼接技术的目的是A合并空闲区B合并分配区C增加主存容量D便于地址转换3、实施虚拟存储器管理的依据是程序的()A局部性原理B动态性原理C并发性原理D一致性4、火车站的售票系统属于()系统A单道批处理B多道批处理C分时D实时5、一个作业8:00到达系统,其估计运行时间为1小时。
若10:00开始运行该作业,其响应时间是()小时。
A1 B2 C3 D46、采用可重入程序是通过使用()方法来改善系统性能的A改便时间片长短B改变用户数C加速对换速度D减少对换信息量7、若为每个作业只建立一个进程,为了照顾短作业用户。
应采用();为照顾紧急作业用户,应采用();为能实现人机交互,应采用();而能使短作业,长作业和交互作业用户都满意,应采用()A FCFS调度算法B短作业优先调度算法C时间片轮转法D多级反馈队列调度算法E基于优先权的剥夺调度算法8、在设计分时操作系统时,首先考虑的是();在设计实时操作系统时,首先要考虑的是();在设计批处理系统时,首先要考虑的是()A灵活性和适应性B交互性和响应时间C周转时间和系统吞吐量D实时性和可靠性四简答题1、虚拟设备的概念及实现虚拟设备的主要条件和实现技术是什么?2、死锁与饿死有什么区别3、什么是交换?交换的目的是什么?4、引入线程的目的是什么?线程与其所在进程之间的关系是什么?五、请用信号量解决以下的独木桥问题:同一方向的行人可连续过桥,当某一方向有人过桥时,另一方向的行人必须等待,直到某方向无人过桥或连续过了100个人时,另一方向行人才可以过桥.模拟试题一一、填空题(每空1分,共10分)1、如果系统中有n个进程,则在等待队列中进程的个数最多可为__个。
()1.允许多个用户以交互方式使用计算机的操作系统,称为A)批处理操作系统B)分时操作系统C)实时操作系统D)多处理机操作系统()2.“中断”的概念是指A)暂停处理机执行B)暂停处理机对现行程序的执行C)停止整个系统运行D)使处理机空转()3.下列进程状态的转换中,不正确的是A)就绪→运行B)运行→就绪C)就绪→等待D)等待→就绪()4.有n个并发进程竞争必须互斥使用的共享资源时,若某进程调用P操作后成为第一个等待使用资源者,则这时信号量的值为A)0 B)1 C)-1 D)n-1()5.在采用SPOOLing技术的系统中,用户作业的打印输出结果首先被送到A)磁盘固定区域B)内存固定区域C)终端D)打印机()6.在下列关于操作使用接口的不同叙述中,正确的是A)操作使用接口是用户程序与操作系统之间的接口,因此它不是命令接口B)操作使用接口是键盘和屏幕C)操作使用接口是用户程序D)操作使用接口是一组键盘命令及命令解释程序()7.在分区存储管理中,最坏适应算法要求对空闲区表项的排列顺序为A)空闲区首址递增 B)空闲区首址递减C)空闲区大小递增 D)空闲区大小递减()8.页式存储管理中,每取一条指令或取一个操作数,访问主存的次数最多是A)1 B)2 C)3 D)4()9.指定扇区旋转到磁头位置所需的时间称为时间。
A)寻找时间B)延迟时间C)传送时间D)旋转时间()10.对随机存取的文件,文件系统通常把它组织成A)顺序文件B)链接文件C)记录式文件D)索引文件()11.在设计分时操作系统时,首先要考虑的是A)灵活性和可适应性B)交互性和响应时间C)周转时间和系统吞吐量D)实时性和可靠性()12.用户程序执行时,若中央处理器取到一条“访管指令”,则中央处理器应该A)从管态转到目态B)从目态转到管态C)维持在管态D)维持在目态()13.每个进程在执行过程中的任一时刻它所处的状态有A)1种B)2种C)3种D)4种()14.计算机操作系统中,若P、V操作的信号量S初值为2,当前值为-1,则表示有多少个等待进程?A) 0个B) 1个C) 2个D) 3个()15.操作系统提供的系统调用大致可分类为A)文件操作类、资源申请类、控制类、设备调用类B)文件操作类、资源申请类、控制类、信息维护类C)文件操作类、资源申请类、信息维护类、设备调用类D)资源申请类、控制类、信息维护类、设备调用类()16.为了对交互式作业进行控制,操作系统为用户提供了一些常用的操作使用接口,不属于操作使用接口的是A)操作控制命令B)系统调用C)菜单技术D)窗口技术()17.设置快表的目的在于A)提高地址查找的命中率B)提高地址变换速度C)淘汰不用的页D)增加页表的容量()18.下面页面淘汰算法会产生Belady异常现象的是A)先进先出页面淘汰算法(FIFO)B)最近最少使用页面淘汰算法(LRU)C)最不经常使用页面淘汰算法(LFU)D)最佳页面淘汰算法(OPT)()19.从使用的角度来分析设备的特性,可以把设备分成A)物理设备和逻辑设备B)绝对设备和相对设备C)低速设备和高速设备D)独占设备和共享设备()20.逻辑文件存放在到存储介质上时,采用的组织形式是与A)逻辑文件结构有关的B)存储介质特性有关的C)主存储器管理方式有关的D)分配外设方式有关的()21.在设计批处理系统时,首先要考虑的是A)灵活性和可适应性B)交互性和响应时间C)周转时间和系统吞吐量D)实时性和可靠性()22.把一个程序在一个数据集合上的一次执行称为一个进程。
国防科技大学2002年操作系统考研试题1,将“i/o为主“的进程定义为:当次类进程单独运行时,用于i/o 处理的时间远远多于处理机的处理时间:将”计算机为主“的进程定义为:当此类进程单独运行时,处理机的处理时间原远远多于处理的时间,若系统中运行的主要是这2类进程,才用什么样的调度算法更有利于资源的利用率,为什么?2。
请给出pcb的主要内容,描述当进程发生下面的状态转换是时:就绪—》运行,运行-》阻塞,操作系统要使用/修改pcb 中的那些内容?3。
请问,在一个进程内使用多现程有什么优点?4。
设系统有下面的解决死锁的办法:银行家算发;检测死锁,终止死锁状态的进程,释放该进程所占有的资源资源预分配请问那种办法可以达到最大的并发性,也就是那种办法可以让更多的进程无等待的向前推进?请按并发性的大小排列5。
请描叙页式虚存管理系统中页表项的主要内容,请简要描叙”缺页中断‘的处理过程,并结合该过程,说明其中使用/修改了表项的哪些内容,6。
简述os对文件读/写的系统调用所完成的工作7,简述以程述中断i/o方式,从外设读入一包n个字节的数据块的过程8若可以让文件分别在开始,中间,未尾增长,试讨论在顺述式,链接式以及索引式文件物理组织下的开销9。
(1)给出无忙等待的p,v操作的定义(1)考虑以下p,v操作的定义p(s):if s.value>0thens.value =s.value-1else beginplace this process in s.queue;block;end ;v(s)if there is at least one process waitting on semaphorethen beginremove a process p from s.queueplace process p on ready listendelses.value=s.value +1请问,当使用信号量和p,v操作做进程的同步和互斥控制时,是否可以在不改动程束时的情况下互换的使用(1)(2)中的p,v操作?这2组p,v操作有何不同?10,某工厂有3个生产车间和一个装配车间,3个生产车间分别生产a。
••信号量应用问题:End;Pare nd.写出程序描述下列前趋关系。
1 endS2->S4, S1->S3, S1->S2,S2->S5 , S3->S6, S4->S7,2•请用信号量实现4X 10(4人,每S5->S7, S6->S7人100Var s1,s2, s3,s4:semaphore:=0, 0米, )接力赛的同步过程。
提示:前趋图同步问题,可设0, 0; 4个进程,三个信号量,进程 1 只设BeginV操作,进程4只设ParbeginP操作,其余进程先做P操作再做V P1:begi n 操作。
Var s1,s2,s3:semaphore:=0, 0, 0;.; …Begin V(s1);Parbegin V(s1);Athlete1: begin End;Run 100m; P2: beginV(s1); P(s1);End; …;Athlete2: begin V(s2);P(s1) V(s2);Run 100m; End;V(s2); P3: beginEnd; P(s1)Athlete3: begin …P(s2) ;V(s3)P(s2);Athlete4: begin …P(s3);V(s4);P(s2);Parend ..;endV(s4);3.设公共汽车上,司机和售票员的活 End;动分别是: P6: begin司机:售票员: P(s3)启动车辆 ..xx 乘客V(s4)正常行车关车门到站停车售票 End;P7:begin 开车门P(s4);P(s4)下乘客P(s4)在汽车不断地到站、停车、行驶过 END;程中,这两个活动有什么同步关系? CoEnd;END;请用信号量机制实现他们的同步。
假定初始状态为停车状态,引入信/- 生产者消费者问题:和 Run :号量Stopl BEGIN.桌上有一个可以 xx 两个水果的Run 100m; End;V(s3); P4: beginEnd; Run 100m; P5: beginEnd;盘子,每次只能放或取一个水果爸semaphore Stop,Run;爸放苹果妈妈放橘子,两个儿子Stop:=Run:=0; 吃苹果,两个女儿吃橘子。
信号量应用问题:1.写出程序描述下列前趋关系。
S1->S2, S1->S3, S2->S4, S2->S5 , S3->S6, S4->S7, S5->S7, S6->S72. 请用信号量实现4×100(4人,每人100米)接力赛的同步过程。
提示:前趋图同步问题,可设4个进程,三个信号量,进程1只设V操作,进程4只设P操作,其余进程先做P 操作再做V操作。
3.设公共汽车上,司机和售票员的活动分别是:司机:售票员:启动车辆上乘客正常行车关车门到站停车售票开车门下乘客在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?请用信号量机制实现他们的同步。
生产者消费者问题:1.桌上有一个可以容纳两个水果的盘子,每次只能放或取一个水果。
爸爸放苹果妈妈放橘子,两个儿子吃苹果,两个女儿吃橘子。
试用信号量和P、V操作,编写实现爸爸、妈妈、儿子和女儿的并发工作程序。
2、有一个仓库存放两种零件A和B,最大库容量各为m个。
有一车间不断地取A和B进行装配,每次各取一个。
为了避免零件锈蚀,遵循线入库者先出库的原则。
有两组供应商分别不断地供应A和B(每次一个),为保证齐套和合理库存,当某种零件的数量比另一种数量超过n(n<m)个时,暂停对数量大的零件的进货,集中补充数量少的零件。
试用P、V操作正确实现之。
3、有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大,但要求:每次只能存入一种产品(X或Y); -N<A产品数量-B产品数量<M。
其中,N和M时正整数。
试用“存放A”、“存放B”和P、V 操作描述产品A与产品B的入库过程。
A-B<M说明:如果只放A不放B,则A 最多可放M-1个,如果多放一个B,则可以多放一个A。
B-A<N说明:如果只放B不放A,则B 最多可放N-1个,如果多放一个A,则可以多放一个B。
V(Mutex);读者写者问题:1、多个进程共享一个文件,其中只读文件的程值为读者,其余只写文件的称为写者。
信号量应用问题:1.写出程序描述下列前趋关系。
S1->S2, S1->S3, S2->S4, S2->S5 , S3->S6, S4->S7, S5->S7, S6->S7Var s1,s2, s3,s4:semaphore:=0, 0, 0, 0;BeginParbeginP1: begin….;V(s1);V(s1);End;P2: beginP(s1);…;V(s2);V(s2);End;P3: beginP(s1)…V(s3)End;P4: beginP(s2);…V(s4);P5: beginP(s2);..;V(s4);End;P6: beginP(s3)..V(s4)End;P7:beginP(s4);P(s4);P(s4);…End;Parendend2. 请用信号量实现4×100(4人,每人100米)接力赛的同步过程。
提示:前趋图同步问题,可设4个进程,三个信号量,进程1只设V操作,进程4只设P操作,其余进程先做P 操作再做V操作。
Var s1,s2,s3:semaphore:=0, 0, 0; BeginParbeginAthlete1: beginRun 100m;V(s1);End;Athlete2: beginP(s1)Run 100m;V(s2);End;Athlete3: beginP(s2) ;Run 100m;V(s3);End;Athlete4: beginP(s3);Run 100m;End;Parendend3.设公共汽车上,司机和售票员的活动分别是:司机:售票员:启动车辆上乘客正常行车关车门到站停车售票开车门下乘客在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?请用信号量机制实现他们的同步。
/-假定初始状态为停车状态,引入信号量Stop和Run:BEGINsemaphore Stop,Run;Stop:=Run:=0;CoBeginDriver: BEGINRepea tWa it(Run);启动车辆;正常行驶;到站停车;Si gnal(Stop);Until False;END;Conductor:BEGINRepea t上乘客;关车门;Si gnal(Run);售票;Wa it(Stop);开车门;下乘客;Until False;END;CoEnd;END;生产者消费者问题:1.桌上有一个可以容纳两个水果的盘子,每次只能放或取一个水果。
爸爸放苹果妈妈放橘子,两个儿子吃苹果,两个女儿吃橘子。
试用信号量和P、V操作,编写实现爸爸、妈妈、儿子和女儿的并发工作程序。
Mutex实现互斥放或取水果。
empty盘子可放水果数Apple 盘子中放的苹果数Orange 盘子中放的橘子数Semaphore mutex=1;Semaphore empty=2;Semahpore apple=0;Semahpore orange=0;Main(){CobeginFather();Mother();Son();Daughter();;Coend)}Father(){While(true){ p(empty)P(mutex)放苹果V(mutex)V(apple)}}Mother(){While(true){ p(empty)P(mutex)放橘子V(mutex)V(orange)}}Son(){While(true){ p(apple)P(mutex)取苹果V(mutex)V(empty)}}Daughter(){While(true){ p(orange)P(mutex)取橘子V(mutex)V(empty)}}2、有一个仓库存放两种零件A和B,最大库容量各为m个。
有一车间不断地取A和B进行装配,每次各取一个。
为了避免零件锈蚀,遵循线入库者先出库的原则。
有两组供应商分别不断地供应A和B(每次一个),为保证齐套和合理库存,当某种零件的数量比另一种数量超过n(n<m)个时,暂停对数量大的零件的进货,集中补充数量少的零件。
试用P、V操作正确实现之。
semaphore mutex=1, emptya=emptyb=m, fulla=fullb=0, sa=sb=n;main(){ CoBeginProvider_A(); / /零件A供应商Provider_B(); / /零件B供应商Assembling_Shop(); //装配车间CoEnd}Provider_A(){ while(true){ p(emptya);p(sa);p(mutex);将零件A放入仓库;v(mutex);v(fulla);v(sb);}}Provider_B(){ while(true){ p(emptyb);p(sb);p(mutex);将零件B放入仓库;v(mutex);v(fullb);v(sa);}}Assembling_Shop(){ while(true){ p(fulla);p(fullb);p(mutex);装配零件;v(mutex);v(emptya);v(emptyb);}}3、有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大,但要求:每次只能存入一种产品(X或Y);-N<A产品数量-B产品数量<M。
其中,N和M时正整数。
试用“存放A”、“存放B”和P、V操作描述产品A与产品B的入库过程。
A-B<M说明:如果只放A不放B,则A 最多可放M-1个,如果多放一个B,则可以多放一个A。
B-A<N说明:如果只放B不放A,则B 最多可放N-1个,如果多放一个A,则可以多放一个B。
/2-BEGINMutex,SA,SB:semaphore;Mutex:=1;SA:=M-1;SB:=N-1;parBeginprocess PABeginloop:P(SA);P(Mutex);存放A;V(Mutex);V(SB);Goto loop;End;process PBBeginloop:P(SB);P(Mutex);存放B;V(Mutex);V(SA);Goto loop;End;parEnd;END;/北大91读者写者问题:1、多个进程共享一个文件,其中只读文件的程值为读者,其余只写文件的称为写者。
读者可以同时读,但写者只能独立地写。
说明进程间的相互制约关系,应设置哪些信号量?用P、V操作写出其同步算法;修改上述算法,使得它对写者优先,即一旦有写者到达,后续的读者都必须等待,而无论是否有读者在读文件。
(该问题的又一提法:在一个飞机订票系统中,多个用户共享一个数据库。
多用户同时查询是可以接受的,但若一个用户要订票需更新数据库时,其余所有用户都不可以访问数据库。
请画出用户查询与订票的逻辑框图(等价于同步进程的描述的图式表示)。
为了提高写者的优先级,增加一个信号量S,用于在写进程到达后封锁后续的读者Semaphore mutex=1;Semaphore write=1;Semahpore s=1;Int count =0;Main(){CobeginReader();Writer();Coend;}Reader(){ while(true){P(s);P(mutex);If(count==0)p(write);Count++;V(s);读文件;P(mutex)Count--;If(count==0)v(write);V(mutex);}}Writer(){While(true){ p(s);P(write);写文件;V(write);V(s);}}2.某一桥只有一车道,载重为4辆车,用P、V操作实现两方向的车过桥。
本题本质上可以认为是读者写者问题,往同一个方向的车可以认为是读者,往相反方向的车可以认为是写者。
但是由于桥的重量有限,增加了读者之间的互斥。
本题的临界资源显然是单通道的桥,首先如果桥上有向东方向的车,那么向西方向的车一定不能过,如果超过4辆,同一方向的车也不能过,需要互斥。
设信号量mutex,实现双向车子互斥通行;信号量sew,swe表示由西向东与由东向西的负荷数,初值为4;整数型iew,iwe表示各方向的车子数,初值为0;siew,siwe实现对iew,iwe 的互斥访问,初值为1;Process 由东向西的车子;BeginP(sew);P(siew);Iew:=iew+1;If iew=1 then p(mutex);V(siew);过桥;P(siew);Iew:=iew-1;If iew=0 then v(mutex);V(siew);V(sew)EndPorcess 由西向东BeginP(swe);P(siwe);Iwe:=iwe+1;If iwe=1 hten p(mutex);V(siwe);过桥;P(siwe);Iwe:=iwe-1;If iwe=0 then v(mutex);V(siwe);V(swe)End;理发师睡觉问题:1.(睡眠的理发师问题)理发店有一个等候室(其中有N把椅子)和一个理发室(一把理发椅组成)。
如果没有顾客来理发,理发时就在理发椅上睡觉,如果一个走进理发店,发现等候室的椅子都坐满就离开理发店;如果理发师正忙于理发,那么该顾客就坐在一把空椅子上等待;若理发师正在睡觉,则顾客就唤醒他。
用P、V操作写出工作流程。
考点:用PV原语实现同步Semaphore costomers=0; 等候的顾客数(不包括正在理发的)Semaphore barbers=0; 等候顾客的理发师数Semaphore mutex=1;Int waiting =0; 等候的顾客数(还没有理发,实际是customers的备份,为了读取信号量的当前值);Void barber(void){ while (true){ P(customers);P(mutex);waiting = waiting – 1 ;V(barbers);V(mutex);cut_hair( );}顾客进程Void customers(void){P(mutex);if(waiting<chairs){ waiting = waiting + 1 ;V(customers);V(mutex);P(barbers);get_hair( );}else {V(mutex);}}提示:考虑一下理发师(barber)重复的下列活动:(1)睡觉;(2)为顾客理发;顾客(customers)重复的下列活动:(3)在椅子上等候;(4)理发;离开;显然,理发师在(1)处要考察是否有顾客等候理发,如果没有,理发师睡觉;在(2)处理发师等待最先进入理发店的顾客唤醒,开始理发。