《UNIX程序设计》哈理工版本 信号量读者写者问题

更新时间:2023-10-28 21:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

哈尔滨理工大学

计算机科学与技术学院网络工程系

《UNIX程序设计》课程设计报告

题目: 利用信号量机制解决读者写者问题 班级: 学号: 姓名: 成绩:

2011年 月 日

《UNIX程序设计》课程设计报告

目 录

一 课程设计目的及意义……………………………………………1

二 课程设计内容 ……………………………………………………1

三 总体设计 …………………………………………………………1

四 详细设计 …………………………………………………………2

五 系统实现 …………………………………………………………3

六 总结 ………………………………………………………………5

七 源代码 ……………………………………………………………6

《UNIX程序设计》课程设计报告

一、 课程设计目的及意义

l.用信号量来实现读者写者问题。

2.理解和运用信号量、PV原语、进程间的同步互斥关系等基本知识。

3.通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并发控制。

二、 课程设计内容

在windows或者linux环境下编写一个控制台应用程序,本次课程设计在操作系统:Linux下,使用的编程语言为C语言。该程序运行时能创建N个线程,其中既有读者线程又有写者线程,它们按照事先设计好的测试数据进行读写操作。用信号量和PV操作实现读者/写者问题。

三、 总体设计

读者/写者问题的描述如下:

有一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间,甚至可以是一组处理器寄存器。有一些只读取这个数据区的进程(reader)和一些只往数据区中写数据的进程(writer)。以下假设共享数据区是文件。这些读者和写者对数据区的操作必须满足以下条件:读—读允许;读—写互斥;写—写互斥。这些条件具体来说就是:

1

《UNIX程序设计设计》课程报告

(1)任意多的读进程可以同时读这个文件; (2)一次只允许一个写进程往文件中写;

(3)如果一个写进程正在往文件中写,禁止任何读进程或写进程访问文件;

(4)写进程执行写操作前,应让已有的写者或读者全部退出。这说明当有读者在读文件时不允许写者写文件。

四、 详细设计

读者-写者的读写限制

1)写-写互斥,即不能有两个写者同时进行写操作

2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写

3)读读允许,即可以有2个以上的读者同时读

将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写允许时,释放第一个写者操作。读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:

《UNIX程序设计设计》课程报告

(1)任意多的读进程可以同时读这个文件; (2)一次只允许一个写进程往文件中写;

(3)如果一个写进程正在往文件中写,禁止任何读进程或写进程访问文件;

(4)写进程执行写操作前,应让已有的写者或读者全部退出。这说明当有读者在读文件时不允许写者写文件。

程序由二部分组成:

1. 读者模块:包括系统调用接口,读者活动描述主程序。系统接口主要功能是读取内容并且使用共享锁

2. 写者模块:包括系统调用接口,写者活动描述主程序,写入内容并且使用互斥锁。

读者-写者活动程序根据临界资源的共享,互斥原则编制。 初始化系统环境 建立信号量

启动信号量的PV原语 读取或写入数据 提示当前读取或写入情况

五、 系统实现

1.多个进程同时读取

本文来源:https://www.bwwdw.com/article/ki42.html

Top