- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计 读者写者算法 安徽理工大学课程设计任务书 计算机 院系 软件 教研室 学 号2010302936学生姓名訾振恒专业(班级)电子10-1班设计题目读者写者算法模拟设计技术参数了解进程同步的概念加深对读者写者算法的理解理解信号量机制的原理掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥用高级语言和MFC编写和调试一个简单的读者写者算法程序设计要求设计一个读者写者算法模拟程序以解决进程间的互斥问题。(2)对程序的每一部分要有详细的设计分析说明。(3)源代码格式要规范。(4)设计合适的测试用例,对得到的运行结果要有分析。(5)设计中遇到的问题,设计的心得体会。(6)按期提交完整的程序代码、可执行程序和课程设计报告。工作量课程设计任务要求不少于10页的报告,要赋有模块图或流程图。工作计划第一周:查找相关资料,并绘制草图!第二周:确定选用C++语言和MFC为编程语言,。第三周:写需求分析报告。第四周:着手进行编程,实现算法,并调试程序。第五周:测试程序并优化功能,最终完成设计报告。参考资料[1]汤小丹 梁红兵 哲凤屏 汤子瀛. 计算机操作系统(第三版)西安电子科技大学出版社,2007[2]杨克昌 王岳斌 计算机导论(第二版)[M]中国水电出版社.2005[3](美)Roger S.Pressman 著 软件工程[M] 机械工业出版社 .2009[4]徐孝凯 C++语言基础教程(第二版)[M] 清华大学出版社.2007[5]郑阿奇 Visual C++教程[M] 清华大学出版社.2005指导教师签字教研室主任签字 摘要 所谓读者写着问题,是指保证一个写者进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量来判断当前是否可操作。信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。 总资源数、进程数、已分配的资源都可从文档中直接读出到MFC界面,列出进程安全序列。源程序是用高级语言C++编程实现。 关键词:读者写者算法 资源竞争 进程互斥 目录 1.读者写者算法 1.1 系统分析 1.1.1问题描述 1.1.2算法描述 1.1.3设计目的 1.2 系统设计 1.2.1设计要求 1.2.2设计原理 1.2.3设计流程图 1.3系统实现 1.3.1数据结构 1.3.2函数声明 1.3.3运行结果 2总结 2.1设计体会 参考文献 1.读者写者算法 1.1 系统分析 1.1.1问题描述 (1)多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。读者可以同时读,但是写者只能独立写。 (2)对(1)修改,使得它对写者优先,即一旦有写者到,后续的读者都必须等待,而无论是否有读者在读文件。 1.1.2算法描述 写者优先 写者优先与读者不同之处在于一旦一个写者到来它应该尽快对文件进行写操作如果有一个写者在等待则新到来的读者不允许进行读操作。为此应当填加一个整形变量numwrite用于记录正在等待的写者的数目numwrite的初值为0.当线程开始调入时.只允许一个写者准备读. 等待互斥信号,保证对numwrite 的访问,修改互斥.即numwrite++.而当写者线程进行读操作时,则相应写者数目减少(numwrite--).当numwrite=0 时说明所有的读者都已经读完离开临界区唤醒读者,释放互斥信号. 为了实现写者优先应当填加一个个临界区对象read当有写者在写文件或等待时读者必须阻塞在read上。 1.1.3设计目的 带着下面几个问题,对课题进行深入分析直至解决问题: 1.了解进程产生互斥的原因; 2.了解为什么要进行死锁的避免; 3.掌握读者写者算法的数据结构; 4.了解算法的执行过程,加深对读者写者算法的理解。 1.2 系统设计 1.2.1设计要求 1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。 2.画出程序的基本结构框图和流程图。 3.对程序的每一部分要有详细的设计分析说明。 4.源代码格式要规范。 5.设计合适的测试用例,对得到的运行结果要有分析。 6.设计中遇到的问题,设计的心得体会。 7.按期提交完整的程序代码、可执行程序和课程设计报告。 1.2.2设计原理 1.读者写者算法思路: 先对用户提出的请求优先性选择,即是时间优先,还是写者优先。若满足
文档评论(0)