ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:426.57KB ,
资源ID:2998173      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2998173.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(读者写者课程设计.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

读者写者课程设计.docx

1、读者写者课程设计第一章 课程设计目的和要求11.1 课程设计目的1.2课程设计要求 1第二章 课程设计任务内容22.1课程设计任务 2.2课程设计内容2第三章 详细设计说明3.1问题描述332模块设计333程序流程图43.4算法与数据结构 5.1数据结构 3.2算法描述 5第四章 软件使用说明 1041系统开发与运行环境10.2系统的运行说明104.3 运行结果 10附录1:参考文献16附录:程序清单 17第一章 课程设计目的和要求1 课程设计目的操作系统是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分,也是计算机专业教学的重要内容。该课程概念众多、内容抽象、灵活性与综合性强,不但需要

2、理解操作系统的概念和原理,还需要加强操作系统实验,上机进行编程实践,故进行此次课程设计,使我们更好地掌握操作系统的精髓,真正做到深刻理解和融会贯通。 操作系统课程设计是本课程重要的实践教学环节。课程设计的目的,一方面使学生更透彻地理解操作系统的基本概念和原理,使之由抽象到具体;另一方面,通过课程设计加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。此次课程设计给学生更多自行设计、自主实验的机会,充分放手让学生真正培养学生的实践动手能力,全面提高学生的综合素质。本次课程设计的题目为读者写者同步问题的实现,在熟练掌握进程同步原理的基础上,利用程序设计语言在wn

3、o操作系统下模拟实现读者写者同步问题的功能,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。1. 课程设计要求在深入理解操作系统基本原理的基础上,对于选定的题目以小组为单位,先确定设计方案,设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理,编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果,确定测试方案,对系统进程测试,运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并提交课程设计报告。第2章 课程设计任务内容21课程设计任务要求完成的主要任务:

4、(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.技术要求: 1)为每个读者/写者产生一个线程,设计正确的同步算法; 2)读者应有3个以上,写者应有有两个以上; 3) 必须包含读者优先唤醒和写者优先唤醒两种算法。2.设计说明书内容要求: )设计题目与要求; )总的设计思想及系统平台、语言、工具等; 3)数据结构与模块说明(功能与流程图); 4)运行结果与运行情况。2课程设计内容 本次课程设计是实现读者写者的同步与互斥问题,要求实现读者与读者可以共享资源,读者与写者互斥,写者与写者互斥,要求编写出完整的代码,并截取运行结果截图。 第3章 详细设计说明31问题描述 所谓读者写着问题,

5、是指保证一个writ进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书。为实现读写同步,需要使用信号量机制。信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。对利用信号量来解决读者写者问题的描述如下: 1)写-写互斥,即不能有两个写者同时进行写操作; 2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;)读读允许,即可以有2个以上的读者同时读。 本次课程设计中,在处理读者写

6、者等待队列的请求时,用到了两种唤醒进程算法:读者优先唤醒算法和写者优先唤醒算法。 读优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,读者优先进行读。 写优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,写者优先进行写。3.2模块设计1.程序由三部分组成:1)主程序:显示主菜单,调用各个子菜单;2)读者优先唤醒:写者释放资源时,优先唤醒等待队列中的读进程;3)写者优先唤醒:写者释放资源时,优先唤醒等待队列中的写进程。 图3模块划分图.3程序流程图图-2为本次课程设计的程序流程图,其中cic为一整型变量,由使用者通过键盘输入: 图3-2程序流程图3

7、4算法与数据结构3.41数据结构1.定义一个结构体,用来存放读者等待队列,其元素为用来存放读进程的数组reaer200,用来指示等待队列中读进程个数的整型变量nex:trtrqueue ntrad00;it index;q;2.定义另一个结构体,用来存放写者等待队列,其元素为用来存放写进程的数组wrtes20;用来指示等待队列中写进程个数的整型变量inex:strut wqeue inwries0; n dx;q;3.4.2算法描述1.定义一个数据缓存buffr及用于实现同步互斥的信号量w。2.定义一个读者函数:1)当有写者在占用bufe时,读者应该等待,直到写者不再使用该buffr;2)当有

8、其他读者在占用fe时,读者可对bufr进行读取操作;3)当ufe中有数据时,则从其中读取一个数据,并显示然后退出;4)当uffr中没有数据时,应等待,直到buffe中有数据可读,用变量sign指示,为1时才能读;为0时需要等待写者写数据。3.定义一个写者函数:1)当有读者在占用bufer时,写者应该等待,直到所有的读者都退出为止;2)当有其他写者占用bffer时,该写者应该等待,直到占用fe的写者退出为止;3)当bufer有空闲时,写者应该在uffr中写入一个数据并退出。4.定义主函数,在其中可以任意创建读者与写者。 可根据用户输入创建读者或写者进程(线程)。3.43算法流程图1)读操作算法流

