计算机操作系统读者和写者模型的简单介绍以及思考

读者和写者

  • 读写两组进程,共享一个文件,多个读者可以同时访问文件,多个写者不可以同时访问文件,写者和读者也不可以同时访问文件
  • 共享读;独占写
  • 特征:1,资源被谁占有;2,写者改变资源,读者不改变资源
  • 分析:写者关心文件是否被占有;读者作为一个团体去读文件,第一个人关心文件是否被占有;读者团中间的人增加读者团的人数;最后一个读者需要释放文件

semaphore mutex = 1;

读者i(){
    while(1){
        p(mutex);
        if (read_count == 0)
        {
            p(s);
        }
        read_count++;
        v(mutex);

        p(mutex);
        count--;
        v(mutex);

        if (read_count == 0)
        {
            v(s);
        }
    }
}

写者i(){
    while(1){
        p(s);
        写操作;
        v(s);
    }
}

 例题

  • 一根绳子横跨峡谷两边,猴子通过绳索过峡谷,只要朝着相同方向,同一时刻可以通过多只猴子,但是如果是相反的方向,同时有猴子通过就会产生死锁,如果一只猴子想过峡谷,必须看是否有相反方向的猴子通过绳索,请使用pv操作解决问题
  • 猴子属性分为 第一只 中间 最后一只
  • 代码
semaphore mutex = 1;
semaphore s = 1;//桥
左边猴子(){
    while(1){
        p(mutex);
        if (left_count == 0)
        {
            p(s);
        }
        left_count++;
        v(mutex);
        过桥;
        p(mutex);
        left_count--;
        if (left_count == 0)
        {
            v(s);
        }
        v(mutex);
    }
}

生产者和消费者 以及 读者和写者之间的区别

  • 资源的影响 消费者会改变资源;但是读者不会改变资源
  • 读者表现一个团体的性质,需要计数,按照属性分为 第一个 中间的人 和 最后一个人;生产者和消费者计数是对资源的利用和剩余进行计数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值