西安交大操作系统第一次习题课.ppt

西安交大操作系统第一次习题课

习题课(一);Contact me;Brief;Assignment: 6.4;Assignment: 6.9;Assignment: 6.11;var mutex,customers, barbers : semaphore; waiting, chairs : integer; procedure barber: begin while(true) begin p(customers); p(mutex); waiting:= waiting – 1 ; v(mutex); cuthair(); v(barbers); end end;procedure customer; begin p(mutex); if (waiting chairs) then begin waiting:= waiting + 1 ; v(customers); v(mutex); p(barbers); get-haircut() end else begin v(mutex); end end;begin seminitial (mutex,1 ; barbers, 0; customers,0); waiting=0; chairs=10; cobegin barber; customer; ….. customer; coend end;Assignment: Extra problem 1;解法二:另外设置一个信号量w=1;用于写进程到达后封锁后续读进程 READER : P(w); P(mutex); Rc:=rc + 1; If rc = 1 then P(wr); -----若是第一个读进程,则要看有无写进程 V(mutex); V(w); READING P(mutex); Rc := rc -1; If rc = 0 then V(wr); -------若所有读进程都执行完,可以让其它进程读写 V(mutex) WRITER : P(w); P(wr); WRITING; V(wr) V(w);;producer: v(product); p(mutex); v(mutex); consumer: p(mutex); p(product); //remove product v(mutex);;Assignment: 5.1;Assignment: 5.4;1.有一阅览室,共有100个座位。读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用P/v操作描述读者进程的同步结构。 解析:定义信号量以及相应变量 mutex: semaphore; 互斥信号量 full: semaphore; 同步信号量 table: array 0.. n-1 of item ; ;Procedure reader; begin P(full) ; P(mutex); Register-name ( table) ;

文档评论(0)

1亿VIP精品文档

相关文档