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

mac2024-01-23  40

读者写者问题:

读者间可以同时访问资源

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

分析:

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

读者互斥访问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)