当前位置:首页 > 计算机操作系统[第三章] 汤子瀛版
P(c[I-1 mod 5]); P(c[I]); Eat; V(c[I]);
V(c[I-1 mod 5]); } End
11 在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据
进行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法. int mutex=1; int empty=n; int full=0; int in=0; int out=0; main() {
cobegin send(); obtain(); coend }
send() {
while(1) { . .
collect data in nextp; . .
wait(empty); wait(mutex); buffer(in)=nextp; in=(in+1) mod n; signal(mutex); signal(full); }
}//send obtain() {
while(1) {
wait(full);
wait(mutex);
nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty);
culculate the data in nextc; }//while }//obtain
12 画图说明管程由哪几部分组成?为什么要引入条件变量?
管程由三部分组成:局部于管程的共享变量说明;对该数据结构进行操作的一组过程;对局部于管程的
数据设置初始值的语句. (图见P80)
因为调用wait原语后,使进程等待的原因有多种,为了区别它们,引入了条件变量. 13 如何利用管程来解决生产者-消费者问题? (见P82)
14 什么是AND信号量?试利用AND信号量写出生产者-消费者问题的解法.
为解决并行所带来的死锁问题,在wait操作中引入AND条件,其基本思想是将进程在整个运行过程中所
需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放. 解决生产者-消费者问题可描述如下: var mutex,empty,full: semaphore:=1,n,0; buffer: array[0,...,n-1] of item; in,out: integer:=0,0; begin parbegin
producer: begin repeat . .
produce an item in nextp; . .
wait(empty);
wait(s1,s2,s3,...,sn); //s1,s2,...,sn为执行生产者进程除empty外其余的条件 wait(mutex);
buffer(in):=nextp; in:=(in+1) mod n; signal(mutex); signal(full);
signal(s1,s2,s3,...,sn); until false; end
consumer: begin repeat
wait(full);
wait(k1,k2,k3,...,kn); //k1,k2,...,kn为执行消费者进程除full外其余的条件 wait(mutex);
nextc:=buffer(out); out:=(out+1) mod n; signal(mutex); signal(empty);
signal(k1,k2,k3,...,kn); consume the item in nextc; until false; end parend end
15 在单处理机环境下,进程间有哪几种通信方式? a. 共享存储器系统通信方式; b. 消息传递系统通信方式; c. 管道通信方式.
16 试比较进程间的低级通信工具与高级通信工具.
用户用低级通信工具实现进程通信很不方便,因为其效率低,通信对用户不透明,所有的操作都必须
由程序员来实现. 而高级通信工具则可弥补这些缺陷,用户可直接利用操作系统所提供的一组通信命令,
高效地传送大量的数据.
17 消息队列通信机制应有哪几方面功能? 略
18 试比较消息队列与管道通信机制.
a. 所谓管道,是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件.
管道通信是属于共享存储器系统的.
b. 消息队列通信机制属于消息传递系统通信机制,存在通信链路,有消息的格式,有若干缓冲队列,
采用独特的发送原语和接收原语. (详见P89-90) 10.试比较FCFS和SPF两种进程调度算法
答:FCFS进程调度算法:一种最简单的调度算法,比较有利于长作业(进程),而不利于短作业(进程)
SPF进程调度算法:对短作业或短进程优先调度的算法。该算法对长作业不利。
共分享92篇相关文档