下载此文档

操作系统读者写者问题.doc


文档分类:IT计算机 | 页数:约31页 举报非法文档有奖
1/31
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/31 下载此文档
文档列表 文档介绍
操作系统
课程设计报告

目录
第1章实验目的和实验要求 1
实验目的 1
实验要求 1
课程设计题目 1
第2章实验内容 2
2
问题的描述 2
问题的解决方法 2
算法分析 3
读者优先算法分析 3
写者优先算法分析 8
无优先算法分析 11
函数设计 13
第3章程序实现 15
程序功能及界面设计 15
实现程序流程 15
读者优先算法实现 15
写者优先算法实现 16
无优先算法实现 17
程序流程图 18
读者优先算法流程图 18
写者优先算法流程图 18
无优先算法流程图 19
心得体会 21
参考文献 22
附录1 源代码 23
第1章实验目的和实验要求
实验目的
理解临界区和进程互斥的概念,掌握用信号量和PV操作实现进程互斥的方法。
实验要求
在windows或者linux环境下编写一个控制台应用程序,该程序运行时能创建N个线程,其中既有读者线程又有写者线程,它们按照事先设计好的测试数据进行读写操作。请用信号量和PV操作实现读者/写者问题。
课程设计题目
本课程设计共包括3个题目,内容覆盖了操作系统原理的关键知识点,包括进程调度、内存管理、进程同步、死锁、进程通讯、文件系统及嵌入式操作系统。
题目1:进程调度算法。模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点
题目2:动态异长分区的存储分配与回收算法。编写一个程序,模拟操作系统对动态异长分区的存储分配与回收算法。
题目3:读者/写者问题与进程同步。理解临界区和进程互斥的概念,掌握用信号量和PV操作实现进程互斥的方法。要求学生用信号量和PV操作实现读者/写者问题的读者优先算法、写者优先算法和无优先算法。
我们小组选择题目3,即读者/写者问题与进程同步。以下是该题目的实验报告。
第2章实验内容

问题的描述
有一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间,甚至可以是一组处理器寄存器。有一些只读取这个数据区的进程(reader)和一些只往数据区中写数据的进程(writer)。以下假设共享数据区是文件。这些读者和写者对数据区的操作必须满足以下条件:读—读允许;读—写互斥;写—写互斥。这些条件具体来说就是:
(1)任意多的读进程可以同时读这个文件;
(2)一次只允许一个写进程往文件中写;
(3)如果一个写进程正在往文件中写,禁止任何读进程或写进程访问文件;
(4)写进程执行写操作前,应让已有的写者或读者全部退出。这说明当有读者在读文件时不允许写者写文件。
问题的解决方法
(1)读者优先
除了上述四个规则外,还增加读者优先的规定,当有读者在读文件时,对随后到达的读者和写者,要首先满足读者,阻塞写者。这说明只要有一个读者活跃,那么随后而来的读者都将被允许访问文件,从而导致写者长时间等待,甚至有可能出现写者被饿死的情况。
(2)写者优先
除了上述四个规则外,还增加写者优先的规定,即当有读者和写者同时等待时,首先满足写者。当一个写者声明想写文件时,不允许新的读者再访问文件。
(3)无优先
除了上述四个规则外,不再规定读写的优先权,谁先等待谁就先使用文件。
算法分析
读者优先算法分析
对于相继到达的一批读者,并不是每个读者都需要执行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_c

操作系统读者写者问题 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数31
  • 收藏数0 收藏
  • 顶次数0
  • 上传人陈潇睡不醒
  • 文件大小330 KB
  • 时间2018-04-29