【操作系统】信号量与P、V操作

来源:互联网 发布:windows agent 安装 编辑:程序博客网 时间:2024/06/01 19:46

知识点:

信号量机制主要有整形信号量、记录性信号量、信号量集机制。

信号量是一个整形变量,根据控制对象的不同赋不同的值。信号量可分为公用信号量和私用信号量两类。

公用信号量:实现进程间的互斥,初值=1或资源的数目

私用信号量:实现进程间的同步,初值=0或某个整数

信号量S的物理意义:S>=0时表示某资源的可用数,s<0时其绝对值表示阻塞队列中等待该资源的进程数。P、V操作是实现进程同步与互斥的常用方法。

P操作表示申请一个资源,V操作表示释放一个资源。

P操作的定义:S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态,并将其插入阻塞队列。

Procedure P(Var S:Semaphore);

  Begin

   S:=S-1;

   If S<0 then  w(S)   {执行P操作的进程插入等待队列}

  End;

V操作定义:S=S+1,若S>0则执行V操作的进程继续执行;若S<0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。

  Procedure V(Var S:Semaphore);

     Begin 

S:=S+1

If S<=0 then R(s) {从阻塞队列中唤醒一个进程}

End;

 

利用PV操作实现进程的互斥

 令信号量mutex的初值为1,当进入临界区时执行P操作,退出临界区时执行V操作。这样利用PV操作实现进程互斥的代码段如下:

P(mutex)

  临界区

V(mutex)

 

讨论的习题:

  

信号量与P、V操作

 

 

 

 

 

S1初值为2,题目知道有两个发货员我们可以知道用S1表示发货员的数目;同样S2表示审核员的数目。当顾客进程i进入系统,此时为第一个我们有S1=2>0则发货员开始工作P(s1),顾客提完货物以后发货员完成自己的 工作释放资源V(S1);

顾客提完货以后需要检察员进行检测,确认货物是否正确,S2=1>0,则审核员开始工作P(s2) ,

进行检验 ,无论结果如何S2释放资源V(s2)。

所以A,C

 

 

第二个问题:

 

信号量与P、V操作

信号量与P、V操作

信号量与P、V操作

当然还有一些知识点需要研究

 

  1。进程间的相互转换

 

  2。同步于互斥、缓冲池

0 0
原创粉丝点击