操作系统原理课程设计读者

上传人:M****1 文档编号:560711071 上传时间:2023-01-19 格式:DOCX 页数:23 大小:218.64KB
返回 下载 相关 举报
操作系统原理课程设计读者_第1页
第1页 / 共23页
操作系统原理课程设计读者_第2页
第2页 / 共23页
操作系统原理课程设计读者_第3页
第3页 / 共23页
操作系统原理课程设计读者_第4页
第4页 / 共23页
操作系统原理课程设计读者_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《操作系统原理课程设计读者》由会员分享,可在线阅读,更多相关《操作系统原理课程设计读者(23页珍藏版)》请在金锄头文库上搜索。

1、#J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J*实践教学#J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J* #J*兰州理工大学计算机与通信学院2012 年秋季学期操作系统原理课程设计题 目:读者-写者问题的实现专业班级:姓 名:学 号: 指导教师: 成 绩:目录摘 要 21 设计思想 32 各模块的伪码算法 43. 函数关系调用图 64 程序测试结果 7设计总结 10参考文献 11致 谢 12摘要本设计

2、的读者写者问题,是指一些进程共享一个数据区。数据区可以使一个 文件、一块内存空间或者一组寄存器。Reader进程只能读数据区中的数据,而 writer 进程必须与其他进程互斥地访问共享对象的同步问题。读者写者问题可以这样的描述, 有一群写者和一群读者, 写者在写同一本 书, 读者也在读这本书, 多个读者可以同时读这本书。但是,只能有一个写者在 写书, 并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。 当读者提出请求时需要有一个互斥操作, 另外, 需要有一个信号量 S 来确定当 前是否可操作。本设计方案就是通过利用记录型信号量对读者写者问题的解决过程进行模 拟演示,形象地阐述

3、记录型信号量机制的工作原理。关键词:共享对象,互斥,同步,信号量1 设计思想本设计借助C语言实现进程同步和互斥的经典问题一读者写者问题,用高级 语言编写和调试一个进程同步程序,以加深对进程同步机制的理解。通过用 C 语言模拟进程同步实现,加深理解有关进程同步和互斥机制的概念及P、V操作 的应用。学生通过该题目的设计过程,掌握读者、写者问题的原理、软件开发方 法并提高解决实际问题的能力。在 Windows 环境下,创建一个包含 n 个线程的控制台进程。用这 n 个线每个 线程按相应测试数据文件的要求,进行读写操作。程来表示 n 个读者或写者。 请用信号量机制分别实现读者优先和写者优先的读者-写者

4、问题。将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读 者队列释放一个或多个读者,当写允许时,释放第一个写者操作。读者-写者的读写限制(包括读者优先和写者优先)1)写-写互斥,即不能有两个写者同时进行写操作;2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;3)读读允许,即可以有 2 个以上的读者同时读;4)读者优先附加条件:如果一个读者申请进行读操作,同时又有一个读操 作正在进行读操作,则该读者可以直接开始读操作;5)写者优先附加条件:如果一个读者申请进行读操作时已经有一个写者在 等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操 作。2 各模

5、块的伪码算法读者优先算法: 设置两个互斥信号量rwmutex 用于写者与其他读者/写者互斥的访问共享数据rmutex 用于读者互斥的访问读者计数器 readcountsemaphore rwmutex=l, rmutex=l;int readcount 二 0;reader i/读者进程 i=l,2,.doP(rmu tex);/读者互斥readcoun t+;/读者数加 1if (readcount = 1)P(rwmu tex);/读者写者互斥V(rm ut ex);P(rm ut ex);Readcount-;if (readcount 二二 0)V(rwmutex);V(rm ut e

6、x);while(1);writer j/写者进程 j 二 1,2,.doP(rwm ut ex); 写文件;V(rwm ut ex);while(1);写者优先算法:rwmutex用于写者与其他读者/写者互斥的访问共享数据rmutex 用于读者互斥的访问读者计数器readcountnrmutex 用于写者等待已进入读者退出,所有读者退出前互斥写操作 semaphore rwmutex= 1,rmutex= 1,nrmutex= 1;int readcount = 0;reader i/读者进程 i=1,2,.doP(rwmutex);P(rmutex);readcount+;if (read

7、count = 1) P(nrmutex); /有读者进入,互斥写操作V(rmutex);V(rwm ut ex);/及时释放读写互斥信号量,允许其它读、写进程申请资源 读数据;P(rmutex);readcount-;if (readcount = 0) V(nrmutex); /所有读者退出,允许写更新V(rmutex);while(1);writer j /写者进程 j = 1,2,.doP(rwmutex); / 互斥后续其它读者、写者P(nrmutex); /如有读者正在读,等待所有读者读完写更新;V(nrmutex); /允许后续新的第一个读者进入后互斥写操作V(rwmutex);

