以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 操作系统原理 』 (http://bbs.xml.org.cn/list.asp?boardid=63) ---- [求助]PV操作控制两组进程的疑问 (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=41557) |
-- 作者:Maxwin_ -- 发布时间:12/24/2006 2:57:00 PM -- [求助]PV操作控制两组进程的疑问 有一个文件F供进程共享,现把这些进程分成A B两组,规定同一组的进程可以同时进行读; 但当有A组(或B组)在读时就不允许另一组进行读。 //貌似有个过桥问题也是如此 不知道分析的是否正确,同时求解决方法。 //以下是书上的答案: readA { P(SAB); CA ++; if (CA == 1) P(SB); //无意义 V(SAB); read F; P(SAB); readB { read F; P(SAB); 但是当A B两组进程同时进行时,SA和SB并没有什么作用。可能出现以下情况造成A B进程在同时读 A1: P(SAB); //申请成功,继续 read F; P(SAB); readB { read F; P(SAB); 但这个按如下步骤会造成死锁: ================================= read F; P(SAB); readB {... B1: P(SAB); //成功
|
-- 作者:Maxwin_ -- 发布时间:12/24/2006 3:06:00 PM -- SAB: 互斥信号量 SA, SB用于A B两组进程的同步信号量 CA, CB用于记录各组读进程数的共享变量 SAB = SA = SB = 1; |
-- 作者:Maxwin_ -- 发布时间:12/24/2006 4:10:00 PM -- 想了下,这样应该没问题了 SAB: 用于A B两组互斥的信号量 SA:A组对CA进行操作的互斥信号量 SB:B组对CB进行操作的互斥信号量 CA, CB用于记录当前各组中在读进程 SAB = SA = SB = 1; readAi { READ F; P(SA); readBi { READ F; P(SB); |
-- 作者:小南航 -- 发布时间:1/5/2007 4:47:00 PM -- 惭愧 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
113.281ms |