写优先”策略的“读者-写者”问题.doc

写优先”策略的“读者-写者”问题.doc

ID:57316325

大小:222.50 KB

页数:31页

时间:2020-08-11

写优先”策略的“读者-写者”问题.doc_第1页
写优先”策略的“读者-写者”问题.doc_第2页
写优先”策略的“读者-写者”问题.doc_第3页
写优先”策略的“读者-写者”问题.doc_第4页
写优先”策略的“读者-写者”问题.doc_第5页
资源描述:

《写优先”策略的“读者-写者”问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、采用“写优先”策略的“读者-写者”问题学院计算机科学与技术专业计算机科学与技术学号学生姓名指导教师姓名2014-3-11目录一、设计目的与内容-1-(1)、课程设计的目的……………………………………………………………….-1-(2)、课程设计的内容………………………………………………………………-1-(3)、课程设计的要求………………………………………………………………-1-二、算法的基本思想-2-三、模块流程图-4-四、测试结果-5-五、结论-10-六、源程序-10-一、设计目的与内容(1)课程设计的目的:操作系统课程设计是计算机专业重要的教学环节,它为学生

2、提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决问题的机会。l进一步巩固和复习操作系统的基础知识。l培养学生结构化程序、模块化程序设计的方法和能力。l提高学生调试程序的技巧和软件设计的能力。l提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。(2)课程设计的内容:用高级语言编写和调试一个采用“写优先”策略的“读者—写者”问题的模拟程序。(3)课程设计的要求:1.读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。2.读者与写者均有两个以上,可在程序运行期间进行动态增加读者与写者。3.可读取样例

3、数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化。1.要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。2.读写策略:读写互斥、写写互斥、写优先(只要写者到达,就阻塞后续的所有读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,又有新的读者与写者到达,仍然是写者排在前面)二、算法的基本思想进程结构体:structprocess{intname;//进程ID号chartype;//进程类别(判断是读者还是写者线程)intstarttime;//进程开始时间int

4、needtime;//进程读写需要的时间intruntime;//进程在内存中已运行的时间structprocess*next;};创建三个链表,分别为process1、process2、process3。process1存储各个进程的信息,process2存储就绪队列的进程信息,process3存储正在执行的进程的信息。系统有两个功能,一个是手动输入进程,另一个是文件输入进程。文件读入功能,是从文件“123.txt”中读入进程。用整形数I模拟时间片,每次时间片开始时先将需要进入就绪队列的进程用ready()函数拉入就绪队列。接着用sort()函数进行排序,将

5、写者排在读者前面。然后判断就绪队列的开头是读者还是写者,然后调用相应的函数Reader()或Writer()。时间片结束时,对各个进程的runtime++,并判断进程是否执行完毕,如果完毕就其离开process3链表。最后将时间片i++,反复循环,直到所有进程执行完毕。三、模块流程图开始ready(inti)typereader()rwriter()wruntime++runtime==needtime离开process3process1,process2,process3均为空YNY结束Sort()i++N四、测试结果程序运行实例如下:1、进入主界面2、选择

6、1,运行界面如下:3、选择2,运行界面如下:4.在执行过程中动态暂停。5、在进程暂停的情况下,按A可以增加进程。6、退出五、结论这次课设成功采用了“写优先”策略通过输入、排序、就绪等函数实现“读者写者”问题,在这两周时间里我重新翻阅了《C语言程序设计》、《操作系统》等书,也参考了很多网络资源,对“读者-写者”问题有了更深的理解,对C语言和数据结构也有了更好的掌握,使我体会到了理论与实践结合的效果。这次课程设计对我有很大的帮助,在这过程中还掌握了很多编程的小技巧。六、源程序#include#include#include"w

7、indows.h"#includeintmutex=1;//互斥读写的信号量intreadcount=0;//用readcount变量来记录读者数structprocess{intnum;//进程序号chartype;//进程类别(判断是读者还是写者)intstarttime;//进程开始时间intneedtime;//进程读写需要的时间intruntime;//进程在内存中已运行的时间structprocess*next;};process*process1=NULL,*process2=NULL,*process3=NULL;voidin

8、put(){process*p,*q;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。