课程设计:采用“写优先”的策略演示“读者-写者”

课程设计:采用“写优先”的策略演示“读者-写者”

ID:22598134

大小:276.32 KB

页数:22页

时间:2018-10-30

课程设计:采用“写优先”的策略演示“读者-写者”_第1页
课程设计:采用“写优先”的策略演示“读者-写者”_第2页
课程设计:采用“写优先”的策略演示“读者-写者”_第3页
课程设计:采用“写优先”的策略演示“读者-写者”_第4页
课程设计:采用“写优先”的策略演示“读者-写者”_第5页
资源描述:

《课程设计:采用“写优先”的策略演示“读者-写者”》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、摘要一个数据文件或记录可被多个进程共亨,把只要求读该文件的进程称为"Reader进程”,其他进程则称为“Writer进程”。允许多个进程同吋读一个共享对象,因为读操作不会使数据文件混乱。但不允许一个Writer进程和其他Reader进程或Writer进程M时访问井享对象。因为这种访问会引起混乱。所谓“读者-写者M题”指保证一个Writer进程必须与其他进程互斥地访M共享对象的同步问题。目录1.酸32.课程设计任务及要求42.1设计任务42.2设计要求43.算法及数据结构53.1算法的总体思想53.2键入读者/写者进程模块53.3读取读者/写者样例模块63.4查看读者写者信息模

2、块74.程序设计与实现84.1程序流程图84.2主要程序代码84.3实验结果145.结说176.收获、体会和建议。186.1谢海钊的收获体会186.2叶诗敏的收获体会187.参考文献。181.概述所谓读者写者问题,是指保证一个Writer进程必须与其他进程互斥地访问共享对象的M步问题。写优先的读者写者问题可以这样的描述,有一群写者和一群读者,写者在写M—木15,读者也在读这木

3、5,多个读者町以

4、nj时读这木屮),但是,只能冇一个写者在写书,并且,写者的优先级必须比读者的人,也就是说,读者和写者同时提出请求时,写者优先执行。1.课程设计任务及要求2.1设计任务成员姓名周三下午周

5、四上午周四下午周五上亇周五下亇谢海钊查找相关资料了解算法,调试代码分析、修改代码完善代码,测试完善课程设计报告叶诗敏杏找相关资料了解算法,调试代码写报告,画程序流程图测试完善课程设计报告2.2设计要求1)读者与写者至少包括ID、进入内存时间、读写时间三项N容,可在界趾h进行输入2)读者与写者均柯二个以上,可在程序运行期间动态增加读者与写者3)可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存吋间、读写时间的初始化4)要求将运行过程用可视化界面动态显示,可随吋村停,査看阅览室中读者/写者数n、读者等待队列、写者等待队列、读写时间、等待时间5)读写策略为:读写互斥、

6、写写互斥、写优先(只要写者到达,就阻塞Vi•续的所柯读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,乂奋新的读者与写者到达,仍然是写者排在前面)1.算法及数据结构3.1算法的总体思想木算法主要使用互斥信兮S机制,解决读者写者同少问题。木算法通过创建三个链表processl,process2和process3,process1川于存储各个进租的信息,process2用于存储就绪队列的进程信息,process3W于存储正在执行的进程的信息。通过使川整形变景来模拟吋间片,每次吋间片一开始,通过readyO函数将进程拉入就绪队列。然后根裾判断就绪队列的开头是读者还是

7、写者,来调用相应的进程Reader()uKWriter()0如果调用的是WriterO,就得调用sort()函数对就绪队列进程进行排序,将写者排在读者前而。当时间八结束时,对各个进程的执行时I川加1,丼判断进程是否执行完毕,如果完毕就将W退出运行进程链表procesd。最后将吋间片加一,反复循环,直到所有进程执行完毕。本系统主要有三个模块,键入读者写者进程模块、读取读者写者样例模块、査看读者写者信息模块。定义进程结构体:structProcess{intname;//进程序号chartype;//进程类别(判断足读者进程还是写者进程)intstarttime;//进程幵始执行

8、时间intneedtime;//进程读写需要的时间intruntime;//进程已在内存中运行的时间structProcess*next;//指向下一个进程的指针};3.2键入读者/写者进程模块3.2.1功能通过键盘录入读者写者进程数和读者写者信息,系统根据写优先的策略来调度相应的读者写者进程,并输出相应的执行序列。3.2.2数据结构Process*process1=NULL,*process2=NULL,*process3=NULL;//定义三个指针变量,分别用于存储各个进程的倍息,存储就绪队列的进程信息,存储可执行的进程的信息3.2.3算法开始结束3.3读取读者/写者样例

9、模块3.3.1功能该模块主要通过读取外部样例数据,进行读#/写者、进入内存吋间、读写时叫的初始化,外输出读者写者进程执行情况。3.3.2数据结构Process*processl=NULL,*process2=NULL,*process3=NULL;//定义三个指针变.S:,分别用J•存储各个进程的信息,存储就绪队列的进程信息,存储吋执行的进程的信息FILE*fp;//声明fp是指针,用来指句FILE类型的对象,存取外部文件信息3.3.3算法-R-读者开始拉进就绪队列写者isfrHtniKiH-j棑序斯运

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

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

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