操作系统学习笔记(十四)

2019-04-25  本文已影响0人  itczt

同步和P-V操作:P-V操作的概念

信号灯的概念

信号灯是一种卓有成效的进程同步机制。
1965年荷兰学者Dijkstra(迪科斯彻)提出



信号灯用于进程同步的基本思想

进程在运行过程受信号灯状态控制,并能改变信号灯状态

信号灯机制

信号灯数据结构

struct SEMAPHORE
{
    int s; //整数,初值为负
    Pointer_PCB;//队列:进程PCB指针,初值空集
}

信号灯操作

两个操作

P,V是荷兰语:Passeren通过,Vrijgeren释放

P操作的原理(P(S,q),P(S))

P(S,q)
{
   S=S-1;
   if(S<0)
     {
       Insert(Caller,q);
       Block(Caller);
       转调度函数();
    }
}
提示:P操作可能使进程调用处阻塞。
提示2:S初值很重要!

V操作的原理

V(s,q)
{
    S=S+1;
    if(S<=0)
      {
        Remove(q,pid);//pid进程ID
        Wakeup(pid);
      }
}
提示:V操作可能会唤醒阻塞的进程
上一篇 下一篇

猜你喜欢

热点阅读