有三组并发进程:读者、写者和管理者,它们共享一组数据区,大小为N,写者每次写入一个单位的数据,管理者每次删除一个单位的数据。允许多个读者同时执行读操作;不允许读者、写者、管理者同时操作;有写者等待时,如有其它读者正在读,则新读者也可以读(即读优先);不允许多个写者同时操作;写满后必须等待管理者删除。写者操作前首先检查是否有空间,管理者操作前首先检查是否有数据。
要求:
(1)说明三组进程之间的同步与互斥关系。
(2)以下是用信号量P、V操作实现的读者、写者和管理者三个进程的同步程序。
补充题目中的P、V操作,将编号①-⑧处空缺的内容填写在答题卡上。
全局变量readcount和4个信号量sl、s2、w、mutex的定义如下:
readcount表示正在读的读者数目,初值为O;
s1表示空数据区的大小,初值为数据区的大小N;
s2表示已用数据区的大小,初值为0;
W用于读者、写者和管理者之间、写者和写者之间、管理者和管理者之间的互斥,初值为1;
mutex用于对readcount这个临界资源的互斥访问,初值为1。
(1)读者、写者、管理者三类进程之间存在同步关系(它们共享一组数据区)
读者之间、写者之间存在同步关系(其它读者正在读,新读者也可以读;不允许多个写者同时操作)
写者和管理者之间存在同步关系(写满后必须等待管理者删除)
(2)①P(sl) ②P(w)
③V(w) ④V(s2)(顺序可换)
⑤P(s2) ⑥P(w)
⑦V(w) ⑧V(sl)(顺序可换)