读者写者课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

操作系统课程设计I目录第一章课程设计目的和要求....................................................11.1课程设计目的.........................................................11.2课程设计要求.........................................................1第二章课程设计任务内容......................................................22.1课程设计任务.........................................................22.2课程设计内容.........................................................2第三章详细设计说明..........................................................33.1问题描述.............................................................33.2模块设计.............................................................33.3程序流程图...........................................................43.4算法与数据结构.......................................................53.4.1数据结构.......................................................53.4.2算法描述.......................................................53.4.3算法流程图.....................................................6第四章软件使用说明.........................................................104.1系统开发与运行环境..................................................104.2系统的运行说明......................................................104.3运行结果............................................................10第五章课程设计心得体会.....................................................15附录1:参考文献............................................................16附录2:程序清单............................................................17操作系统课程设计1第一章课程设计目的和要求1.1课程设计目的操作系统是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分,也是计算机专业教学的重要内容。该课程概念众多、内容抽象、灵活性与综合性强,不但需要理解操作系统的概念和原理,还需要加强操作系统实验,上机进行编程实践,故进行此次课程设计,使我们更好地掌握操作系统的精髓,真正做到深刻理解和融会贯通。操作系统课程设计是本课程重要的实践教学环节。课程设计的目的,一方面使学生更透彻地理解操作系统的基本概念和原理,使之由抽象到具体;另一方面,通过课程设计加强学生的实验手段与实践技能,培养学生独立分析问题、解决问题、应用知识的能力和创新精神。此次课程设计给学生更多自行设计、自主实验的机会,充分放手让学生真正培养学生的实践动手能力,全面提高学生的综合素质。本次课程设计的题目为读者写者同步问题的实现,在熟练掌握进程同步原理的基础上,利用C程序设计语言在windows操作系统下模拟实现读者写者同步问题的功能,一方面加深对原理的理解,另一方面提高根据已有原理通过编程解决实际问题的能力,为进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。1.2课程设计要求在深入理解操作系统基本原理的基础上,对于选定的题目以小组为单位,先确定设计方案,设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理,编程序实现系统,要求实现可视化的运行界面,界面应清楚地反映出系统的运行结果,确定测试方案,对系统进程测试,运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并提交课程设计报告。操作系统课程设计2第二章课程设计任务内容2.1课程设计任务要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.技术要求:1)为每个读者/写者产生一个线程,设计正确的同步算法;2)读者应有3个以上,写者应有有两个以上;3)必须包含读者优先唤醒和写者优先唤醒两种算法。2.设计说明书内容要求:1)设计题目与要求;2)总的设计思想及系统平台、语言、工具等;3)数据结构与模块说明(功能与流程图);4)运行结果与运行情况。2.2课程设计内容本次课程设计是实现读者写者的同步与互斥问题,要求实现读者与读者可以共享资源,读者与写者互斥,写者与写者互斥,要求编写出完整的代码,并截取运行结果截图。操作系统课程设计3第三章详细设计说明3.1问题描述所谓读者写着问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书。为实现读写同步,需要使用信号量机制。信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。对利用信号量来解决读者—写者问题的描述如下:1)写-写互斥,即不能有两个写者同时进行写操作;2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;3)读读允许,即可以有2个以上的读者同时读。本次课程设计中,在处理读者写者等待队列的请求时,用到了两种唤醒进程算法:读者优先唤醒算法和写者优先唤醒算法。读优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,读者优先进行读。写优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,写者优先进行写。3.2模块设计1.程序由三部分组成:1)主程序:显示主菜单,调用各个子菜单;2)读者优先唤醒:写者释放资源时,优先唤醒等待队列中的读进程;3)写者优先唤醒:写者释放资源时,优先唤醒等待队列中的写进程。操作系统课程设计4图3-1模块划分图3.3程序流程图图3-2为本次课程设计的程序流程图,其中choice为一整型变量,由使用者通过键盘输入:图3-2程序流程图结束读者优先唤醒开始显示主菜单输入choiceChoice=1?Choice=2?Choice=3?写者优先唤醒退出NNNYYY主程序读者优先唤醒写者优先唤醒退出操作系统课程设计53.4算法与数据结构3.4.1数据结构1.定义一个结构体,用来存放读者等待队列,其元素为用来存放读进程的数组reader[200],用来指示等待队列中读进程个数的整型变量index:structrqueue{intreaders[200];intindex;}rq;2.定义另一个结构体,用来存放写者等待队列,其元素为用来存放写进程的数组writers[200];用来指示等待队列中写进程个数的整型变量index:structwqueue{intwriters[200];intindex;}wq;3.4.2算法描述1.定义一个数据缓存buffer及用于实现同步互斥的信号量w。2.定义一个读者函数:1)当有写者在占用buffer时,读者应该等待,直到写者不再使用该buffer;2)当有其他读者在占用buffer时,读者可对buffer进行读取操作;3)当buffer中有数据时,则从其中读取一个数据,并显示然后退出;4)当buffer中没有数据时,应等待,直到buffer中有数据可读,用变量sign指示,为1时才能读;为0时需要等待写者写数据。3.定义一个写者函数:1)当有读者在占用buffer时,写者应该等待,直到所有的读者都退出为止;2)当有其他写者占用buffer时,该写者应该等待,直到占用buffer的写者操作系统课程设计6退出为止;3)当buffer有空闲时,写者应该在buffer中写入一个数据并退出。4.定义主函数,在其中可以任意创建读者与写者。可根据用户输入创建读者或写者进程(线程)。3.4.3算法流程图1)读操作算法流程图如图3-3所示:图3-3读者算法流程图注:Rcount表示正在进行读操作的数目;w表示一个信号量,为1时表示无进Y开始Rcount=0?w=1?sign=1?W=0;rcount++;进行读等待写者写内容;并加入到读者唤醒队列;Rq.index++;结束YYNNN操作系统课程设计7程操作,缓冲区空闲,为0时表示有进程占用;sign表示缓冲区是否有数写入,只有缓冲区中有数才能进行读操作,为1表示有数,为0表示没有;Rq.index表示读操作等待唤醒队列进程数;2)写操作算法流程图如图3-4所示:图3-4写者算法流程图注:w含义同上;Wq.index表示写操作等待唤醒队列进程数。3)读者优先唤醒算法流程图如图3-5所示:读者优先唤醒是指当写者释放其占有的资源时,当读者和写者同时有进程等待,优先处理读进程。图3-5注:Rcount.w.Wq.index含义同上;reader_wait是布尔型变量,为真时表示有读者等待,反之没有读者进程等待。4)写者优先唤醒算法流程图如图3-6所示:写者优先唤醒是指当写进程释放其占有资源时,当读者和写者同时有进程等待,优先处理写进程。图3-6注:Rcount,w,Wq.index含义同上;write_wait是一个布尔型变量,为真时表示有写进程等待,反之没有。开始W=1?W--;进行写;加入写唤醒队列Wq.index++;结束NY操作系统课程设计8图3-5读者优先唤醒算法流程图NNYNNYYYYWq.index=0?处理队列首部的写进程N!reader_wait?开始Rcount=0?reader_wait=false;w=1;结束当前写进程Rq.index=0?reader_wait=true;W=0;处理读进程Wq.index!=0?Rcount=0;W=1;处理写进程W=0;结束操作系统课程设计9图3-6写者优先唤醒算法流程图YNNYYYNNY开始Rcount=0?write_wait=false;w=1;结束当前写进程Wq.index=0?write_wait=true;W=0;依次处理写进程Wq.index!=0?Rcount=0;W=1;处理写进程W=0;!write_wait?Rq.index=0?处理读进程;w=0结束N操作系统课程设计10第四章软件使用说明4.1系统开发与运行环境代码实现:C语言程序开发工具:McrosoftVisualC++6.0运行环境:windows74.2系统的运行说明对读者写者问题系统的运行说明如下:按照显示菜单说明,输入数字对菜单进行选择,一个菜单即是一个功能实现,可以实现读者写者进程同步与互斥问题。4.3运行结果1.系统主菜单及读者优先唤醒子菜单,按菜单提示选择1是读者优先唤醒算法,运行结果如图4-1所示:图4-1主菜单及子菜单2.在子菜单中选择1创建读进程,

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功