读者写者课程设计

上传人:re****.1 文档编号:485446611 上传时间:2023-10-09 格式:DOC 页数:24 大小:419KB
返回 下载 相关 举报
读者写者课程设计_第1页
第1页 / 共24页
读者写者课程设计_第2页
第2页 / 共24页
读者写者课程设计_第3页
第3页 / 共24页
读者写者课程设计_第4页
第4页 / 共24页
读者写者课程设计_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《读者写者课程设计》由会员分享,可在线阅读,更多相关《读者写者课程设计(24页珍藏版)》请在金锄头文库上搜索。

1、目 录第一章 课程设计目的和要求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 课程设计目的操作系统是计算机系统的核心和灵魂,是计算机系统必不可少的组成部分,也是计算机专业教学的重要

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

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

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

5、并截取运行结果截图。 第三章 详细设计说明3.1问题描述 所谓读者写着问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书。为实现读写同步,需要使用信号量机制。信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。对利用信号量来解决读者写者问题的描述如下: 1)写-写互斥,即不能有两个写者同时进行写操作; 2)读-写互斥,即不能同时有一个读者在读,同时却有一个写

6、者在写;3)读读允许,即可以有2个以上的读者同时读。 本次课程设计中,在处理读者写者等待队列的请求时,用到了两种唤醒进程算法:读者优先唤醒算法和写者优先唤醒算法。 读优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,读者优先进行读。 写优先:当一个读者与若干写者同时处于等待队列中时,并且此时并无写操作进行时,写者优先进行写。3.2模块设计1. 程序由三部分组成:1) 主程序:显示主菜单,调用各个子菜单;2) 读者优先唤醒:写者释放资源时,优先唤醒等待队列中的读进程;3) 写者优先唤醒:写者释放资源时,优先唤醒等待队列中的写进程。 主程序读者优先唤醒写者优先唤醒 退 出

7、图3-1模块划分图3.3程序流程图 结 束 读者优先唤醒 开始显示主菜单输入choiceChoice=1?Choice=2?Choice=3? 写者优先唤醒 退出NNNYYY图3-2为本次课程设计的程序流程图,其中choice为一整型变量,由使用者通过键盘输入: 图3-2程序流程图3.4算法与数据结构3.4.1数据结构1. 定义一个结构体,用来存放读者等待队列,其元素为用来存放读进程的数组reader200,用来指示等待队列中读进程个数的整型变量index:struct rqueue int readers200;int index;rq;2. 定义另一个结构体,用来存放写者等待队列,其元素为

8、用来存放写进程的数组writers200;用来指示等待队列中写进程个数的整型变量index:struct wqueue int writers200;int index;wq;3.4.2算法描述1. 定义一个数据缓存buffer及用于实现同步互斥的信号量w。2. 定义一个读者函数:1) 当有写者在占用buffer时,读者应该等待,直到写者不再使用该buffer;2) 当有其他读者在占用buffer时,读者可对buffer进行读取操作;3) 当buffer中有数据时,则从其中读取一个数据,并显示然后退出;4) 当buffer中没有数据时,应等待,直到buffer中有数据可读,用变量sign指示,

9、为1时才能读;为0时需要等待写者写数据。3. 定义一个写者函数:1) 当有读者在占用buffer时,写者应该等待,直到所有的读者都退出为止;2) 当有其他写者占用buffer时,该写者应该等待,直到占用buffer的写者退出为止;3) 当buffer有空闲时,写者应该在buffer中写入一个数据并退出。4. 定义主函数,在其中可以任意创建读者与写者。 可根据用户输入创建读者或写者进程(线程)。3.4.3 算法流程图1) 读操作算法流程图如图3-3所示:Y 开 始Rcount=0? w=1? sign=1? W=0;rcount+; 进行读等待写者写内容;并加入到读者唤醒队列;Rq.index+

10、; 结束YYNNN 图3-3读者算法流程图注:Rcount表示正在进行读操作的数目;w表示一个信号量,为1时表示无进程操作,缓冲区空闲,为0时表示有进程占用;sign表示缓冲区是否有数写入,只有缓冲区中有数才能进行读操作,为1表示有数,为0表示没有;Rq.index表示读操作等待唤醒队列进程数;2) 写操作算法流程图如图3-4所示: 开 始 W=1? W-;进行写;加入写唤醒队列Wq.index+; 结束NY 图3-4写者算法流程图注:w含义同上;Wq.index表示写操作等待唤醒队列进程数。3) 读者优先唤醒算法流程图如图3-5所示:读者优先唤醒是指当写者释放其占有的资源时,当读者和写者同时

11、有进程等待,优先处理读进程。图3-5注:Rcount.w.Wq.index含义同上;reader_wait是布尔型变量,为真时表示有读者等待,反之没有读者进程等待。4) 写者优先唤醒算法流程图如图3-6所示:写者优先唤醒是指当写进程释放其占有资源时,当读者和写者同时有进程等待,优先处理写进程。图3-6注:Rcount,w,Wq.index含义同上;write_wait是一个布尔型变量,为真时表示有写进程等待,反之没有。NNYNNYYYYWq.index=0? 处理队列首部的写进程N!reader_wait? 开始 Rcount=0?reader_wait=false;w=1; 结束当前写进程R

12、q.index=0? reader_wait=true; W=0;处理读进程Wq.index!=0? Rcount=0; W=1;处理写进程 W=0; 结束 图3-5读者优先唤醒算法流程图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 图3-6 写者优先唤醒算法流程图第四章 软件使用说明4.1系统开发与运行环境 代码实现:C语言程序开发工具:Mcrosoft Visual C + 6.0 运行环境:windows 7 4.2系统的运行说明对读者写者问题系统的运行说明如下:按照显示菜单说明,输入数字对菜单进行选择,一个菜单即是一个功能实现,可以实现读者写者进程同步与互斥问题。4.3 运行结果1. 系统主菜单及读者优先唤醒子菜单,按菜单提示选择1是读者优先唤醒算法,运行结果如图4-1所示: 图4-1主菜单及子菜单2. 在子

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号