课程设计:采用“写优先”的策略演示“读者-写者”.pdfVIP

课程设计:采用“写优先”的策略演示“读者-写者”.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘要 一个数据文件或记录可被多个进程共享,把只要求读该文件的进程称为“Re ader进程”,其他进程则称为“Writer进程”。允许多个进程同时读一个共享对象, 因为读操作不会使数据文件混乱。但不允许一个Writer进程和其他Reader进程或 Writer进程同时访问共享对象。因为这种访问会引起混乱。 所谓“读者- 写者问题”指保证一个Writer进程必须与其他进程互斥地访问共享对象的同步问 题。 目录 1. 概述4 2.课程设计任务及要求4 2.1 设计任务4 2.2 设计要求4 3. 算法及数据结构4 3.1 算法的总体思想4 3.1 3.2 键入读者/写者进程模块5 3.2 3.3 读取读者/写者样例模块6 3.3 3.4 查看读者写者信息模块7 4. 程序设计与实现7 4.1 程序流程图7 4.2 主要程序代 8 4.3 实验结果13 5. 结论15 6. 收获、体会和建议。15 6.1谢海钊的收获体会15 6.2叶诗敏的收获体会15 7. 参考文献。 15 1.概述 所谓读者写者问题,是指保证一个Writer进程必须与其他进程互斥地访问 共享对象的同步问题。写优先的读者写者问题可以这样的描述,有一群写者和一 群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书, 但是,只能有一个写者在写书,并且,写者的优先级必须比读者的大,也就是说, 读者和写者同时提出请求时,写者优先执行。 2.课程设计任务及要求 2.1 设计任务 2.1 设计任务 成员姓名 周三下午 周四上午 周四下午 周五上午 周五下午 谢海钊 查找相关资 了解算法, 分析、修改 完善代 , 完善课程设 料 调试代 代 测试 计报告 叶诗敏 查找相关资 了解算法, 写报告,画 测试 完善课程设 料 调试代 程序流程图 计报告 2.2 设计要求 2.2 设计要求 1) 读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上 进行输入 2) 读者与写者均有二个以上,可在程序运行期间动态增加读者与写者 3) 可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间 、读写时间的初始化 4) 要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/ 写者数目、读者等待队列、写者等待队列、读写时间、等待时间 5) 读写策略为:读写互斥、写写互斥、写优先(只要写者到达,就阻塞后续的 所有读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室 之前,又有新的读者与写者到达,仍然是写者排在前面) 3.算法及数据结构 算法的总体思想 算法的总体思想 本算法主要使用互斥信号量机制,解决读者写者同步问题。本算法通过创建 三个链表process1,process2和process3 ,process1用于存储各个进程的信息,process 2用于存储就绪队列的进程信息,process3用于存储正在执行的进程的信息。通过 使用整形变量来模拟时间片,每次时间片一开始,通过ready()函数将进程拉入就 绪队列。然后根据判断就绪队列的开头是读者还是写者,来调用相应的进程Read er()或Writer() 。如果调用的是Writer(),就得调用sort()函数对就绪队列进程进行排 序,将写者排在读者前面。当时间片结束时,对各个进程的执行时间加1,并判断 进程是否执行完毕,如果完毕就将其退出运行进程链表process3 。最后将时间片 加一,反复循环,直到所有进程执行完毕。 本系统主要有三个模块,键入读者写者进程模块、读取读者写者样例模块、 查看读者写者信息模块。 定义进程结构体: struct Process { int name; /

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档