8、 /允许后续新读者及其它写者while(1);3. 函数关系调用图图 1 函数关系图4 程序测试结果测试数据文件包括 n 行测试数据 ,分别描述创建的 n 个线程是读者还 是写者,以及读写操作的开始时间和持续时间.每行测试数据包括四个字段,各 字段 间用空格分隔。第一字段为一个正整数 ,表示线程序号.第二字段表示相 应线程角色,R表示读者是,W表示写者。第三字段为一个正数,表示读写操 作的开 始时间。线程创建后, 延时相应时间 (单位为秒) 后发出对共享资源的 读写申请. 第四字段为一个正数,表示读写操作的持续时间。当线程读写申请 成功后,开始 对共享资源的读写操作,该操作持续相应时间后结束,

9、并释放共 享资源。在读者写者同时在队列中等待申请资时 ,读者优先调用资源.而且如果一 个 读者申请进行读操作时已有另一读者正在进行读操作 , 则该读者可直接开 始读操 作, 即读读允许。图 2 进程 1 、 2 的测试结果如图 2 所示,进程 1 是 W 操作, 在时间 3 时进入队列, 运行时间是 5, 即在 时间8时,进程1退出。在它进入时没有进程 占用资源,它既占用资源;知道 它释放资源,等候的进程有3,4,5;图 3 进程 3 、 5 的测试结果如图3所示,进程5是R操作,在时间4时进入队列,运行时间是3,进程 3是R操作,在时间5时进入队列,运行时间是2,在它们进入时,进程1占用 资

10、源, 它等待资源, 当进程 1 释放资源后, 由于读者优先, 进程 3,5 同时调运资 源,因此在时间11时,进程3退出,在时间12时,进程5退出;图4进程2、4、6的测试结果如图4所示,进程4是W操作,在时间5时进入队列,运行时间是5,在它 进入时进程1占用资源,它等待资源,当进程1释放资源后,由于读者优先,进程 3,5占用资源,它依然等待,直到进程 3,5 都结束,即进程 4在时间12时开始 调用资源;进程2是R操作,在时间16时进入队列,运行时间是5,在它进入 时进程4占用资源,它等待资源,当4释放时占用资源后,进程2开始运行;进 程6是R操作,在时间17时进入队列,运行时间是7,在它进

11、入时进程2占用资 源, 它等待进程 2 释放后最后调用资源。设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。此次操作系统课程设计,我的感慨颇多,的确,从选题到定稿,从理论 到实践,在整整两星期的日子里,我学到很多的东西;同时不仅巩固了以前所 学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计我懂得了理论与实际相结合的重要性,只有理论知识 是远远不够的,所以只有把所学的理论知识与实践相结合起来,从理论中得出 结论,才能真正的服务于社会,从而提高自己的实际动手能力和独立思考的能 力。在

12、设计的过程中遇到问题,可以说是困难重重,难免会遇到过各种各样的 问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解 得不够深刻,掌握得不够牢固。因此,在以后的学习中要多下苦功,加强基础 知识的学习,并且培养自己的动手实践能力。参考文献1. 汤子瀛,哲凤屏. 计算机操作系统,西安:电子科技大学学出版社,2002 年2. 王清,李光明. 计算机操作系统,北京:冶金工业出版社,2003 年 3 月3. 孙钟秀等. 操作系统教程. 北京:高等教育出版社,2008 年 4月4. 曾明. Linux 操作系统应用教程. 西安: 陕西科学技术出版社,2005 年5. 张丽芬,刘利雄. 操作

13、系统实验教程. 北京: 清华大学出版社,2006 年6. 孟静.操作系统教程原理和实例分析. 北京:高等教育出版社,2001 年7. 周长林. 计算机操作系统教程. 北京:高等教育出版社,2011 年 12 月8. 张尧学. 计算机操作系统教程.北京:清华大学出版社,2006 年 10 月9. 任满杰. 操作系统原理实用教程.北京:电子工业出版社,2006 年 1 月致谢这次课程设计培养了我耐心、缜密、全面地思考问题的能力,从而加快 了问题解决的速度、提高了个人的工作效率,以及锻炼了使问题在短时间内得 以解决的品质。我从“纸上谈兵”到可以自己动脑动手分析调试程序,收获不 少。首先要感谢学校给我

14、这次实践的机会,给了自己一个舞台。这不仅是对自 身的检验,而且增加了我编写代码的功力。还有多亏了老师们从理论到上机亲 自指导的辛苦教授,给予了我们最大帮助和全面指导。在这里,尤其感谢我的 指导老师朱红蕾老师,你不辞辛苦的给我们耐心指导。在这里,我衷心向你们 致谢!最后还要感谢热心的同学们,在我陷入误区的时候,是他们热心的帮助 使我摆脱困境。最后衷心感谢所有给予我帮助和指导的老师和同学,没有他们的帮助我的 程序也不会完成得这么顺利。源代码:#include #include #include #include #include #include #define MAX_PERSON 100#define READER 0 / 读者#define WRITER 1 / 写者#define END -1#define R READER #define W WRITERHANDLE m_hThread; int m_nType;int m_nStartTime; int m_nWorkTime;typedef struct _Person / 定义处理线程的句柄/ 进程类型(读写)/ 开始时间/ 运行时间int m_nID;/ 进程号Person;Person g_PersonsMAX_PERSON;/基本时间片数int g_NumPerson = 0; long g_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号