[操作系统]读者.写者问题

读者写者问题:

读者间可以同时访问资源

任一写者必须与其他写者或者读者互斥访问共享资源

分析:

写者与任一进程互斥访问共享资源

读者互斥访问readcount变量

写者

1申请对文件的使用权p(Wmutex)

2写文件

3释放对文件的使用权V(Wmutex)

读者

正在读的读者个数 ReadCount初=0

1第一个读者来   

申请对文件的使用权-------实现读者写者对文件资源的互斥

P(Wmutex)

2第二个读者来

申请对RC代码段的使用权-------------实现读者和读者对RC代码段的互斥

P(Rmutex)//申请对RC代码段的使用权
if(RC==0){//如果RC代码段是0
P(Wmutex);//申请对文件的使用权
写文件
RC++;
V(Rmutex)//释放对RC代码段的使用权
}else{//RC!=0时
读文件
P(Rmutex)
RC--;   
if(RC==0){
    V(Wmutex);//释放对文件的使用权
}else{
    V(Rmutex)
}

信号量集机制---执行时引入多类资源

生产者引入empty mutex 消费者引入full mutex

思想:多类资源一起分配,一起释放,一个不满足,全部分配

解决p操作顺序不当,可能死锁

eg.SP(empty,mutex) SV(mutex,full)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值