【操作系统】快速做题向 信号量,PV操作解决进程同步问题,例题手写分析

题目:

有一老师负责管理纸和笔,另有A,B两组学生,A组学生每个都有笔,B组学生每个都有纸,但一个学生只要能得到其他一种材料就可以写信。有一个容量为N的盒子,每个空间可以装一支笔或一张纸。当盒子不满时时老师将随机放一种材料到盒子中。当盒子有学生所需材料时,允许一个学生从盒子中取出自己所需材料。试用信号量和PV操作描述他们的同步关系。

(1)定义信号量 paper表示纸的数量,pencil表示笔的数量,  empty表示空间数,  mutex用于实现多进程之间的互斥操作。则这四个信号paper,pencli,empty,mutex的初值为:

(2)补充填空1,2,3,4

process teacher( ) { 
      while(true) { 
         (1) 
         (2)   
       放一种材料到盒子里;
      if put(paper) 
        V(paper)
      else  
        V(pencil); 
      V(mutex);    
    } 
}

process student_i( ) { //A组有笔的同学进程
{ 
     (3)     //有笔的同学,期待纸
      P(mutex);           //进入临界区
         拿走材料;
     V(empty);     //唤醒保管员
     V(mutex);            //退出临界区
     写信;
}

process student_j( ) { //B组有纸的同学进程
{      
     (4)  //有纸的同学,期待笔
      P(mutex);           //进入临界区
       拿走材料
      V(manager);     //唤醒保管员
      V(mutex);            //退出临界区
      写信;
 } 

分析题目  三个进程(有纸的取笔,有笔的拿纸,有空余时放笔或纸)

(1)先看第一小问,定义信号量 paper表示纸的数量,pencil表示笔的数量,  empty表示空间数,  mutex用于实现多进程之间的互斥操作。则这四个信号paper,pencli,empty,mutex的初值为:

这里问的是四个信号量的初值,首先回顾一下什么是信号量,以及信号量与PV操作的关系:

【操作系统】快速做题向 信号量,PV操作解决进程同步问题,例题手写分析_第1张图片

所以这些信号量会在后面与PV操作一起出现,实现并发,空间数empty依据题目可以知道应该是N,而mutex这个信号量的值应为1,因为mutex与PV操作结合,实现并发,比如当前没有进程访问临界资源(并发程序中共享变量所代表的资源,比如说当前纸张的数量,当前所占用的空间数,进程都可以访问,但互斥操作为的就是进程不能同时访问),当前某进程要访问,首先要使用P(mutex),如果mutex是1,则说明可以继续进行,这个操作后mutex-1=0,之后,如果当前A进程正在访问,又有进程想访问资源,由于mutex=0,在实施一个P操作后mutex=-1<0,则后进入的B进程都必须等待,直到当前进程的完成了任务,进行了V操作,使得mutex=1。(上面描述得不严谨,大致是那个意思),paper,pencil=0,因为这些资源要等待老师放到空间里。

paper=0

pencil=0

empty=N

mutex=1

(2)

【操作系统】快速做题向 信号量,PV操作解决进程同步问题,例题手写分析_第2张图片

【操作系统】快速做题向 信号量,PV操作解决进程同步问题,例题手写分析_第3张图片

【操作系统】快速做题向 信号量,PV操作解决进程同步问题,例题手写分析_第4张图片

你可能感兴趣的:(算法,操作系统)