- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
写优先读者写者问题课设报告
淮北师范大学
课 程 设 计
采用“写优先”策略的“读者-写者”问题
学 号:
姓 名:
专 业:
指导教师:
日 期:
目录
第1部分 课设简介 03
1.1 课程设计题目 03
1.2 课程设计目的 03
1.3 课程设计内容 03
1.4 时间安排 03
第2部分 实验要求 04
第3部分 主要思想 04
3.1基本思想 04
3.2主要功能模块流程图 06
3.3 测试用例及运行结果 07
第4部分 源代码 10
第5部分 总结及参考文献 22
5.1 总结 22
5.2 参考文献 22
第1部分 课设简介
1.1 课程设计题目
采用“写优先”策略的“读者—写者”问题
1.2 课程设计目的
操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。
1)进一步巩固和复习操作系统的基础知识。
2)培养学生结构化程序、模块化程序设计的方法和能力。
3)提高学生调试程序的技巧和软件设计的能力。
4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
1.3 课程设计内容
用高级语言编写和调试一个采用写优先策略的读者写者问题的模拟程序。
1.4 时间安排
1)分析设计贮备阶段 (1 天)
2)编程调试阶段 (7 天)
3)写课程设计报告、考核(2 天)
第2部分 实验要求
读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。
读者与写者均有两个以上,可在程序运行期间进行动态增加读者与写者。
可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化。
要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。
读写策略:读写互斥、写写互斥、写优先 (只要写者到达,就阻塞后续的所有读者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,又有新的读者与写者到达,仍然是写者排在前面)
第3部分 主要思想
3.1基本思想
进程结构体:
struct process
{
int name; //进程序号
char type; //进程类别(判断是读者还是写者线程)
int starttime; //进程开始时间
int needtime; //进程读写需要的时间
int runtime;//进程在内存中已运行的时间
struct process *next;
};
创建三个链表,分别为process1、process2、process3。process1存储各个进程的信息,process2存储就绪队列的进程信息,process3存储正在执行的进程的信息。
用整形数i模拟时间片,每次时间片开始时先将需要进入就绪队列的进程用ready()函数拉入就绪队列。判断就绪队列的开头是读者还是写者,然后调用相应的函数Reader()或Writer()。如若调用的是Writer(),还要调用sort()函数对就绪队列进程排序,将写者排在写者前面。
时间片结束时,对各个进程的runtime++,并判断进程是否执行完毕,如果完毕就其离开process3链表。最后将时间片i++,反复循环,直到所有进程执行完毕。
3.2.主要功能模块流程图
采用“写优先“策略的”“读者—写者”问题
3.3 测试用例及运行结果
程序运行实例如下:
2.选择运行界面如下
3.在执行过程中动态暂停。
4.
5.选择3,退出界面如下
第4部分 源代码
#include stdi
文档评论(0)