【操作系统】读者写者问题
无同步关系
互斥关系:
写进程&写进程
读进程&写进程
初步实现:
1、使用count来记录当前有多少个读进程
第一个读进程需要给加锁,后面的读进程则无需加锁,但count++还要执行
2、使用rw实现对文件互斥
3、使用mutex实现对count访问的互斥:
读进程1进入,给文件加锁;此时读进程2进入,count此时还是0,但此时读进程2进入P(rw)会被阻塞
读写公平法
初步实现中,若有多个读进程和写进程,写进程必需在全部读进程完成后,才能访问文件。容易出现写进程饿死
在此添加一个新信号量:w
此时若顺序为:读者1-》写者1-》读者2
读者1写执行P(w)、P(rw)、V(w)
写者1进入,执行P(w),但被rw阻塞
读者2进入,被w阻塞
此时,读者1执行V(rw),然后读者2还是被w阻塞!!
但写者1可以执行,随后写者1执行P(rw)、V(rw)和V(w),读者2才能执行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lthero!
评论