进程同步模拟实验_第1页
进程同步模拟实验_第2页
进程同步模拟实验_第3页
进程同步模拟实验_第4页
进程同步模拟实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程同步模拟实验姓名学号实验日期成绩院别班级实验场地实验课程名称计算机操作系统实验项目名称进程同步模拟实验对于每一个实验项目,实验报告(含预习)一般应包含以下内容:第一部分一一预习后的书面汇报。其主要内容应包含:*1、实验目的; *2、实验内容。第二部分一一实验结果的书面汇报。其主要内容应包含:*3、实验源代码;*4、实验结果及分析(含实验测试输入数据, 试验运行结果截图,用简洁的语言总结实验,汇报是否达到实验目的);*5、实验体会、问题讨论(谈体会或感想、提出建议或意见、讨论 与实验有关的且自己感兴趣的问题、回答课后思考题)。一、实验目的通过实验模拟读者和写者之间的关系,了解并掌握他们之间的

2、关系及其原理。由此增加对进程 同步的问题的了解。具体如下:1)掌握基本的同步互斥算法,理解读者和写者模型;2)了解windows中多线程(多进程)的并发执行机制,线程(进程)间的同步和互斥;3)学习使用windows中基本的同步对象,掌握相应的API。二、实验内容用高级语言编写和调试一个采用“读写平等”策略的“读者写者”问题的模拟程序。利用模拟 信号量机制实现读者和写者问题;通过用户控制读进程和写进程,反应读者和写者问题中涉及的进程 的同步与互斥。问题描述:模拟用信号量机制实现读者和写者问题,即有两组并发进程:读者和写者,共享一组数 据区,进行读写操作,要求任一时刻“写者”最多只允许一个,而“

3、读者”则允许多 个。规则说明:允许多个读者同时执行读操作;不允许读者写者同时操作;不允许多个写者同时操作。三、实验源程序(或实验步骤)#include int L;int r_num;int w_num;int Wmutex=1;int Rcount=0;int Rmutex=1;int r10=0,0,0,0,0,0,0,0,0,0;int w10=0,0,0,0,0,0,0,0,0,0;int w_wait11=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;int r_wait11=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1;void write_

4、p(int i);void write_v(int i);void radd_p(int i);void radd(int i);void read_p(int i);void radd_v(int i);void read(int i);void rsub_p(int i);void rsub(int i);void read_v(int i);void rsub_v(int i);void write(int i);void write_p(int i)/模拟写者对Wmutex的P操作,同时也作为写者进程的入口Wmutex-;if (Wmutex0)w_wait-Wmutex-1=i;el

5、sewrite(i);void write(int i)wi=4;void write_v(int i)/模拟写者对Wmutex的V操作,同时也作为读者进程的入口wi=0;Wmutex+;if(Wmutex=0)&(w_wait0w_num)y=w_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;write(y);elsey=r_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd_v(y);void radd_p(int i)/模拟读之前对Rmu

6、tex的操作,同时也作为读者进程的入口Rmutex-;if(Rmutex0)r_wait-Rmutex=i;elseradd(i);void radd(int i)/Rcount 加一Rcount+;if(Rcount=1)read_p(i);elseradd_v(i);void read_p(int i)/模拟读者对 Rmutex 的 P 操作Wmutex-;if(Wmutex0)w_wait-Wmutex-1=10;r_wait0=i;elseradd_v(i);void radd_v(int i)/模拟读者对 Rmutex 的 V 操作Rmutex+;if(Rmutex=0)int x,

7、y;y=r_wait0;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd(y);read(i);void read(int i)/读操作ri=1;void rsub_p(int i)/模拟读之后对Rmutex的P操作,读操作完成时调用ri=0;Rmutex-;rsub(i);void rsub(int i)/Rcount 减一Rcount-;if(Rcount=0)read_v(i);elsersub_v(i);void read_v(int i)/模拟读者对 Rmutex 的 V 操作Wmutex+;if(Wmutex=0)&(w_wait0w_num)y=w

8、_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;write(y);elsey=r_wait0;for(x=0;xw_num;x+)w_waitx=w_waitx+1;for(x=0;xr_num;x+)r_waitx=r_waitx+1;radd_v(y);rsub_v(i);void rsub_v(int i)/模拟读之后对 Rmutex 的 V 操作Rmutex+;int main()coutw_num;while(w_num10)coutw_num;coutr_num;while(r_num10)coutr_num;int i,x,y,a20;whi

9、le(1)cout;for(x=0;x20;x+)ax=0;coutWmutex=WmutexRcount=RcountRmutex=Rmutexendl;for(x=0;xw_num;x+)if(wx=1)cout写者(x+1)号正在写endl;for(x=0;xr_num;x+)if(rx=1)cout读者(x+1)号正在写endl;if(w_wait0=-1)cout-等待队列空闲-endl;elsecout等待队列中有:;for (x=0;xw_num;x+)if(w_waitx=10)for(y=0;y5;y+)if(r_waity!=1)cout-读者=0)&(w_waitxw_n

10、um)cout-写,(w_waitx+1);coutendl;for(x=0;xw_num;x+)int L=0;for(y=0;yw_num;y+)if(x=w waity)ax=1;L=1;if(x=1) continue;cout写者”(x+1);if(wx=0)cout申请”;elsecout完成”;for(x=0;xw_num;x+)int L=0;for(y=0;yw_num;y+)if(x=w_waity)ax+w_num=1;L=1;if(x=1) continue;cout(x+1)读者(x+1);if(rx=0)cout申请;elsecout完成;cout(w_num+r_

11、num+1)结束endl;coutL;while(L(w_num+r_num+1)|aL-1=1)if(aL-1=1)cout该对象已经在等待队列中,请重新输入:elsecoutL;for(x=0;xw_num;x+)if(L=(x+1)if(wx=0)write_p(x);elsewrite_v(x);break;for(x=0;xr_num;x+)if(L=(x+1+w num)if(rx=0)radd_p(x);elsersub_p(x);break;if(L=(w_num+r_num+1)return 0;回四、实验结果及分析回-C:UsersAdm i n istrator.PC-2

12、0140913 QRDDe5ktopDe b u gsh iya n 1 .exe: 7Umut ex=lRco Lin t =0Rmut e x=l:等待队JU 宝闲- 、一、_ 、一 、者1申鬲写音3申请写者4申请写者5串请写者6申请1.读者1申请3读者3申请4读者4库S读者S申请6读者6申请14备束输X通项序号XWmut e x =0Rc o Lin t =0Rmut e x=l请S读者S申请6龙请输X选项序号:6直写者4完成写者S申请写者6申请1读者1申请3读者3申请4读者4申 备申请只结束雀堂队列中有 亘者请输乂展项序,请.写看3Umut e x =1 Rcount =0RmLit ex=l.5写者4完成写者S申请写者6申请1读者1申请3读者3申请4读者4申 亦读者6申请14结束号N有 1 -目页 井青-5J 待者S输 等胃请Umut e x =2 Rcount =0Rnut ex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论