欢迎来到天天文库
浏览记录
ID:41093967
大小:36.50 KB
页数:8页
时间:2019-08-16
《c操作系统专题 信号量基本概念题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第一部分:信号量基本概念1Whatisthemeaningofthetermbusywaiting?Whatotherkindsofwaitingarethereinanoperatingsystem?Canbusywaitingbeavoidedaltogether?Explainyouranswer.答:忙等是整形信号量固有的问题。当一个进程无法进入临界区时,仍然在就绪队列中,也可能占有CPU,浪费了CPU时间。整形信号量也称自旋锁,有时在多处理器系统中也有用。操作系统中其它种类的等待还有进程在等待队列中等待I/O完成、记录型信号量的阻塞式等待。但这些
2、等待不是“忙等”,因为他们在等待队列中,不可能占CPU。采用了记录型信号量后,消除了“忙等”82Showthat,ifthewaitandsignaloperationsarenotexecutedatomically,thenmutualexclusionmaybeviolated答:假如信号量为S,P/V操作是两个并发的进程(或线程)。这时可以看到:S既是信号量,也是P/V操作的共享变量!如果P/V操作不是原子的,那么P修改S期间V操作可能插入,反之亦然。这可能会使S的值出现错误。83.何谓与时间有关的错误?举例说明之。答:多个并发进程竟争使用同一个共
3、享变量,可能会造成共享变量的值出错,这种错误与进程推进的时间有关。这种错误不是必然会发生的,有很大偶然性。一旦发生很难检侧出来,是并发程序设计的一个重大问题。教材P48-48演示了这种错误,但没有明确指出这是“与时间有关的错误”84.试分析临界区的大小与系统并发性之间的关系。答:关于同一组变量的临界区域是不能并发执行的代码(只能串行执行),临界区越大,并发性越差,因而编写并发程序应尽量减小临界区域的大小和执行时间。在实际工作中,数据库的事务也是临界区,要特别注意它的“粒度”,即临界区代码。85.设CR1是关于一组共享变量SV1的临界区,CR2是关于另一组共
4、享变量SV2的临界区,当进程P1进入CR1,进程P2是否可进入CR2?为什么?答:可以,因为SV1和SV2是没有关系的共享变量,CR1和CR2不需要互斥。86.由V操作唤醒的进程是否一定能够直接进入运行状态?举例说明之。答:不能。因为进程从等待态唤醒后,要先进入就绪队列等待CPU调度。只有当CPU轮到它时,才进入运行态。87.设S1和S2为两个信号灯变量,下列八组PV操作哪些可能同时进行?哪些不可能同时进行?为什么?(1)P(S1),P(S2)(2)P(S1),V(S2)(3)V(S1),P(S2)(4)V(S1),V(S2)(5)P(S1),P(S1)(
5、6)P(S2),V(S2)(7)V(S1),P(S1)(8)V(S2),V(S2)答:对同一个信号量的P/V操作都是原子的,因此不可能是同时的。对同一信号量的PV操作即是原子的也是互斥的(问题:只要是原子的就是互斥的,对吗?),不能同时进行。答案应该是:能同时进行的有:(1)(2)(3)(4)不能同时进行的有:(5)(6)(7)(8)88有人认为:所谓解决进程互斥和同步问题,实际上是在需要互斥和同步时,将并发流转为串行流,对吗?为什么?答:不严格的说是这样。比如说互斥时只有一个进程能进临界区;生产者满箱时不能再生产,此时只有消费者才能推进。这种转换即是必要
6、的,也“影响了”并发性。在并发程序设计中,应尽量避面此类转换,比如说尽量少用共享变量。8
此文档下载收益归作者所有