77范文网 - 专业文章范例文档资料分享平台

操作系统读者写者问题(4)

来源:网络收集 时间:2020-03-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

第2章 实验内容

写互斥(相当于算法描述中的r_w_w);

互斥体h_mutex_read_count用来保护整数read_count,以保证多个读者对read_count的互斥访问;

互斥体h_mutex_write_count用来保护整数write_count,以保证多个写者对write_count的互斥访问,该互斥体只在写者优先算法中使用;

互斥体h_mutex_first_reader_wait和h_mutex_reader_wait只在写者优先算法中使用,当有写者在写文件时,提出读请求的第一个读者阻塞在h_mutex_first_reader_wait上,其余的读者阻塞在h_mutex_reader_wait上;互斥体h_mutex_wait只在无优先算法中使用,当文件被使用时,后继的读请求和写请求依次阻塞在h_mutex_wait上。

14

第3章 程序实现

第3章 程序实现

3.1 程序功能及界面设计

该程序采用简单的控制台应用程序界面,在主界面上显示程序的功能。该程序的功能如下:

1) 演示读者优先算法; 2) 演示写者优先算法; 3) 演示无优先算法; 4) 退出。

3.2 实现程序流程

3.2.1 读者优先算法实现

对于相继到达的一批读者,并不是每个读者都需要执行P(r_w_w)和V(r_w_w)。在这批读者中,只有最先到达的读者才需要执行P(r_w_w),与写者竞争对文件的访问权,若执行P(r_w_w)成功则获得了文件的访问权,其他的读者可直接访问文件;同理,只有最后退出临界区的读者需要执行V(r_w_w)来归还文件访问权。

为了记录正在读文件的一批读者的数量,需要设置一个整型变量read_count,每一个读者到达时都要将read_count加1,退出时都要将read_count减1。

由于只要有一个读者在读文件,便不允许写者写文件,所以,仅当read_count=0时,即尚无读者在读文件时,读者才需要执行P(r_w_w)操作。若P(r_w_w)操作成功,读者便可去读文件,相应地,read_count+1。同理,仅当在执行了read_count减1操作后其值为0时,才需要执行V(r_w_w)操作,以便让写者写文件。又因为read_count是一个可被多个读者访问的临界资源,所以应该为它设置一个互斥信号量h_mutex_read_count。每个读者在访问read_count

15

第3章 程序实现

之前执行P(h_mutex_read_count),之后执行V(h_mutex_read_count)。读优先操作结果截图如下图3-1:

图3-1 读优先操作截图

3.2.2 写者优先算法实现

为了实现写者优先算法,需要将写者和读者分开排队,并且第一个读者和其它读者也要分开排队。这样就需要三个队列,一个是写者排队的地方,另一个是第一个读者排队的地方,第三个是其它读者排队的地方。相应地需要设置三个信号量,r_w_w、first_reader_wait和reader_wait。当一个写者声明想写文件时,可以让新的读者中的第一个到first_reader_wait上排队等待;当有读者阻塞在first_reader_wait上时,让其它读者阻塞在reader_wait上;当有一个写者在写文件时,其它写者到r_w_w上排队。

只要有活跃的写者或者写者队列不为空,则阻塞新到达的读者。为了记录已经发出声明的写者数量,需要设置一个整数writ_count,以表示声明要写文件的写者数目。由于只要有一个写者到达,就不允许读者去读,因此仅当writ_count=0,表示无写者声明写时,写者才需要执行P(first_reader_wait)操作,若操作成功,写者便可以执行P(r_w_w)去竞争写文件权利。

其它写者不需要再向读者声明,可以直接执行P(r_w_w)去竞争写文件

16

第3章 程序实现

权利。同理仅当写者在执行writ_count减1操作后其值为0时,才需要执行V(first_reader_wait)操作,以便唤醒第一个被阻塞的读者去读文件。又因为writ_count是一个可被多个写者访问的临界资源,所以,应该为它设置一个互斥信号量writer_mutex。写优先操作结果截图如下图 3-2:

图3-2 写优先操作截图

3.2.3 无优先算法实现

不仅需要的信号量r_w_w和h_mutex_read_count之外,还需要设置一个信

号量wait供读者和写者排队。读者和写者都排在wait队列上。若有读者在读文件,则第一个写者阻塞在r_w_w上,其它的写者和读者阻塞在wait上;若有一个写者在写文件,则其它写者和读者都阻塞在wait上。无优先操作结果截图如下图3-3:

图3-3 无优先操作截图

17

第3章 程序实现

3.3 程序流程图

3.3.1 读者优先算法流程图

根据定义的函数名称和功能画读者优先算法的函数流程图如下图3-4所示:

图3-4 读者优先算法函数流程图

3.3.2 写者优先算法流程图

根据定义的函数名称和功能画写者优先算法的函数流程图如下图3-5所示:

18

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库操作系统读者写者问题(4)在线全文阅读。

操作系统读者写者问题(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/874779.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: