早教吧 育儿知识 作业答案 考试题库 百科 知识分享

1、有一阅览室,共有100个座位.读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号

题目详情
1、 有一阅览室,共有100个座位.读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号
▼优质解答
答案和解析
读者的动作有两个,一是填表进入阅览室,这时要考虑阅览室里是否有座位;一是读者阅读完毕,离开阅览室,这时的操作要考虑阅览室里是否有读者.读者在阅览室读书时,由于没有引起资源的变动,不算动作变化.
算法的信号量有三个:seats——表示阅览室是否有座位(初值为100,代表阅览室的空座位数);readers——表示阅览室里的读者数,初值为0;用于互斥的mutex,初值为1.
读者进入阅览室的动作描述getin:
while(TRUE){
P (seats); /*没有座位则离开*/
P(mutex) /*进入临界区*/
填写登记表;
进入阅览室读书;
V(mutex) /*离开临界区*/
V(readers)
}
读者离开阅览室的动作描述getout:
while(TRUE){
P(readers) /*阅览室是否有人读书*/
P(mutex) /*进入临界区*/
消掉登记;
离开阅览室;
V(mutex) /*离开临界区*/
V(seats) /*释放一个座位资源*/
}
看了 1、有一阅览室,共有100个...的网友还看了以下: