- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
复习 操作系统概要
单缓冲区读写的变化1 一个写进程与多个读进程共享单缓冲,其中最简单的情况是一个写进程两个读进程共享一个缓冲区,写到缓冲区中的数据分别由两个读进程交替读取,奇次由读进程A读取,偶次由读进程B读取。 单缓冲区 写进程 读进程B 读进程A 同步分析 进程 请求条件 请求信号量及初值 释放条件 释放信号量 写进程 缓冲区为空 empty=1 缓冲区有数(奇) 缓冲区有数(偶) 奇次:fullj 偶次:fullo 读进程A 缓冲区有数(奇) fullj=0 缓冲区为空 empty 读进程B 缓冲区有数(偶) fullo=0 缓冲区为空 empty 读进程A(): { while(未读完){ P(fullj); 从缓冲区读数据到y; V(empty); 输出y ; } } 读进程B(): { while(未读完){ P(fullo); 从缓冲区读数据到y; V(empty); 输出y ; } } 写进程(): { flg=1;while(未写完){ 计算x; P(empty); 将x送缓冲区; if(flg==1) { V(fullj); flg=0; } else { V(fullo); flg=1; }} } main() { empty=1; fullj=fullo=0; cobegin WP( ); RA( );RB( ); coend } 单缓冲区读写的变化2 今有3个并发进程W,M,R,它们共享一个缓冲区B,进程W负责从输入设备读信息,每读入一个记录后把它存放在缓冲区B中;进程M在缓冲区B中加工进程R存入的记录;进程R把加工后的记录打印输出;缓冲区B中每次只能存放一条记录,当记录被加工输出后,缓冲区B中又可存放一个新记录。请用P-V操作为同步机制写出它们并发执行时能正确工作的程序 单缓冲区 进程W 进程R 进程M 同步分析 进程 请求条件 请求信号量及初值 释放条件 释放信号量 写进程 缓冲区为空 empty=1 缓冲区有数(未加工) full1 加工进程 缓冲区有数(未加工) full1=0 缓冲区有数(已加工) full2 读进程 缓冲区有数(已加工) full2=0 缓冲区为空 empty MP(): { while(未处理完){ P(full1); 从缓冲区取出记录; 加工记录; 将记录送缓冲区; V(full2); } } BP(): { while(未读完){ P(full2); 从缓冲区读记录; V(empty); 输出记录 ; } } WP(): { while(未写完){ 读取记录; P(empty); 将记录送缓冲区; V(full1); } } main() { empty=1; full1=full2=0; cobegin W( );M(); R( ); coend } 单缓冲区读写的变化3 单缓冲区A 进程W 进程R 进程M 单缓冲区B 同步分析 进程 请求条件 请求信号量及初值 释放条件 释放信号量 写进程 缓冲区A为空 empty1=1 缓冲区A有数 full1 加工进程 缓冲区A有数 缓冲区B有空 full1=0 empty2=1 缓冲区A有空 缓冲区B有数 empty1 full2 读进程 缓冲区B有数 full2=0 缓冲区B为空 empty2 MP(): { while(未处理完){ P(full1); 从A取出记录; V(empty1); 加工记录; P(empty2); 将记录送入B; V(full2); } } BP(): { while(未读完){ P(full2); 从B读记录; V(empty2); 输出记录 ; } } WP(): { while(未写完){ 读取记录; P(empty1); 将记录送入A; V(full1); } } main() { empty1=empty2=1; full1=full2=0; cobegin W( );M(); R( ); coend } 单缓冲区读写的变化3 单缓冲区A 进程W 进程R 进
文档评论(0)