习题参考答案word文档良心出品
习题1.4
程序A
CPU 20ms
IO2 30ms
CPU 30ms
IO2 20ms
CPU 30ms
IO1 20ms 2023年高速免费时间日期最新
程序B
IO2 30ms
CPU 30ms
IO1 40ms
冰箱压缩机不启动CPU 30ms
IO1 20ms
程序C
IO1 20ms
CPU 50ms
IO1 30ms
CPU 20ms
IO2 30ms
歌手第五季单位ms10018014015060709017011013030020
ACPU X
B
CPU YC
I/O1 
I/O2
假定在具有2CPUXY的多机系统中,以多道程序设计方式,按如下条件执行上述3个程序,条件如下:
1XY运算速度相同,整个系统可以同时执行2个程序,并且在并行处理程序时速度也不下降。
2X的优先级比Y,即当XY均能执行程序时,由X去执行。
3)当多个程序同时请求CPUI/O设备时,按程序ABC的次序分配所请求的资源
4)除非请求输入输出,否则执行中的程序不会被打断,也不会把控制转给别的CPU。而且因输入输出而中断的程序再重新执行时,不一定仍在同一借方和贷方CPU上执行。
5控制程序的介入时间可忽略不计。
6程序ABC同时开始执行
求:(1)程序ABC同时开始执行到执行完毕为止的时间。(2XY的使用时间。
由上图可以看出
1A  170ms      B  150ms      C  180ms
90ms
  的使用时间Y        120ms  的使用时间(2)X.
习题3.4
1)引起各种状态转换的典型原因有哪些?
运行态→就绪态  时间片到或被更高优先级的进程抢占
就绪态→运行态  被调度
运行态→阻塞态  等待某一事件的发生而事件未发生
阻塞态→就绪态  等待的事件已发生
2)当观察系统中某些进程时,能够看到某一进程的一次状态转换能引起另一个进程的
一次状态转换。在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换2
就绪队列中只有一个进程
3)如图315,说明是否会发生下述因果转换 2会,在抢占式调度的情况下,更高优先级的进程到达,或时间片到
3→2  会,一个正在运行的进程因等待某一事件的发生而转入阻塞态,而就绪队列中有进程在等待运行
4→1  不会 
3)挂起状态和阻塞状态有何区别?在具有挂起操作的系统中,进程的状态有哪些?如何变迁?
被挂起进程处于静止状态,不能参与竞争CPU,直到被激活,但被挂起进程可能并不缺少资源;而阻塞进程是由于等待某一事件的发生,处于缺乏资源的状态。
4)在创建一个进程时需要完成的主要工作是什么?在撤消一个进程时需要完成的主要工作又是什么?
创建进程的主要工作是为被创建进程创建一个PCB,并填入相应的初始值。并把该进程插入就绪队列。
撤消该进程的所有子孙进程。在撤消的过程中,被撤消进程的所有系统资源(内存、外设)应全部释放出来归还给系统,并将它们从所有队列中移出。如果被撤消进程正在处理器上运行,则要调用进程调度程序将处理器分配给其它进程。
习题4.5
5.应用题
1)有三个并发进程RWW,共享两个各可存放一个数的缓冲区BB。进程2121R每次从输入设备读入一个数,若读入的是奇数,则将它存入B中,若读入的是偶数,将1它存入B中;当B中有数,由进程W将其打印输出;当B中有数,进程W将其打印输22112出。试编写保证三者正确工作的程序。
struct semaphone B1_Empty, B1_Full, B2_Empty, B2_Full;
B1_Empty.value=1;
B1_Full.value=0;
B2_Empty.value=1;
B2_Full.value=0;
void R( )
{ int a;
While(1)
{ read a number a;
  if  (a%2)
  { wait(B1_Empty);
put a in B1;
signal(B1_Full);
  }
else
 
{  wait(B2_Empty);
put a in B2;
signal(B2_Full);
}
 
  }
} 国庆作文300字作文
void W1( ) 
{  while(1)
{  wait(B1_Full);
  print a number from B1;
  signal(B1_Empty);
  }
}
void W2( ) 
{ while(1) 
{  wait(B2_Full);
  print a number from B2;
  signal(B2_Empty);
  }
}
void main( )
{  parbegin(R, W1, W2);
}
4)桌上有一空盘,可放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子;儿子专等吃盘中的桔子;女儿专等吃盘中的苹果。规定一次只能放一只水果,试写出爸爸、儿子、女儿正确同步的程序。
  struct semaphone plate, apple, orange;
plate.value=1;
apple.value=0;
orange.value=0;
void father( )
{ while(1)
{ prepare an apple or orange;
wait(plate);
put the apple or orange in plate;
if() signal(apple);              //如果放的是苹果 Apple放入的是else signal(orange);                  //如果放的是桔子
}
}
void son( )
{ while(1)
  { wait(orange);
  get an orange from the plate;
  signal(plate);
  }
}
void daughter( )
{ while(1)
  { wait(apple);
  get an apple from the plate;
  signal(plate);
  }
}
Void main( )
  {
    parbegin(father, son, daughter);
  }
互斥与同步区别互斥是为了保证资源一次只能由一个进程使用;而同步是为了实现进程通信,即传递资源当前的状态是否适合另一个进程进行使用。
5)三个进程P1P2P3互斥使用一个包含NN>0)个单元的缓冲区。P1每次用prodcuce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述(2009年全国硕士研究生入学考试题)。
定义信号量full_odd控制P1P2之间的同步;full_even控制P1会议礼仪P3之间的同步;empty控制生产者与消费者之间的同步(是否可生产)mutex控制进程间互斥使用缓冲区。
struct semaphone full_odd, full_even, mutex, empty;
full_odd.value=0;
full_even.value=0;
mutex.value=1;
empty.value=N;
void P1( )
{ int x;
while(1)
{ x=produce( );
wait(empty);
wait(mutex);
put( );
if(x%2==0) signal(full_even);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。