欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    OS课程设计读者写者.docx

    • 资源ID:1400901       资源大小:61.66KB        全文页数:28页
    • 资源格式: DOCX        下载积分:7金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要7金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    OS课程设计读者写者.docx

    老州衮通裔假操作系统课程设计课程:计算机操作系统题目:进程同步(读者一写者)班级:姓名:学号:指导老师:日期:2012年12月21日书目1题目12wa½121问题描述122采纳信号fit机制13蝌蝴目的与功能23.1 设计目的23.2 设计功能24总体设计34功能流程图34.2 开发平台与源程序的主要部分44.3 数据结构44.4 模块说明44.5 源程序55潴试用例,运行结果与运行状况分析225.1 测试用例225.2 运行结果2353运行结果分析246总结与行261题目进程同步模拟设计一读者和写者问题2.1 问题描述模拟用信号侬机制实现读者和写者问题,即有两组并发进程:读者和写者,共享一组数据区,进行读写操作,要求任一时刻“写者”最多只允许一个,而''读者”则允很多个。2.1.1 要求允很多个读者同时执行读操作;不允许读者、写者同时操作;不允很多个写者同时操作。2.1.2 读者加写者的相互关系:2.2 采纳信号-机制1) WmUteX表示读写的互斥信号量,初值:Wmutex=1;2)公共变fitRcount表示“正在读”的进程数,初值:Rcount=0;3)Rmutex:表示对RCoUnt的互斥操作,初值:Rmutex-1o3课程设计目的与功能3.1 设计目的通过试验模拟读者和写者之间的关系,了解并驾驭他们之间的关系与其原理。由此增加对进程同步的问题的了解,详细如下:D驾驭基本的同步互斥算法,理解读者和写者模型;2) 了解WindOWS中多线程(多进程)的并发执行机制,线程(进程)间的同步和互斥;3)学习运用WindoWS中基本的同步对象,亚驭相应的AP1.3.2 蚂娜利用模拟用信号量机制实现读者和写者问题:通过用户限制读进程和写进程,反应读者和写者问题中所涉与的进程的同步与互斥。4.1功能流程图结束4.2 开发平台与源程序的主要部分本试验用C+语旨在VisualC+6.0中编程。4.3 髓结构intJnUm;读者个数intw_num;/写者个数intWmUteX=1;表示允许写成允许读intRCOUnt=0;表示正在读的进程数intRmUteX=1;/表示对Rcount的互斥操作intr100,0,0,0,0,0,0,0,0,0;/表示读者的状态,1表示正在读intw10=0,0,0,0,0,0,0,0,0,0;/表示写者的状态,1表示正在写表示等待队列,0-9表示写者,10时需引入读者的等待队列,-1表示空intw-waitll-l,-Irb-Irb-Irlr1.-1.-Irlh读者的等待队列,。-9表示对应的读者,-1为空intr_wait(U=-l,-l,-1,-1,-1,-1,-1,-1,-1,-IrU;4.4 模块说明四组P、V函数:D写者进程由3个函数组成voidWrite_p(inti)模拟写者对Wmutex的P操作,同时也作为写者进程的人口voidwrite(inti)起先写操作voidWrite_v(inti)/模拟写者对Wmutex的V操作,写操作完成的时候调用2)读者进程由8个函数组成voidradd_p(inti)模拟读之前对Rmutex的P操作,同时也作为读者进程的入口voidradd(inti)/Rcount加1voidread_p(inti)/模拟读者对Wmutex的P操作voidradd_v(inti)/模拟读之的对Rmutex的V操作voidread(inti)读voidrsub_p(inti)/模拟读之后对Rmutex的P操作,读操作完成的时候调用voidrsub(inti)/Rcount减1voidread_v(inti)模拟读者对Wmutex的V操作voidrsub_v(inti)模拟读之后对Rmutex的V操作4.5 海程期#include<stdio.h>#include<windows.h>#include<process.h>#include<iostream>usingnamespacestd;intr_num;/读者个数intw_num;/写者个数intWmutex=I;表示允许写或允许读intRcount=O;表示正在读的进程数intRmutex=1;表示对Rcount的互斥操作intr(101=0,0,0,0,0,0,0,0,0,0h/表示读者的状态,】表示正在读intw10=0,0,0,0,0,0,0,0,0,0;表示写者的状态,1表示正在写intw.wait11l=-1,-lrl,-1,-1,-1,-1,-1,-1,-1,-U;表示等待队列。9表示写者,10时需引入读者的等待队列,-1表示空intJWaitUlEm-I11,-1,-1,-1,-11;读者的等待队列,0-9表示对应的读者,-1为空voidwrite.p(inti);模拟写者对WmUteX的P操作,同时也作为写者进程的入口voidwrite(inti);起先写操作voidwrite_v(inti);模拟笃者对WmUteX的V操作,写操作完成的时候调用voidradd_p(inti);模拟读之前对Rmutex的P操作,同时也作为读者进程的入口voidradd(inti);/Rcount加1voidread.p(inti);模拟读者对WmUteX的P操作voidradd_v(inti);模拟读之前对Rmutex的V操作voidread(inti);读voidrsub_p(inti);/模拟读之后对Rmutex的P操作,读操作完成的时候调用voidrsub(inti);/Rcount减1voidread_v(inti);模拟读者对Wmutex的V操作voidrsub_v(inti);模拟读之后对Rmutex的V操作模拟写者对WmUteX的P操作,同时为写者进程也作写的入口voidwrite_p(inti)Wmutex-;if(Wmutex<O)/表示假如WmUteX<0,则该写者进入等待队w_wait-Wmutex-l=i;elsewrite(i);进行写操作voidwrite(inti)wi=l;模拟写者对Wmutex的V操作,写操作完成的时候调用voidWrite_v(inti)(wi=O;Wmutex+;if(Wmutex<=O)/表示假如Wmutex<=O,则从等待队列中选择写者或读者进行操作intif(w_waitO>=O)&&(w_waitO<w_num)j=w_waitO|;for(k=0;k<w_num;k+)w_waitk=w_waitk+1;write(j);elsej=r-waitO;for(k=0;k<w_num;k+)w_waitk=w_wait(k+1;for(k=0;k<r_num;k+)r_waitk=r_wait(k+1);radd.v(j);模拟读之前对Rmutex的P操作,同时也作为读者进程的入口Rmutex-;if(Rmutex<O)/表示假如RmUteX<0,则进入等待队列JWaid-RmUteX=i;elseradd(i);对于Rcount加1的限制voidradd(inti)Rcount+;if(Rcount=l)read.p(i);elseradd_v(i);模拟读者对WmUteX的P操作:voidread_p(inti)Wmutex-;if(Wmutex<O)表示假如WmUteXV0,则进入等待队列w_wait-Wmutex-1)=10;r.wait0=i;elseradd-v(i);模拟读之前对Rmutex的V操作voidradd_v(inti)Rmutex+;if(Rmutex<=O)/表示假如Rmutex<=0,则从等待队列中选择读者进入RCOUnt的临界区intk,j;j=r-waitO;for(k=0;k<r_num;k+)r_waitk=r_waitk+1;radd(j);rcad(i);进行读操作voidread(inti)ri=l;模拟读之后对Rmutex的P操作,读操作完成的时候调用voidrsub_p(inti)(ri=O;Rmutex-;rsub(i);对RcoUnt减1的限制voidrsub(inti)Rcount"if(Rcount=0)read_v(i);elsersub-v(i);模拟读者对Wmutex的V操作voidread_v(inti)Wmutex+;if(Wmutex<=O)/表示假如WmUteXV=0,则从等待队列中选择写者或读者进行操作intk,j;if(w_wait01>=0)&&(w_wait0<w_num)j=w-waitO;for(k=0;k<w_num;k+)w_waitk=w_waitIk+1;write(j);elsej=r.waitO;for(k=0;k<w_num;k+)w_waitk=w_waitk+1;for(k=0;k<r_num;k+)r_waitk=r_waitk+1;radd_v(j);rsub_v(i);模拟读之后对Rmutex的V操作voidrsub_v(inti)Rmutex+;intmain()cout<<"ttt读者一写者问题演示cout<<endl;CoUtVV”请输入写者个数(1-10):cin>>w_num;while(w_num<1IlW_nUm>10)COUt<<”输入有误,请重新输入写者个数(1-10):";cin>>w_num;/完成对写者个数的输入c。UtVV”请输入读者个数(1-10):";cin>>r-num;while(r_num<1r-num>10)cout<v"输入有误,请重新输入读者个数(1-10):cin>>r.num;完成对读者个数的输入intx,k,j,a20;while(l)cout<<M*"<<endl;for(k=0;k<20;k+)ak)=O;cout<<nWmutex="<<Wmutex<<"t"<<"Rcount=>,<<Rcount<<"t"<<"Rmutex="<<Rmutex

    注意事项

    本文(OS课程设计读者写者.docx)为本站会员(王**)主动上传,优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知优知文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开