操作系统课设: 实现读者写者(Reader-Writer Problem)问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:
课程设计
课程名称操作系统
学院计算机科学与技术学院
专业软件工程
班级
姓名
指导教师
2014——2015学年第1学期
1《操作系统原理》课程设计指导书
课程编号:
课程名称:操作系统/Operating System
周数/学分:1周/1学分
先修课程:高级语言程序设计、汇编语言、数据结构、计算机组成原理
适用专业:计算机科学与技术、软件工程
开课学院、系或教研室:计算机科学与技术学院
一、课程设计的目的
通过对操作系统内核实现代码的阅读、修改、设计,理解和掌握复杂的操作系统的工作原理。
二、课程设计的内容和要求
1.系统调用
学习在Linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核空间中实现对用户空间的读写。这个函数的功能是返回当前的系统时间。
实验条件要求:每人一台Linux主机且有超级用户权限。
2.内核定时器
通过研究内核的时间管理算法学习内核源代码。然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。
实验条件要求:每人一台Linux主机且有超级用户权限。
3.实现生产者消费者(Bounded – Buffer Problem)问题
通过研究Linux的线程机制和信号量实现生产者消费者(Bounded Buffer)问题的并发控制。
实验条件要求:每人一台与Linux主机联网的Windows主机,普通用户权限。
4.实现读者写者(Reader-Writer Problem)问题
通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并
发控制。
实验条件要求:每人一台与Linux主机联网的Windows主机,普通用户权限。
三、课程设计进度安排
四、课程设计说明书与图纸要求
应包含如下内容:
1.设计题目与要求
2.总的设计思想及系统平台、语言、工具等。
3.数据结构与模块说明(功能与流程图)
4.源程序
5.运行结果与运行情况
6.调试记录
7.自我评析和总结
五、课程设计评分标准
注:优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格。
六、课程设计参考资料
推荐教材:
《Operating System Concepts(Sixth Edition)(操作系统概念)影印版》,
主编:Abraham
Silberschatz
出版社:高等教育出版社
出版或修订时间:2003年10月
参考书:
《计算机操作系统教程(第三版)》主编:张尧学
出版社:清华大学出版社
出版或修订时间:2001年7月
《操作系统原理(第三版)》,主编:庞丽萍
出版社:华中科技大学出版社
出版或修订时间:2000年12月
执笔:杨铭熙
审阅:陈天煌
审定:徐东平
课程设计任务书
学生姓名:专业班级:软件工程
指导教师:刘军工作单位:计算机科学与技术学院
题目: 实现读者写者(Reader-Writer Problem)问题
实验条件要求:通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并发控制。每人一台与Linux主机联网的Windows主机,普通用户权限。
课程设计进度安排
2014年 12月 26日
目录
1 设计目的与要求 (1)
1.1 课程设计目的 (1)
1.2 课程设计要求 (1)
2 总的设计思想及系统平台、语言、工具等 (1)
2.1 设计思想 (1)
2.2 系统平台及使用语言 (2)
2.3 开发工具的选择 (2)
3 数据结构和模块说明 (2)
3.1 主函数 (2)
3.2 写者线程函数 (3)
3.3 读者线程函数 (3)
4 源程序 (5)
5 运行结果与运行情况 (13)
6 调试记录 (30)
7 自我评析和总结 (31)
8 参考文献 (32)
2设计目的与要求
2.1课程设计目的
通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并发控制。
2.2课程设计要求
1.每个读者/写者对该存储区进行操作后,即时显示该存储区的全部内容、当前指针位置和读者/写者线程的标识符;
2.读者应有3个以上,写者应有有两个以上;
3.多个读者/写者之间须共享对存储区进行操作的函数代码。
3总的设计思想及系统平台、语言、工具等
3.1设计思想
为实现reader与writer线程间在读或写时的互斥设置一个互斥信号量writer_mutex。另外,再设置一个整形变量reader_counter表示正在读的线程数目。由于只有一个reader线程在读,便不允许writer线程去写。因此,仅当reader_counter=0,表示尚无reader线程在读时,reader线程才需要执行wait(writer_mutex)操作。若wait(writer_mutex)操作成功,reader线程便可以去读,相应的,做reader_counter+1操作。同理,仅当reader线程在执行reader_counter 减1操作后其值为0时,才必须执行signal(writer_mutex)操作,以便让writer线程写。
reader_counter是一个可被多个reader线程访问的临界资源,因此,也应该为它设置一个互斥信号量reader_mutex。