学 号:
课 程 设 计
题 目 进程同步模拟设计——读者和写者问题 学 院 计算机科学与技术学院 专 业 班 级 姓 名 指导教师
、 、 、 吴利军
2013 年 01 月 17 日
课程设计任务书
学生姓名:
指导教师: 吴利军 工作单位: 计算机科学与技术学院
题 目: 进程同步模拟设计——读者和写者问题 初始条件:
1.预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明
书撰写等具体要求)
1.模拟用信号量机制实现读者和写者问题。 2.设计报告内容应说明:
⑴ 需求分析;
⑵ 功能设计(数据结构及模块说明); ⑶ 开发平台及源程序的主要部分;
⑷ 测试用例,运行结果与运行情况分析; ⑸ 自我评价与总结:
i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他方法(如果有,简要说明该方法);
时间安排:
设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,一律按0分记)
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
1 需求分析
所谓读者写者问题,是指保证一个 writer 进程必须与其他进程互斥地访问
共享资源的同步问题.读者写者问题可以这样的描述,有一群写者和一群读者, 写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是只能有一个写者在写书,并且读者优先,也就是说,读者和写者同时提出请求时,读者优先.当读者提出请求时需要有一个互斥操作, 另外需要有一个信号量 mutex来当前是否可操作.信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者问题则是这一机制的一个经典范例. 与记录型信号量解决读者—写者问题不同,信号量机制它增加了一个限制,即最多允许n个读者同时读.为此引入了一个信号量Rcount,并赋予初值为 0,通过执行Rcount++操作,来控制读者的数目,每当有一个读者进入时,就要执行Rcount++操作,使 Rcount 的值加1.读者离开时Rcount--;当且仅当Rcount==0时,V(Wmutex),才能进行写操作。对利用信号量来解决读者—写者问题的描述如下:
Wmutex表示读写的互斥信号量,初值:Wmutex =1;
公共变量Rcount表示“正在读”的进程数,初值:Rcount =0; Rmutex:表示对Rcount的互斥操作,初值:Rmutex=1。 main() {
int Wmutex=1; int Rmutex=1; int Rcount=0; cobegin read 1(); read 2(); read 3(); ...... write 1();
write2 (); write3 (); ...... coend } readn() {
P(Rmutex); Rcount++;
if (Rcount==1) P (Wmutex); V(Rmutex); 读 P(Rmutex); Rcount--;
if (Rcount==0)V(Wmutex); V(Rmutex); } writen() {
P(Wmutex); 写
V(Wmutex); }
22.1 设计目的
功能设计
l. 用信号量来实现读者写者问题.
2 .理解和运用信号量,PV 原语,进程间的同步互斥关系等基本知识.
2.2设计内容
相关推荐: