课程设计说明书
设计题目: 操作系统课程设计
专业: 数学与应用数学班级: 08级
学号: 200801050735 姓名: 郑帅
山东科技大学
2011 年 07 月 08 日
课程设计任务书
学院信息科学与工程专业数学与应用数学班级 08级姓名郑帅
一、课程设计题目: 操作系统课程设计
二、课程设计主要参考资料
(1)Abraham Silberschatz & Peter Baer Galvin & Greg Gagne. Operating System Concepts(第七版影印版). 高等教育出版社. .
(2)陈向群,.
(3)
三、课程设计应解决的主要问题:
(1) 读者——写者问题
(2) 内存管理
(3) 软盘I/0
(4)
四、课程设计相关附件(如:图纸、软件等):
(1) 程序源代码
(2)
五、任务发出日期: 2011-05-10 课程设计完成日期: 2011-07-08
指导教师签字: 系主任签字:
指导教师对课程设计的评语
成绩:
指导教师签字:
年月日
设计1 读者——写者问题
一、设计目的
1、在Windows 环境下,创建一个控制台进程,此进程包括n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。
2、用信号量机制分别实现读者优先和写者优先的的读者-写者问题。
3、理解并能够灵活使用同步互斥机制和进程间通信机制。
二、设计要求
在Windows 2000/XP环境下,使用多线程和信号量机制实现经典的读者写者问题,每个线程代表一个读者或一个写者。
每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写者问题。
读者-写者问题的读写操作限制:
(1)写-写互斥,即不能有两个写者同时进行写操作
(2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写
(3)读-读允许,即可以有二个以上的读者同时读
读者优先的附加限制:如果一个读者申请进行读操作时已有另一读者正在进行读操作,则该读者可直接开始读操作。
写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。
运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确信所有处理都遵守相应的读写操作限制。
三、设计说明
1概要设计
1)读者优先:
读者优先指的是除非有写者在写文件,否则读者不需要等待。所以可以用一个整数变量ReadCount记录当前的读者数目,用于确定是否需要释放正在等待的写者进程当ReadCount=0时,表明所有的读者读完,需要释放写者等待队列中的一个写者。每当一个读者开始读文件时,必须修改ReadCount变量。因此需要一个互斥对象rmutex来实现对全局变量ReadCount修改时的互斥。
2)写者优先:
写者优先和读者优先有相同之处,不同的地方在:一旦有一个写者到来时,应该尽快让写者进行写,如果有一个写者在等待,则新到的读者操作不能读操作,为此添加一个整型变量writecount,记录写者的数目,当writecount=0时才可以释放读者进行读操作! 为了实现对全局变量writecount的互斥访问,设置了一个互斥对象Mutex3。为了实现写者优先,设置一个临界区对象read,
当有写者在写或等待时,读者必须阻塞在临界区对象read上。读者除了要一个全局变量readcount实现操作上的互斥外,还需要一个互斥对象对阻塞在read这一个过程实现互斥,这两个互斥对象分别为mutex1和mutex2。
2 程序结构
3 详细代码
#include ""
#include <>
#include <>
#include <>
#include <>
#include <>
#include <>
#define READER 'R' //读者
#define WRITER 'w' //写者
#define INTE_PER_SEC 1000 //每秒时钟中断数目
#define MAX_THREAD_NUM 64 //最大线程数目
#define MAX_FILE_NUM 32 //最大数据文件数目
#define MAX_STR_LEN 32 //字符串长度
int rea
郑帅实验报告 来自淘豆网m.daumloan.com转载请标明出处.