操作系统计算题总结.doc

操作系统计算题总结.doc

ID:53564631

大小:366.00 KB

页数:17页

时间:2020-04-04

操作系统计算题总结.doc_第1页
操作系统计算题总结.doc_第2页
操作系统计算题总结.doc_第3页
操作系统计算题总结.doc_第4页
操作系统计算题总结.doc_第5页
资源描述:

《操作系统计算题总结.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、应用类型知识要点一:进程同步问题整形信号量:未遵循“让权等待原则”wait(S):whileS<=0dono-op;S:=S-1;signal(S):S:=S+1记录型信号量:执行wait操作时,信号量的值加1,信号量的值小于0时阻塞;执行signal操作时,信号量的值减1,信号量的值小于等于0时唤醒阻塞中的进程。typesemaphore=recordvalue:integer;L:listofprocess;endprocedurewait(S)varS:semaphore;beginS.value=S.value-1;ifS.value<0thenb

2、lock(S.L);endproceduresignal(S)varS:semaphore;beginS.value:=S.value+1;ifS.value<=0thenwakeup(S.L);end17Ø生产者-消费者问题Ø读者-写者问题Ø哲学家进餐问题Ø理发室问题进程同步问题求解要领Ø认真审题、确立信号量及关键变量Ø构建算法基本步骤及逻辑结构Ø资源信号量申请先于互斥信号量申请Øwait操作与signal操作配对出现利用信号量实现互斥主程序子程序Varmutex:semaphore:=1;beginparbeginprocess1;process2;p

3、arendendprocess1beginrepeatwait(mutex);临界区signal(mutex);……untilfalseendprocess2beginrepeatwait(mutex);临界区signal(mutex)……untilfalseend1.互斥信号量初值为12.互斥信号量wait和signal肯定出现在同一进程中,并出现在需要互斥访问数据(临界资源)前后利用信号量描述前趋关系Vara,b,c,d,e,f,g,h:semaphore:=0,0,0,0,0,0,0,0;beginparbeginbeginS1;signal(a);

4、signal(b);endbeginwait(a);S2;signal(c);signal(d);endbeginwait(b);S3;signal(e);endbeginwait(c);S4;signal(f);endbeginwait(d);S5;signal(g);endbeginwait(e);S6;signal(h);endbeginwait(f);wait(g);wait(f);S7;endparendendS1S2S3S4S5S6S7abcdefhg首先应找出所有的前趋关系。然后,对每一种前趋关系,如Si->Sj,专门设置一初值为0的信号量,

5、并在Si结束之后执行对该信号量的signal操作,而在Sj开始之前执行对该信号量的wait操作,这样便可保证程序段Si执行完后才执行程序段Sj。17生产者-消费者问题主程序(n为常量)Varbuffer:array[0,…,n-1]ofitem;in,out:integer:=0,0;mutex,empty,full:semaphore:=1,n,0;beginparbeginproducer1;…;produceri;…;producerM;consumer1;…consumerj;…;consumerN;parendend生产者子程序消费者子程序pro

6、duceriVarnextp:item;beginrepeatProduceaniteminnextp;wait(empty);wait(mutex);buffer[in]:=nextp;in=(in+1)modn;signal(mutex);signal(full);untilfalseendconsumerjVarnextc:item;beginrepeatwait(full);wait(mutex);nextc:=buffer[out];out:=(out+1)modn;signal(mutex);signal(empty);Consumetheit

7、eminnextc;untilfalseend生产者子程序(基于AND信号量)消费者子程序(基于AND信号量)produceribeginrepeatProduceaniteminnextp;Swait(empty,mutex);buffer[in]=nextp;in:=(in+1)modn;Signal(mutex,full);untilfalseendconsumerjbeginrepeatSwait(full,mutex);nextc:=buffer[out];out:=(out+1)modn;Ssignal(mutex,empty);Consume

8、theiteminnextc;untilfalseend17读者-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。