操作系统计算题总结Word下载.doc
- 文档编号:14180544
- 上传时间:2022-10-19
- 格式:DOC
- 页数:17
- 大小:366KB
操作系统计算题总结Word下载.doc
《操作系统计算题总结Word下载.doc》由会员分享,可在线阅读,更多相关《操作系统计算题总结Word下载.doc(17页珍藏版)》请在冰豆网上搜索。
semaphore;
begin
S.value=S.value-1;
ifS.value<
0thenblock(S.L);
end
proceduresignal(S)
S.value:
=S.value+1;
=0thenwakeup(S.L);
Ø
生产者-消费者问题
读者-写者问题
哲学家进餐问题
理发室问题
进程同步问题求解要领
认真审题、确立信号量及关键变量
构建算法基本步骤及逻辑结构
资源信号量申请先于互斥信号量申请
wait操作与signal操作配对出现
利用信号量实现互斥
主程序
子程序
Varmutex:
semaphore:
=1;
begin
parbegin
process1;
process2;
parend
end
process1
repeat
wait(mutex);
临界区
signal(mutex);
……
untilfalse
process2
signal(mutex)
1.互斥信号量初值为1
2.互斥信号量wait和signal肯定出现在同一进程中,并出现在需要互斥访问数据(临界资源)前后
利用信号量描述前趋关系
Vara,b,c,d,e,f,g,h:
=0,0,0,0,0,0,0,0;
beginS1;
signal(a);
signal(b);
beginwait(a);
S2;
signal(c);
signal(d);
beginwait(b);
S3;
signal(e);
beginwait(c);
S4;
signal(f);
beginwait(d);
S5;
signal(g);
beginwait(e);
S6;
signal(h);
beginwait(f);
wait(g);
wait(f);
S7;
S1
S2
S3
S4
S5
S6
S7
a
b
c
d
e
f
h
g
首先应找出所有的前趋关系。
然后,对每一种前趋关系,如Si->
Sj,专门设置一初值为0的信号量,并在Si结束之后执行对该信号量的signal操作,而在Sj开始之前执行对该信号量的wait操作,这样便可保证程序段Si执行完后才执行程序段Sj。
生产者-消费者问题
主程序(n为常量)
Varbuffer:
array[0,…,n-1]ofitem;
in,out:
integer:
=0,0;
mutex,empty,full:
=1,n,0;
producer1;
…;
produceri;
producerM;
consumer1;
…consumerj;
consumerN;
生产者子程序
消费者子程序
produceri
Varnextp:
item;
Produceaniteminnextp;
wait(empty);
wait(mutex);
buffer[in]:
=nextp;
in=(in+1)modn;
signal(full);
consumerj
Varnextc:
wait(full);
nextc:
=buffer[out];
out:
=(out+1)modn;
signal(empty);
Consumetheiteminnextc;
生产者子程序(基于AND信号量)
消费者子程序(基于AND信号量)
Swait(empty,mutex);
buffer[in]=nextp;
in:
=(in+1)modn;
Signal(mutex,full);
Swait(full,mutex);
Ssignal(mutex,empty);
读者-写者问题(读者优先)
Varreadercount:
integer:
=0;
rcmutex,wmutex:
=1,1;
reader1;
readeri;
readerM;
writer1;
writerj;
writerN;
读者
readeri
wait(rcmutex);
ifreadercount=0thenwait(wmutex);
readercount:
=readercount+1;
signal(rcmutex);
Performreadoperation;
=readercount-1;
ifreadercount=0thensignal(wmutex);
写者
writerj
wait(wmutex);
Performwriteoperation;
signal(wmutex);
untilfalse;
readercount:
读者数
rcmutex:
读者进程中用于readercount变量的互斥访问
wmutex:
用于读者与写者、写者与写者之间的互斥访问
写者与第一个读者竞争wmutex。
一旦读者获得wmutex,那么直到所有读者执行结束由最后一个读者释放,而每个写者执行结束都释放,所以读者优先写者执行。
读者-写者问题(写者优先)
Varreadercount,writercount:
rcmutex,wcmutex,wmutex,S:
=1,1,1,1;
wait(S);
signal(S);
wait(wcmutex);
ifwritercount=0thenwait(S);
writercount:
=writercount+1;
signal(wcmutex);
=writercount-1;
ifwritercount=0thensignal(S);
wcmutex:
写者进程中用于writercount变量的互斥访问
用于读者与写者、写者与写者之间的互斥访问
读者与第一个写者竞争S信号量。
一旦读者获得S信号量,那么直到所有读者执行结束由最后一个写者释放,而每个读者执行结束都释放,所以写者优先读者执行。
读者-写者问题(限定读者数)
VarRN:
=10;
rmax,wmutex:
=RN,1;
=Swait(rmax,1,1,wmutex,1,0);
Swait(rmax,1,1);
Swait(wmutex,1,0);
Ssignal(rmax,1);
Swait(wmutex,1,1,rmax,RN,0);
Performwriteoperation
Signal(wmutex);
RN:
限定最多同时读的读者数
rmax:
空位置的数目,即系统还允许执行读操作的读者数,超过这个数目后读者将等待
读者执行Swait(wmutex,1,0)保证无写者(wmutex值保持不改变)
写者执行Swait(wmutex,1,1,rmax,RN,0)保证既无写者在写又无读者在读(rmax值保持不变)
哲学家进餐问题
Varchopstick:
array[0,…,4]ofsemapho
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 算题 总结