操作系统-信号量和PV操作

 

信号量是一个什么东西?

其实就是一个变量,代表系统中某种资源的数量,比如我有两台电脑,我就把打印机的数量设置为2

什么是原语?

就是不可以中断,必须一气呵成的,感觉有点像数据库里面的事务这个概念

 

PV原语,其实是来源于荷兰语,因为他是被一个荷兰人Dijkstra发明的

下面的两个,一个是wait,一个是signal其实对应的 就是P和V

wait(s){
s.value--;
    if(s.value <0){//小于0,说明已经没有资源了,要等着
        block(s.l);
}
}

signal(s){
    s.value++
        if(s.value<=0){//小于0说明资源是不够的,还有进程在等待唤醒
            wakeup(s.l)
        }
}

信号量机制实现进程的互斥

1.先把互斥信号量(mutex)设置为1

semaphore mutex =1

2.在临界区之前执行P(mutex) 资源的申请

3.在临界区之后执行V(mutex) 资源的释放

 

注意:pv操作必须成对出现

 信号量实现同步关系关系

 

口诀:前V 后P

要在之前执行的操作之后执行V

要在后面执行的操作之后执行P

 

 

信号量实现前驱关系

 

posted @ 2022-06-24 15:36  yangstar  阅读(365)  评论(0编辑  收藏  举报