用信号量机制实现的写者优先的算法如
- 格式:docx
- 大小:11.86 KB
- 文档页数:1
本科实验报告实验名称:操作系统原理实验(读者写者问题)课程名称:操作系统原理实验时间:2015.10.30 任课教师:王耀威实验地点:10#102实验教师:苏京霞实验类型: 原理验证□综合设计□自主创新学生姓名:孙嘉明学号/班级:1120121474/05611202 组号:学院:信息与电子学院同组搭档:专业:信息对抗技术成绩:实验二:读者写者问题一、实验目的1.通过编写和调试程序以加深对进程、线程管理方案的理解;2.熟悉Windows多线程程序设计方法;二、实验要求在Windows环境下,创建一个控制台进程,此进程包含n个线程。
用这n个线程来表示n个读者或写者。
每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。
用信号量机制分别实现读者优先和写者优先问题。
读者-写者问题的读写操作限制(包括读者优先和写者优先)1)写-写互斥:不能有两个写者同时进行写操作2)读-写互斥:不能同时有一个线程在读,而另一个线程在写。
3)读-读允许:可以有一个或多个读者在读。
读者优先的附加限制:如果读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。
运行结果显示要求:要求在每个线程创建、发出读写申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。
测试数据文件包括 n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。
每行测试数据包括四个字段,每个字段间用空格分隔。
第1个字段为正整数,表示线程的序号。
第2个字段表示线程的角色,R表示读者,W表示写者。
第3个字段为一个正数,表示读写开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。
第4个字段为一个正数,表示读写操作的延迟时间。
当线程读写申请成功后,开始对共享资源进行读写操作,该操作持续相应时间后结束,释放该资源。
下面是一个测试数据文件的例子(在记事本手工录入数据):1 R 3 52 W 4 53 R 5 24 R 6 55 W 5.1 3三、实验环境硬件设备:个人计算机。
附件1:学号:012081034课程设计进程同步模拟设计——读者和题目写者问题学院计算机科学与技术学院专业计算机科学与技术班级计算机科学与技术姓名指导教师2011 年 1 月19 日目录目录 (1)1 设计概述 (4)1.1问题描述: (4)1.1.1规则: (4)1.1.2读者和写者的相互关系: (4)1.2采用信号量机制 (4)1.3 C++语言程序模拟用信号量机制实现生产者和消费者问题 (5)2课程设计目的及功能 (5)2.1 设计目的 (5)2.2 设计功能: (5)3 需求分析,数据结构或模块说明(功能与框图) (5)3.1数据结构 (5)3.2模块说明 (6)3.3开发平台及源程序的主要部分 (6)3.3.1写操作的设计: (6)3.3.2读操作的设计: (7)3.3.3主函数的设计: (9)3.4 功能流程图 (12)4测试用例,运行结果与运行情况分析 (12)4.1测试用例 (12)4.2运行结果 (13)4.3运行情况分析 (14)5自我评价与总结 (15)6 参考文献 (16)课程设计任务书学生姓名:专业班级:计算机科学与技术指导教师:工作单位:计算机科学与技术学院题目: 进程同步模拟设计——读者和写者问题初始条件:1.预备内容:阅读操作系统的进程管理章节内容,对进程的同步和互斥,以及信号量机制度有深入的理解。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.模拟用信号量机制实现读者和写者问题。
2.设计报告内容应说明:⑴课程设计目的与功能;⑵需求分析,数据结构或模块说明(功能与框图);⑶源程序的主要部分;⑷测试用例,运行结果与运行情况分析;⑸自我评价与总结:i)你认为你完成的设计哪些地方做得比较好或比较出色;ii)什么地方做得不太好,以后如何改正;iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);iv)完成本题是否有其他的其他方法(如果有,简要说明该方法);v)对实验题的评价和改进意见,请你推荐设计题目。
目录摘要 (1)1.设计思想 (2)2.各模块的伪码算法 (3)3. 函数关系调用图 (5)4.程序测试结果 (6)设计总结 (9)参考文献 (10)致谢 (11)摘要本设计的读者写者问题,是指一些进程共享一个数据区。
数据区可以使一个文件、一块内存空间或者一组寄存器。
Reader进程只能读数据区中的数据,而writer进程必须与其他进程互斥地访问共享对象的同步问题。
读者写者问题可以这样的描述, 有一群写者和一群读者, 写者在写同一本书, 读者也在读这本书, 多个读者可以同时读这本书。
但是,只能有一个写者在写书, 并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。
当读者提出请求时需要有一个互斥操作, 另外, 需要有一个信号量S来确定当前是否可操作。
本设计方案就是通过利用记录型信号量对读者写者问题的解决过程进行模拟演示,形象地阐述记录型信号量机制的工作原理。
关键词:共享对象,互斥,同步,信号量1.设计思想本设计借助C语言实现进程同步和互斥的经典问题--读者写者问题,用高级语言编写和调试一个进程同步程序,以加深对进程同步机制的理解。
通过用C 语言模拟进程同步实现,加深理解有关进程同步和互斥机制的概念及P、V操作的应用。
学生通过该题目的设计过程,掌握读者、写者问题的原理、软件开发方法并提高解决实际问题的能力。
在 Windows环境下,创建一个包含n个线程的控制台进程。
用这n个线每个线程按相应测试数据文件的要求,进行读写操作。
程来表示 n 个读者或写者。
请用信号量机制分别实现读者优先和写者优先的读者-写者问题。
将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写允许时,释放第一个写者操作。
读者-写者的读写限制(包括读者优先和写者优先)1)写-写互斥,即不能有两个写者同时进行写操作;2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;3)读读允许,即可以有 2 个以上的读者同时读;4)读者优先附加条件:如果一个读者申请进行读操作,同时又有一个读操作正在进行读操作,则该读者可以直接开始读操作;5)写者优先附加条件:如果一个读者申请进行读操作时已经有一个写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。
《操作系统原理》课程设计任务书题目:读者-写者问题的实现学生姓名:李志旭学号:13740113 班级:_13级软件工程_题目类型:软件工程(R)指导教师:陈文娟、马生菊一、设计目的学生通过该题目的设计过程,掌握读者、写者问题的原理、软件开发方法并提高解决实际问题的能力。
二、设计任务编写程序实现读者优先和写者优先问题:读者-写者问题的读写操作限制(包括读者优先和写者优先)写-写互斥:不能有两个写者同时进行写操作读-写互斥:不能同时有一个线程在读,而另一个线程在写。
读-读允许:可以有一个或多个读者在读。
三、设计要求1.分析设计要求,给出解决方案(要说明设计实现所用的原理、采用的数据结构)。
2.设计合适的测试用例,对得到的运行结果要有分析。
3.设计中遇到的问题,设计的心得体会。
4.文档:课程设计打印文档每个学生一份,并装在统一的资料袋中,资料袋前面要贴有学校统一的资料袋封面。
四、提交的成果1. 课程设计说明书内容包括(1) 封面(学院统一印制);(2) 课程设计任务书;(3) 中文摘要150字;关键词3-5个;(4) 目录;(5) 正文;(设计思想;各模块的伪码算法;函数的调用关系图;测试结果等)(6) 设计总结;(7) 参考文献;(8) 致谢等。
注:每一部分是单独的一章,要另起一页写。
2. 排版要求(1) 所有一级标题为宋体三号加粗(即上面写的2~8部分,单独一行,居中)(2) 所有二级标题为宋体四号加粗(左对齐)(3) 所有三级标题为宋体小四加粗(左对齐)(4) 除标题外所有正文为宋体小四,行间距为固定值22磅,每个段落首行缩进2字符(5) 目录只显示3级标题,目录的最后一项是无序号的“参考文献资料”。
3. 其他要求(班长负责,务必按照以下方式建文件夹)(1) 以班级为单位刻录光盘一张,光盘以班级命名,例如:“10级计算机科学与技术1班”;(2) 光盘内每人一个文件夹,以学号姓名命名——如“10730101 陈映霞”,内容包括任务书、设计文档。
第二章进程管理一、选择题:1、下面过于程序的描述,正确的是(C)A. 程序执行的最终结果受到外界因素的影响,跟初始条件无关B. 程序执行的最终结果跟速度有关C. 程序是按前后次序相继地进行计算机操作序列集合,是一个静态的概念;D. 程序只能通过顺序执行2、程序的顺序执行有以下特点(B)A. 顺序性、封闭性、独立性B. 顺序性、封闭性、可再现性C. 顺序性、封闭性、随机性D. 顺序性、随机性、独立性3、现代操作系统的特点(D)A. 程序的并发执行;B. 系统所拥有的资源被共享;C. 用户随机地使用系统资源;D. 以上三者都是。
4、多道程序系统中的程序执行的特点为(A)A. 独立性、随机性、资源共享性;B. 顺序性、封闭性、可再现性;C. 顺序性、封闭性、随机性;D. 顺序性、随机性、独立性;5、PCB所包含的信息中,下列说法不正确的是(D)。
A. 描述信息B. 控制信息C. 资源信息D. CPU信息6、下面哪项不属于进程的基本状态:(C)A. 阻塞状态B. 就绪状态C. 挂起状态D. 执行状态7、在单CPU系统中,任一时刻处于执行状态的进程有几个(A)A.1 B.2 C.3 D.无法判断8、就绪状态分为内存就绪和外存就绪,这种方式的好处是(A)A. 明显提高内存的利用效率B. 降低系统开销C. 降低系统复杂性D. 降低系统参数和状态转换过程9、下面说法错误的是:(D)A.就绪状态进程得到除CPU以外其他资源,只要调度得到处理机,便可立即执行B.只有处于就绪状态的进程经调度选中之后才可以进入执行状态C.处于外存就绪状态的进程只有先成为内存就绪状态后,才可执行D.从一个状态到另一个状态的转换只要使用不同的控制过程就可以实现10、关于进程状态之间的转换原因,下列说法错误的是:(D)A.由系统唤醒,进程由阻塞态进入就绪态B.因为申请某资源忙或者I/O设备忙,进程由执行态进入阻塞态C.因时间片用完,进程由执行态进入就绪态D.进程经由一段时间的等待后,可以自动由就绪态到执行态11、()就是系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
2022年巢湖学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、若8个字(字长32位)组成的位示图管理内存,假定用户归还一个块号为100的内,存块,它对应位示图的位置为()。
假定字号、位号、块号均从1开始算起,而不是从0开始。
A.字号为3,位号为5B.字号为4,位号为4C.字号为3,位号为4D.字号为4,位号为52、如果文件采用直接存取方法,且文件大小不固定,则应采用()物理结构。
A.直接B.索引C.随机D.顺序3、为多道程序提供的共享资源不足时,可能会产生死锁。
但是,不当的()也可能产生死锁。
A.进程调度顺序B.进程的优先级C.时间片大小D.进程推进顺序4、下列选项中,会导致进程从执行态变为就绪态的事件是()。
A.执行P(wait)操作B.中请内存失败C.启动I/O设备D.被高优先级进程抢占5、若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是()。
I.若该文件的数据不在内存中,则该进程进入睡眠等待状态II.请求rcad系统调用会导致CPU从用户态切换到核心态III.read系统调用的参数应包含文件的名称A.仅I、IIB. 仅I、IIIC.仅II、IIID. I、II和III6、操作系统采用分页存储管理方式,要求()。
A.每个进程拥有一张页表,且进程的页表驻留在内存中,B.每个进程拥有一张页表,但只要执行进程的页表驻留在内存中C.所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中D.所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中7、适合多道程序运行的存储管理中,存储保护是为了()A.防止一个作业占用同个分区B.防止非法访问磁盘文件C.防止非法访问磁带文件D.防止各道作业相互干扰8、某时刻进程的资源使用情况见表。
此时的安全序列是()A.P1、P2、P3、P4B. P1、P3、P2、P4C. P1、P4、P3、P2D.不存在9、在下列选项中,()不属于操作系统提供给用户的可使用资源。
中国地质大学(武汉)2017年度第学期期末考试《操作系统原理》课程试卷答案班级 _______________ 学号 _____________ 姓名 ______________一、选择题(本大题共40分,每小题2分)1、在现代操作系统中引入了( D ),从而使并发和共享成为可能。
A.单道程序B. 磁盘C. 对象D.多道程序2、( B )操作系统允许在一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。
A.网络B.分布式C.分时D.实时3、从用户的观点看,操作系统是( A )。
A. 用户与计算机硬件之间的接口B.控制和管理计算机资源的软件C. 合理组织计算机工作流程的软件D.计算机资源的的管理者4、当CPU处于管态时,它可以执行的指令是(A )。
A. 计算机系统中的全部指令B. 仅限于非特权指令C. 仅限于访管指令D. 仅限于特权指令5、用户在程序中试图读取某文件的第100个逻辑块时,使用操作系统提供的( A )接口。
A. 系统调用B.图形用户接口C.原语D.键盘命令6、下列几种关于进程的叙述,( A )最不符合操作系统对进程的理解?A.进程是在多程序并行环境中的完整的程序。
B.进程可以由程序、数据和进程控制块描述。
C.线程是一种特殊的进程。
D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
7、当一个进程处于( B )状态时,称其为等待(或阻塞)状态。
A. 它正等待中央处理机B. 它正等待合作进程的一个消息C. 它正等待分给它一个时间片D. 它正等待进入内存8、一个进程释放一种资源将有可能导致一个或几个进程( D )。
A.由就绪变运行B.由运行变就绪C.由阻塞变运行D.由阻塞变就绪9、下面关于线程的叙述中,正确的是( C )。
A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持。
B.线程是资源的分配单位,进程是调度和分配的单位。
“读者-写者”算法的讨论和改进作者:宋锦华李伟来源:《中小企业管理与科技·上旬刊》2011年第05期摘要:读者与写者问题是操作系统中的经典进程同步问题之一,文章利用操作系统中的信号量及信号量上的P、V操作,按照教学的方法和思路对传统的读者-写者算法进行了探讨,并将算法加以改进,实现了写者优先功能,同时保证多个并发进程在执行过程中的正确性。
关键词:读者与写者操作系统信号量1 相关概念1.1 利用信号量解决进程间的制约关系多道程序设计环境下,系统中同时执行多个作业进程,这些进程同时共享和竞争系统中的资源,因此必然存在一定的制约关系。
进程间的这些制约关系可分为互斥与同步两种。
互斥即:一个进程对系统中的共享变量或临界资源进行操作时,为了保证它和系统中其它进程的正确执行,不允许其它进程同时对这些共享变量和临界资源进行操作。
同步指:一个进程运行到了某一点时,需要等待其它进程完成某种操作或发来信息,才能继续运行。
那么,如何来控制进程间的互斥和同步,使它们正确运行呢?利用信号量以及信号量上的P、V操作能够很好的解决进程间的互斥与同步关系,从而保证进程的正确执行。
对于互斥来说,假定设置信号量为S,那么,将S的初值设为1,在临界区之前安排P(S)操作,临界区之后安排V(S)操作即可。
对于同步来说,信号量S的初值设为0,在请求同步点安排P(S)操作,在准备同步条件点安排V(S)操作即可。
本文讨论的是操作系统中很经典的进程同步问题之一——读者写者问题。
1.2 传统的读者写者问题一批数据被多个并发进程共享使用。
其中一些进程只要求读数据,因此称为“读者”,一些进程会对数据进行修改,称为“写者”。
多个读者共同工作时,访问不会有问题,但是读者和写者共同访问或者写者和写者共同修改数据时,就有可能会出错,导致错误的访问结果。
因此,关于读者和写者的读写限制,可以分为这样三条:①写-写互斥,即不能有两个写者同时对数据进行写操作。
用信号量机制实现的写者优先的算法如:
Var Mut1,Mut2,Wmutex,Fmutex:Semaphore;
Rcount,Wcount:integer;
Mut1:=Mut2:=WMutex:=Fmutex:=1;
Rcount:=Wcount:=0;
//Fmutex --> 读者写者互斥
//WMutex --> 写者互斥
//Mut1 --> access to Rcount && 竞争Fmutex
//Mut2 --> access to Wcount
Writer:begin
Wait(Mut1);
Wcount:=Wcount+1;
If Wcount=1 then Wait(Fmutex); //如有读者,写者阻塞在此处
Signal(Mut1);
Wait(WMutex);
写操作;
Signal(Wmutex);
Wait(Mut1);
Wcount:=Wcount-1;
If Wcount=0 then Signal(Fmutex);
Signal(Mut1);
end
Reader:begin
Wait(Mut1); //读者需要先申请Mut1,如果有写者在等待Fmutex,则读者被阻塞,写者优先
Signal(Mut1); //立即释放Mut1,使写者可以随时申请到Mut1
Wait(Mut2);
Rcount:=Rcount+1;
If Rcount=1 then Wait(Fmutex); //第一个读者进入时,申请Fmutex;如有写者,第一个读者会阻塞在此处
Signal(Mut2);
读操作;
Wait(Mut2);
Rcount:=Rcount-1;
If Rcount=0 then Signal(Fmutex); //最后一个读者退出时,释放Fmutex Singal(Mut2);
end。