惠州学院-操作系统第二章作业.docVIP

  • 4
  • 0
  • 约2.21千字
  • 约 3页
  • 2018-03-07 发布于河南
  • 举报
惠州学院-操作系统第二章作业

课本P81-83 2,4,7,9,18.26,28 2. 画出下面四条语句的前趋图: S1=a:=x+y; S2=b:=z+1; S3=c:=a – b; S4=w:=c+1; 答: 其前趋图为: 4.程序并发执行时为什么会失去封闭性和可再现性? 答:程序并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态由多个程序改变,致使程序运行失去了封闭性,也会导致其失去可再现性。 7.试说明PCB的作用,为什么说PCB是进程存在的惟一标识?为什么是“惟一”不是“唯一”呢 答:PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。 作用是使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位,成为能与其他进程并发执行的进程。 OS是根据PCB对并发执行的进程进行控制和管理的。 9.为什么要引入挂起状态?该状态由哪些性质? 答:引入挂起状态处于五种不同的需要: ①终端用户; ②父进程需要; ③操作系统需要; ④对换需要; ⑤负荷调节需要。 处于挂起状态的进程不能接收处理机调度。 18.同步机构应遵循哪些基本准则?为什么? 答:同步机构应遵循的基本原则是: ①空闲让进; ②忙则等待; ③有限等待; ④让权等待。 原因:为实现进程互斥进入自己的临界区。 26.试修改下面生产者-消费者问题解法中的错误: 答: producer: begin repeat … producer an item in nextp; wait(mutex); 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); consumer item in nextc; until false; end 28. 在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单 缓冲中取出数据进行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法。 答:a. Var mutex, empty, full: semaphore:=1, 1, 0; 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 data in nextc; until false; end b. Var empty, full: semaphore:=1, 0; gather: begin repeat …… gather data in nextp; wait(empty); buffer:=nextp; signal(full); until false; end compute: begin

文档评论(0)

1亿VIP精品文档

相关文档