




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 3 章 部分习题答案3.2 . 为什么进程在进入临界区之前,应先执行"进入区 "代码,在退出临界区后又执行"退出区 "代码 ?为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为 " 进入区 " 代码;在退出临界区后,必须执行 "退出区 " 代码,用于恢复未被访问标志.3.3 同步机构应遵循哪些基本准则 ?为什么 ?a. 空闲让进
2、 .b. 忙则等待 .c. 有限等待 .d. 让权等待 .3.6 你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条准则 ?a. 在整型信号量机制中,未遵循 " 让权等待 " 的准则 .b. 记录型信号量机制完全遵循了同步机构的 " 空闲让进 , 忙则等待 , 有限等待 , 让权等待" 四条准则 .3.9 在生产者消费者问题中,如果缺少了 signal(full) 或 signal(empty), 对执行结果会有何影响?生产者消费者问题可描述如下:var mutex,empty,full: semaphore:=1,n,0;buffer
3、: array0,.,n-1 of item;in,out: integer:=0,0;beginparbeginproducer: beginrepeat produce an item in nextp;wait(empty);wait(mutex); buffer(in):=nextp;in:=(in+1) mod n; signal(mutex);/* * */signal(full);/*/until false;endconsumer: beginrepeatwait(full);wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;
4、signal(mutex);/* * */signal(empty);/* * */consume the item in nextc;until false;endparendend可见,生产者可以不断地往缓冲池送消息,如果缓冲池满,就会覆盖原有数据,造成数据混乱. 而消费者始, 造成无限等待 .终因 wait(full) 操作将消费进程直接送入进程链表进行等待,无法访问缓冲池3.10 在生产者消费者问题中,如果将两个wait 操作即 wait(full) 和 wait(mutex) 互换位置;或者是将signal(mutex) 与 signal(full) 互换位置结果会如何 ?var m
5、utex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;begin parbegin producer: begin repeat produce an item in nextp;wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;/* * */ signal(full);signal(mutex);/* * */ until false;end consumer: begin repeat /* * */ wait
6、(mutex);wait(full);/* * */ nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);consume the item in nextc;until false;end parendendwait(full) 和 wait(mutex) 互换位置后,因为mutex 在这儿是全局变量,执行完wait(mutex) ,则 mutex赋值为 0 , 倘若 full 也为 0 ,则该生产者进程就会转入进程链表进行等待, 而生产者进程会因全局变量mutex为 0 而进行等待,使full 始终为0,这样就形
7、成了死锁.而 signal(mutex) 与 signal(full) 互换位置后,从逻辑上来说应该是一样的 .3.11 我们为某临界区设置一把锁W当 W=1时,表示关锁;W=0时,表示锁已打开.试写出开锁原语和关锁原语,并利用它们去实现互斥.开锁原语 :unlock(W):W=0;关锁原语 :lock(W);if(W=1) do no_op;W=1;利用开关锁原语实现互斥 :var W: semaphore:=0;beginparbeginprocess :beginrepeatlock(W);critical sectionunlock(W);remainder sectionuntil
8、false;endparend3.12 试修改下面生产者消费者问题解法中的错误:producer:begin ducer an item in nextp;wait(mutex);wait(full); /* 应为 wait(empty), 而且还应该在wait(mutex) 的前面 */buffer(in):=nextp;/* 缓冲池数组游标应前移: in:=(in+1) mod n; */signal(mutex);/* signal(full); */until false;endconsumer:begin repeat wait(mutex);wait(empty
9、); /* 应为 wait(full), 而且还应该在wait(mutex) 的前面 */nextc:=buffer(out);out:=out+1; /* 考虑循环,应改为 : out:=(out+1) mod n; */ signal(mutex);/* signal(empty); */ consumer item in nextc;until false; end3.13 试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法.设初始值为 1 的信号量 cI 表示 I 号筷子被拿(I=1,2,3,4,.,2n),其中 n 为自然数 .send(I): Begin if I mod
10、 2=1 then P(cI); P(cI-1 mod 5); Eat;V(cI-1 mod 5);V(cI); else P(cI-1 mod 5); P(cI);Eat;V(cI);V(cI-1 mod 5); End 3.14 在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数 据进行计算 . 试写出利用信号量机制实现两者共享单缓冲的同步算法.int mutex=1;int empty=n;int full=0;int in=0;int out=0; main()cobeginsend();obtain();coendsend()while(1).co
11、llect data in nextp;.wait(empty);wait(mutex);buffer(in)=nextp;in=(in+1) mod n;signal(mutex);signal(full);/sendobtain()while(1)wait(full);wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empty);culculate the data in nextc;/while/obtain3.19什么是AND言号量?试利用AND言号量写出生产者消费者问题的解法.为解决并行所带
12、来的死锁问题,在wait操作中引入AND条件,其基本思想是将进程在整个运行过程中所需要的所有临界资源,一次性地全部分配给进程,用完后一次性释放 .解决生产者消费者问题可描述如下:var mutex,empty,full: semaphore:=1,n,0;buffer: array0,.,n-1 of item;in,out: integer:=0,0;beginparbeginproducer: 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;endconsumer: beginrepeatwait(full);wait(k1,k2,k3,.,kn); /k1,k2,.,kn为执行消费者进程除full 外其余的条件wait(mutex);nextc:=buffer(out);out:=(out+1) mod n;signal(mutex);signal(empt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年网络安全技术发展趋势试题及答案
- 启发灵感2025年软件设计师考试试题及答案
- 2025年软考设计师考试获胜秘籍及试题及答案
- 商业模式优化计划
- 2025年软考设计师快速提升试题及答案
- 广西百色市德保县2025年数学七下期末质量检测试题含解析
- 优化市场渠道建设的工作计划
- 建立内部控制制度保障资金安全计划
- 生物学科跨学科教案设计计划
- 山东省威海市文登区实验中学2025届七下数学期末质量检测试题含解析
- 《心房颤动》课件
- 静脉输液操作考试流程
- 校园艺术团指导教师聘用合同
- 药店管理系统
- 物理化学知到智慧树章节测试课后答案2024年秋华东理工大学
- 装修代售合同范文
- TDT1055-2019第三次全国国土调查技术规程
- 行政伦理学-终结性考核-国开(SC)-参考资料
- 【初中道法】树立正确的人生目标(课件)-2024-2025学年七年级道德与法治上册(统编版2024)
- 门禁维修维护方案
- 岩块声波测试作业指导书
评论
0/150
提交评论