- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
读写者问题
山东科技大学学生课程设计
设计一 读者写者问题
实习环境:系统为Windows XP + VC 6.0
一、实验目的:
1、加深对进程概念的理解,明确进程和程序的区别,进一步认识并发执行的实质;
2、理解和运用信号量、PV原语、进程间的同步互斥关系等基本知识。
二、设计要求
在Windows?XP下创建一个控制台进程,该进程应包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。
读者-写者问题的操作限制(包括读者优先和写者优先):
1)写-写互斥,即不能有两个写者同时进行写操作。
2)读-写互斥,即不能同时有一个线程在读,而另一个线程在写。
3)读-读互斥,即可以有一个或多个读者在读。
读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。
写者优先的附加限制:如果一个读者申请进行读操作时已有另一个写者在等待访问共享资源,则该读者必须等到没有写者出于等待状态后才能开始读操作。
测试文件格式说明,下面是一个测试数据文件的例子:
1 R 3 52 W 4 53 R 5 24 R 6 55 W 5.1 36 R 15 47 R 15 4
三、设计说明
1、读者优先
指除非有写者在写文件,否则读者不需要等待。所以可以用一个整形变量readnum记录当前的读者数目,用于确定是否需要唤醒正在等待的写者进程(当readnum==读者人数时,表明所有的读者读完,需要唤醒写者等待队列中的第一个写者)。每一个读者开始读文件时,必须修改readnum变量。因此需要一个互斥对象rnum[]来实现对全局变量readnum修改时的互斥。
另外,为了实现写写互斥,需要增加一个临界区对象wstate。当写者发出写请求时,必须申请临界区对象的所有权。通过这种方法,也可以实现读写互斥,当readnum=2时(即第一个读者到来时),读者进程也必须申请临界区对象的所有权。
当读者拥有临界区的所有权时,写者阻塞在临界区对象wstate上。当写者拥有临界区的所有权时,第一个读者判断完“readnum=2”后阻塞在write上,其余的读者由于等待对readnum的判断,阻塞在rnum[]上。
也可以将所有读者和所有写者分别存于一个读者等待队列和一个写者等待队列中,每当读允许时,就从读者队列中释放一个或多个读者线程进行读操作;每当写允许时,就从写者队列中释放一个写者进行写操作。
2、写者优先
写者优先和读者优先相似,可以根据读者优先来改写。
四、?运行结果:
(1)读者优先
(2)写者优先
五、结果分析:
Writer thread 2 sents the write require.
当写者2发出申请时,有读者1在读文件,所以写者2阻塞。
Reader thread 3 sents the reading require.
Reader thread 3 begins to read file.
读者3发出申请后,立刻得到满足。
读者6和读者7发送请求时已没有读者线程,所以他们被安排在写者线程完成写操作后读文件。
六、心得与体会:
本次实验是关于操作系统中运用信号量实现进程间的互斥以及同步的,不让共享资源同时修改,用信号量来判断一个进程是否阻塞及何时唤醒。它与以前的课程设计明显的区别是只要求程序结果及实现什么样的功能,同样的课题,能实现的功能越多,应该能够说明程序员在编程的灵活性。当然源代码要少,这是编程人员应该具备的素养。
设计二 内存管理
一、设计目的
1、内存管理时计算机操作的一大功能,任何作业的运行都需要内存。通过实验的练习,理解内存的分配及回收。
2、熟悉VC的使用,培养和提高学生的分析问题的能力。
二、设计要求
1、可利用先来先服务、短作业优先、响应比高者优先、多级反馈队列模型间片轮转法等来实现处理机的调度。
2、根据单处理机,多任务的特性做好软件实现的分析要求。
3、要求在系统安全的前提下,兼顾各个进程的公平。
4、可根据问题的实际要求,可选择进程的数量。
三、设计说明
Windows 进程的虚拟地址空间中也有三种状态的页面:空闲页面、保留页面和提交页面。
空闲(Free)页面:空闲页面是指那些可以保留或提交的可用页面。
保留(Reserved)页面:保留页面是逻辑页面已分配但没有分配物理存储的页面。设置这种状态的效果是可以保留一部分虚拟地址,这样,如果不预先释放这些地址,就不能被其他应用程序(如 Malloc,LocalAlloc 等)的操作所使用。试图读或写空闲页面或保
留页面将导致页面出错异常。保留页面可被释放或提交。
提交(Committed)页面:提交页面是物理存储(在
文档评论(0)