美文网首页
PV操作经典问题

PV操作经典问题

作者: 天官大冢宰 | 来源:发表于2017-09-07 22:47 被阅读0次

PV(wait/singal)在考操作系统的时候经常被问到,这篇小文就整理一下几个常见的PV问题。

1. 生产者-消费者问题

假定在生产者和消费者之间的公用缓冲池中,具有n个缓冲区,这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。利用信号量empty和full分别表示缓冲池中空缓冲区和满缓冲区的数量。

又假定这些生产者和消费者相互等效,只要缓冲池未满,生产者便可以将消息送入缓冲池;只要缓冲池未空,消费者便可以从缓冲池取走一个信息。

对生产者和消费者问题可以描述如下:

mutex, empty, full : semaphore := 1, n, 0;
buffer : array[0, ..., n-1] of item;
in, out : integer := 0, 0;

producer() {
    while(true) {
        ...
        produce an item nextp;
        ...
        wait(empty);
        wait(mutex);
        buffer[in]=nextp;
        in=(in+1)%n;
        single(mutex);
        signal(full);
    }
}

consumer() {
    while(true) {
        wait(full);
        wait(mutex);
        p=buffer[out];
        out=(out+1)%n;
        single(mutex);
        signal(empty);
        ...
        consume product p 
        ...
    }
}

2. 哲学家进餐问题

该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五只筷子和五个碗,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有他拿到两只筷子的时候才能进行进餐。进餐完毕,放下筷子继续思考。

process(i) {//第i个哲学家
    while(true) {
        think;
        sswait(chopstick[(i+1)%5],chopstick[i]);
        eat;
        ssignal(chopstick[(i+1)%5],chopstick[i]);   
    }
}

这是使用AND机制的信号量处理。

相关文章

  • PV操作经典问题

    PV(wait/singal)在考操作系统的时候经常被问到,这篇小文就整理一下几个常见的PV问题。 1. 生产者-...

  • 分享两个用PV操作(signal,wait原语)实现的操作系统综

    PV操作是操作系统设计中一个核心的概念,PV操作同时与信号量紧密相连。很多经典的问题讨论,由引入了信号量机制而得到...

  • PV操作经典习题

    好经典的一些问题 第一题 显然这个代码完美的解决了进程间同步与互斥的问题 所以答案选D 第二题 一间酒吧中有3个音...

  • java多线程实现生产者消费者问题

    思想可以参考操作系统里的pv操作实现生产者消费者问题

  • PV操作

    备考系统分析师,学习到PV操作,简单记录一下:

  • PV操作

    PV操作是利用信号量机制来实现的一种有效的进程同步与互斥工具,可以实现资源的互斥使用。PV操作属于低级通信原语,使...

  • Linux实用工具-lvm(2)

    基本操作-pv 创建pv 查看pv 基本操作-vg 两种创建vg方式 创建vg,默认PE大小为4M 设置PE大小为...

  • PV操作习题

    三个经典问题 一.生产者消费者(王道) 桌子上有一个空盘子,允许存放一只水果,爸爸可以向盘中放苹果,妈妈向盘子中放...

  • 网络规划设计师知识点——网络基础篇 操作系统——PV操作

    PV操作分为P操作和V操作,是为了解决进程的同步与互斥问题。 P操作:使信号量S=S- 1,若S>=0,则该进程继...

  • 同步机制

    经典实现 信号量 信号量与PV原语操作由Dijkstra发明,也是使用最广泛的互斥方法之一。它包含以下几个元素: ...

网友评论

      本文标题:PV操作经典问题

      本文链接:https://www.haomeiwen.com/subject/bswijxtx.html