读者写者问题.doc

读者写者问题.doc

ID:59391053

大小:201.00 KB

页数:22页

时间:2020-05-30

读者写者问题.doc_第1页
读者写者问题.doc_第2页
读者写者问题.doc_第3页
读者写者问题.doc_第4页
读者写者问题.doc_第5页
资源描述:

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

1、课程设计采用“写优先”策略的“读者-写者”问题学号:姓名:孔方圆专业:计算机科学与技术指导教师:爱新觉罗日期:2013年3月22日一、设计目的与内容课程设计的目的:操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。※进一步巩固和复习操作系统的基础知识。※培养学生结构化程序、模块化程序设计的方法和能力。※提高学生调试程序的技巧和软件设计的能力。※提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。设计内容

2、:用高级语言编写和调试一个采用“写优先”策略的“读者-写者”问题的模拟程序。设计要求:1.读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入2.读者与写者均有二个以上,可在程序运行期间动态增加读者与写者3.可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化4.要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、写者等待队列、读写时间、等待时间5.读写策略为:读写互斥、写写互斥、写优先(只要写者到达,就阻塞后续的所

3、有读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,又有新的读者与写者到达,仍然是写者排在前面)二、算法的基本思想设计思想分别用三个队列来存放输入的数据的pro1队列和就绪的读者进程写者进程的队列pro2和和正在运行的读者写者队列pro3。只有当互斥信号量Wmutex=1表示无资源占用cpu,写者进入pro3进行写。当互斥信号量若Wmutex=0表示有资源占用cpu,若readcount>0说明有读者再读,由于读写互斥,写者不操作,等待。若当前读者数readcount=0时,有写者,因为写写互

4、斥,写者不进入,等待。涉及到的数据结构structThreadInfo{intnSerialNo;//线程序号charcType;//线程类别(判断是读者还是写者线程)intdDelayTime;//线程开始时间intdOpeTime;//线程操作时间intruntime;//线程运行时间structThreadInfo*next;};基本功能模块读者写者问题查看读者写者信息写优先退出文件读取手动输入主函数模块1)函数原形:voidmain();2)功能:初始化链表,调用menu()函数显示主界面就绪模块1)

5、函数原形:voidready(inti)2)功能:把pro1中就绪的读者写者信息移到队列pro2尾部3)变量及类型:ThreadInfo*p,*q,*j,*k;:定义指针变量,使队列变量intflag=0;标记,为0时,未开辟空间,为1时,,开辟空间,需释放显示模块1)函数原形:voidprint1()voidprint2()2)功能:print1()函数,显示文件中读者写者的信息,print2()函数显示写优先的读者写者进程运行情况。排序模块函数原形:voidsort()2)功能:给就绪队列pro2排序,写

6、者排在前,读者往后排。3)变量及类型:ThreadInfo*p,*q,*j,*k;j是写者链表,p是其移动指针,k是读者链表,q是其移动指针添加模块1)函数原形:voidadd1(inti)2)功能:给pro1增加一个读者或写者信息3)变量及类型:三、主要功能模块流程开始显示主界面,进行选择if(ch=2)If(ch=1)If(ch=0)查看文件和信息手动输入从文件读取提示保存退出结束显示“写优先”的读者写者运行情况是否增加读者写者输入要增加的信息显示增加了一个读者写者的“写优先”读写运行情况NY四、系统测试

7、1.选择1,运行界面如下:选择1,运行界面如下选择2,运行界面如下运行过程中增加一个读者或写者,界面如下2.选择2,运行界面如下:五.结论感想:在本次实验中程序曾多次编译、运行出错,多亏了周影老师的指导才将错误找出并改正,通过本次实验,我认识到实践和动手的重要性。缺陷:运行过程中没有用可视化界面动态显示,不能查看阅览室中读者/写者数目、等待队列、写者等待队列、读写时间、等待时间,但是可以查看阅览师中读者或写者和等待队列中的读者或写者。六.源程序及系统文件使用说明程序清单#include"windows.h"#

8、include#include#include#include#includevoidprint2();structThreadInfo{intnSerialNo;//线程序号charcType;//线程类别(判断是读者还是写者线程)intdDelayTime;//线程开始时间intdOpeTime;//线程

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

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

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