操作系统课设: 实现读者写者(Reader-Writer Problem)问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档