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

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
写优先”策略的“读者-写者”问题

采用“写优先”策略的“读者-写者”问题 PAGE  PAGE - 29 - 采用“写优先”策略的“读者-写者”问题 学 院 计算机科学与技术 专 业 计算机科学与技术 学 号 学 生 姓 名 指导教师姓名 2014-3-11 目 录  HYPERLINK \l _Toc7595 一、设计目的与内容  PAGEREF _Toc7595 - 1 - (1 ) 、课程设计的目的……………………………………………………………….-1- (2 ) 、课程设计的内容………………………………………………………………-1- (3 ) 、课程设计的要求………………………………………………………………-1-  HYPERLINK \l _Toc26621 二、算法的基本思想  PAGEREF _Toc26621 - 2 -  HYPERLINK \l _Toc27157 三、模块流程图  PAGEREF _Toc27157 - 4 - TOC \o 1-1 \h \u  HYPERLINK \l _Toc7595 四、测试结果  PAGEREF _Toc7595 - 5 -  HYPERLINK \l _Toc26621 五、结论  PAGEREF _Toc26621 - 10 -  HYPERLINK \l _Toc27157 六、源程序  PAGEREF _Toc27157 - 10 -  一、设计目的与内容 (1)课程设计的目的: 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决问题的机会。 进一步巩固和复习操作系统的基础知识。 培养学生结构化程序、模块化程序设计的方法和能力。 提高学生调试程序的技巧和软件设计的能力。 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 (2) 课程设计的内容: 用高级语言编写和调试一个采用“写优先”策略的“读者—写者”问题的模拟程序。 (3) 课程设计的要求: 读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。 读者与写者均有两个以上,可在程序运行期间进行动态增加读者与写者。 可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化。 要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。 读写策略:读写互斥、写写互斥、写优先 (只要写者到达,就阻塞后续的所有读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,又有新的读者与写者到达,仍然是写者排在前面) 二、算法的基本思想 进程结构体: struct process { int name; //进程ID 号 char type; //进程类别(判断是读者还是写者线程) int starttime; //进程开始时间 int needtime; //进程读写需要的时间 int runtime; //进程在内存中已运行的时间 struct process *next; }; 创建三个链表,分别为process1 、process2 、process3 。process1 存储各个进程的信息,process2 存储就绪队列的进程信息,process3 存储正在执行的进程的信息。系统有两个功能,一个是手动输入进程,另一个是文件输入进程。文件读入功能,是从文件“123.txt”中读入进程。 用整形数I 模拟时间片,每次时间片开始时先将需要进入就绪队列的进程用ready() 函数拉入就绪队列。接着用sort() 函数进行排序,将写者排在读者前面。然后判断就绪队列的开头是读者还是写者,然后调用相应的函数Reader()或Writer()。 时间片结束时,对各个进程的runtime++,并判断进程是否执行完毕,如果完毕就其离开process3 链表。最后将时间片i++,反复循环,直到所有进程执行完毕。 三、模块流程图 开始 ready(int i) type reader() r writer () w runtime++ runtime==needtime 离开process3 process1,process2,process3均为空 Y N Y 结

文档评论(0)

2017ll + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档