操作系统中的读写者经典问题
来源:互联网 发布:vnc 链接kall linux 编辑:程序博客网 时间:2024/06/05 19:20
第一类读者-写者问题:读者优先
除非有写者在写文件,否则没有一个读者需要等待。
分析思想:
读者到:
1)无读者、写者,新读者可以读
2)有写者等,但有其它读者正在读,则新读者也可以读
3)有写者写,新读者等
写者到:
1)无读者,新写者可以写
2)有读者,新写者等待
3)有其它写者,新写者等待
信息量:
readcount = 0 ——记录当前正在读的读者进程数,这是一个共享变量,需要互斥使用
mutex = 1 ——互斥信息量
write = 1 ——用于写者互斥,或第一个读者和最后一个读者与写者互斥
READ: Repeat; P(mutex); readcount:=readcount+1; if(readcount=1) P(write); V(mutex); 读文件 P(mutex); readcount:=readcount-1; if(readcount=0) V(write); V(mutex); Until false
WRITE: Repeat P(write); 写文件 V(write); Until false;
1.2 第二类读者-写者问题:写者优先
一旦一个写者到来,它应该尽快对文件进行写操作。则新来到的读者不允许进行读操作。
分析思想:
读者到:
1) 无读者且无写者,新读者读
2) 有读者但无写者等待,新读者读
3) 有读者但有写着等待,读者等待
4) 有写者在写,新读者等待
写者到:
1) 无读者且无写者,新写者写
2) 有读者在读,新写者等待
3) 有写者写,新写者等待
信息量:
read:=1 ——读者信息量,用于第一个写者与读者互斥
readcount:=0 ——记录当前读者的进程数
mutex:=1 ——互斥信息量
writecount:=0 ——记录当前写者排队的进程数
write:=1 ——写者信息量,用于写者互斥,第一个读者与写者互斥
mutex2:=1 ——互斥信息量
READ: Repeat P(read) P(mutex) readcount:=readcount+1; if(readcount=1) P(write) V(mutex) V(read) 读文件 P(mutex) readcount:=readcount-1 if(readcount=0) V(write) V(mutex) Until false
WRITE: Repeat P(mutex2) writecount:= writecount+1 if(writecount=1) P(read) V(mutex2) P(write) 写文件 V(write) P(mutex2) writecount:=writecount-1 if(writecount=0) V(read) V(mutex2) Until false;
- 操作系统中的读写者经典问题
- 操作系统中的经典问题
- 计算机操作系统--读写者问题
- 【操作系统总结】读写者问题
- 操作系统经典问题
- 操作系统 经典问题
- 【经典操作系统问题】读者写者问题分析
- 操作系统--信号量经典同步问题之写者优先问题
- 经典操作系统&&数据库问题总结
- 【经典操作系统问题】哲学家就餐问题分析
- 【经典操作系统问题】睡眠理发师问题分析
- 【操作系统经典问题】睡眠理发师问题
- 现代操作系统学习笔记-经典IPC问题
- 操作系统之经典进程同步问题
- J2ME中的文件读写问题
- 操作系统进程同步互斥经典问题之读者写者问题
- 【操作系统总结】经典的进程同步问题-生产者消费者问题
- 操作系统的一个经典问题 -- "生产者-消费者"问题
- jbpm5学习资料
- 隐马尔可夫模型
- (七)二十三中设计模式之我见---------------原型模式(Prototype Pattern)
- view Matrix in opengl
- 详解CSDN各种积分规则
- 操作系统中的读写者经典问题
- java ---- 定义一个表示学生的类 包括域“学号”、“班号”、“姓名”、“年龄”;
- libevent简单应用_3(来自源码)
- jbpm5学习资料(脚本任务scriptTask)
- 如果我们真的分手了:最新网友原创伤感空间日志
- 系统设置--unset
- 过来人谈《去360还是留在百度?》
- Action大全和用法
- kruskal算法