9、程图如图3-3所示: 图3-3读者算法流程图注:ont表示正在进行读操作的数目;w表示一个信号量,为1时表示无进程操作,缓冲区空闲,为时表示有进程占用;i表示缓冲区是否有数写入,只有缓冲区中有数才能进行读操作,为1表示有数,为0表示没有;q.ex表示读操作等待唤醒队列进程数;2)写操作算法流程图如图3-4所示: 图写者算法流程图注:w含义同上;qindex表示写操作等待唤醒队列进程数。3)读者优先唤醒算法流程图如图3所示:读者优先唤醒是指当写者释放其占有的资源时,当读者和写者同时有进程等待,优先处理读进程。图35注:Rcoun.w.W.index含义同上;reader_wait是布尔型变量,为

10、真时表示有读者等待,反之没有读者进程等待。4)写者优先唤醒算法流程图如图36所示:写者优先唤醒是指当写进程释放其占有资源时,当读者和写者同时有进程等待,优先处理写进程。图-注:Rcount,w,Wqindex含义同上;writewa是一个布尔型变量,为真时表示有写进程等待,反之没有。 图3-5读者优先唤醒算法流程图 图36 写者优先唤醒算法流程图第四章软件使用说明41系统开发与运行环境 代码实现:C语言程序开发工具:McrosoftVsalC+ .0运行环境:winows7 4.系统的运行说明对读者写者问题系统的运行说明如下:按照显示菜单说明,输入数字对菜单进行选择,一个菜单即是一个功能实现,

11、可以实现读者写者进程同步与互斥问题。4.3 运行结果1.系统主菜单及读者优先唤醒子菜单,按菜单提示选择1是读者优先唤醒算法,运行结果如图4-所示: 图1主菜单及子菜单2.在子菜单中选择创建读进程,由于此之前并无写者向缓冲区中写数,所以缓冲区为空,此时不可读,将读者加入到等待唤醒队列,读者队列数目加1,运行结果如图4-所示: 图42 创建读进程3.在子菜单中选择创建写进程1,由于并无进程占用缓冲区,所以写者不必等待可以直接写数,运行结果如图4-3所示: 图4-3 创建写进程4.在子菜单中选择1创建读者进程,由于已有写进程占用所以将读者进程加入到读者等待唤醒队列;选择创建写者进程,由于写者与写者互

12、斥,将写者2加入到写者等待唤醒队列,运行结果如图4-4所示: 图 44创建读进程和写进程5.选择3写者1释放资源,由于此为读者优先唤醒算法,所以优先唤醒读者,进行读进程操作,运行结果如图-5所示: 图4-写者释放占有资源优先唤醒读者6.选择1创建读进程,读者与读者之间不互斥,所以不必等待;选择2创建写进程3,由于读进程占用资源,所以写者必须等待,将写者加入等待队列,运行结果如图4-6所示: 图 4-6 创建读进程和写进程7.选择读者释放资源,写者2被唤醒进行写操作,运行结果如图47所示: 图4-7 读者释放占有资源8.返回到主菜单并选择写者优先唤醒算法,运行结果如图48所示: 图 48写者优先

13、唤醒算法9.选择3释放当前进程,等待队列中的写者唤醒,运行结果如图4-9所示: 图 - 释放写者2,写者3占有资源10.创建两个读进程和一个写者进程,由于写者3占有资源,所以它们都要加入各自等待唤醒队列中,运行结果如图410所示: 图4-0 创建读进程和写进程11.释放当前写者占有资源,由于本算法使用的是写者优先唤醒算法,所以写者4优先被唤醒占用资源,进行写操作,读者进程依然等待,运行结果如图1所示: 图4-11写者释放资源优先唤醒等待队列中的写者第五章课程设计心得体会 三周的课程设计结束了,这次课程设计是操作系统中读者与写者问题。通过课程设计我懂得了读者与写者的一些简单算法的实现,掌握了用高级语言编写和调试程序的方法,加深了对读者写者问题概念及算法的理解,并且加深了对进程同步算法的理解。同时,在这次课程设计中,也暴露出一些问题,比如动手之前的构思是非常的完美,本来以为会一气呵成的顺利完成任务,可是正是需要动手做得时候却是那么困难,尤其是编写代码的时候,编完运行老是出错,然后改正,还是出错,总是在那些细节上出错,问题虽然不大,但就是不能运行。所以,平时还是要多动手,注意要认真细心。最后,感谢老师对我的学习的指导!附录1:参考文献1 胡志刚,谭长庚等,计算机操作系统,中南大学出版社200年罗宇,邹鹏等,操作系统(第二版),电子工业出版社007年4月 汤子瀛,哲风屏,汤小冉等

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1