全文预览

计算机操作系统第四版汤小丹课后答案完整版

上传者:业精于勤 |  格式:docx  |  页数:53 |  大小:112KB

文档介绍
入阻塞状态,这样容易引起系统死锁。若 signal(mutex) 和 signal(full) 互换位置后只是影响进程对临界资源的释放次序,而不会引起系统死锁,因此可以互换位置。 25 . 我们在为某一临界资源设置一把锁 W,当 W=1 时表示关锁,当 W=0 时表示锁已打开。试写出开锁和关锁的原语,并利用他们实现互斥。答:整型信号量: lock(W): while W=1 do no-op W:=1; unlock(W): W:=0; 记录型信号量: lock(W): W:=W+1; if(W>1) then block(W, L) unlock(W): W:=W-1; if(W>0) then wakeup(W, L) 例子: Var W:semaphore:=0 ; begin repeat lock(W); critical section unlock(W); remainder section until false; end 26 .试修改下面生产者-消费者问题解法中的错误: 答: producer: begin repeat … producer an item in nextp; wait(mutex); wait(full); buffer(in):=nextp; signal(mutex); until false; end consumer: begin repeat wait(mutex); wait(empty); nextc:=buffer(out); out:=out+1; signal(mutex); consumer item in nextc; until false; end 27 .试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法. 答: Var chopstick:array[0, …,4] of semaphore;

收藏

分享

举报
下载此文档