操作系统第二章课后作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题二
2.答:前趋图如下:
8.答:进程执行时的间断性决定了进程可能具有多种状态。事实上,运行中的进程可能具有就绪状态、执行状态和阻塞状态。三个基本状态之间转换
的原因如下:
就绪状态—>执行状态:进程获得CPU资源;
执行状态—>就绪状态:分配给进程的时间片已完;
执行状态—>阻塞状态:发生某事件而使进程的执行受阻,如I/O请求;
阻塞状态—>就续状态:I/O完成。
22.答:(a)此前趋图用程序描述如下:
V ar a,b,c,d,e,f,g,h: semaphore:=0,0,0,0,0,0,0,0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); end;
begin wait(c); S4; signal(f); end;
begin wait(d); S5; signal(g); end;
begin wait(e); S6; signal(h); end;
begin wait(f); wait(g);wait(h); S7; end;
parend
end
(b)此前趋图用程序描述如下:
V ar a,b,c,d,e,f,g,h,i,j: semaphore:=0,0,0,0,0,0,0,0,0,0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); signal(f); end;
begin wait(c); S4; signal(g); end;
begin wait(d); S5; signal(h); end;
begin wait(e); S6; signal(i); end;
begin wait(f); S7; signal(j); end;
begin wait(g); wait(h); wait(i); wait(j); S8; end;
parend
end
26.答:蓝色字体为修改部分。
producer:
begin
repeat
.
.
.
produce an item in nextp;
wait(mutex);
wait(full); /*wait(full)应为wait(empty),且应与前一句
wait(mutex)置换顺序。*/
buffer(in):=nextp;
/*缓冲池数组游标应前移,应增加in:=(in+1)mod n;
*/
signal(mutex);
/*增加signal(full); */
until false;
end
consumer:
begin
repeat
wait(mutex);
wait(empty); /*应为wait(full);且应在wait(mutex);前面*/
nextc:=buffer(out);
out:=out+1; /*缓冲池为循环缓冲池,应为
out:=(out+1)mod n; */
signal(mutex);
/*增加signal(empty); */
consume item in nextc;
until false;
end
28.答:算法如下:
V ar mutex, empty, full: semaphore:=1,1,0;
begin
parbegin
gather: begin
repeat
…
gather data in nextp;
…
wait(empty);
wait(mutex);
buffer:=nextp;
signal(mutex);
signal(full);
until false;
end
compute: begin
repeat
wait(full);
wait(mutex);
nextc:=buffer;
signal(mutex);
signal(empty);
compute the data in nextc;
until false;
end
parend
end
34.答:高级通信机制可归结为三大类:共享存储器系统,消息传递系统和管道通信体统。