linux读者写着问题课程设计,操作系统课程设计(采用读写平等策略的读者写者问题)完整版 内含代码.doc...

操作系统课程设计(采用读写平等策略的读者写者问题)完整版 内含代码

淮北师范大学

课 程 设 计

采用读写平等策略的读者写者问题

学 号:

姓 名:

专 业:

指导教师:

日 期:

目录

第1部分 课设简介3

1.1 课程设计题目3

1.2 课程设计目的3

1.3 课程设计内容3

1.4 课程设计要求3

1.5 时间安排....................................... 4

第2部分 实验原理分析4

2.1问题描述4

2.2算法思想5

2.3主要功能模块流程图5

第3部分 主要的功能模块6

3.1数据结构6

3.2测试用例及运行结果7

第4部分 源代码10

第5部分 总结及参考文献22

5.1 总结22

5.2 参考文献23

第1部分 课设简介

1.1 课程设计题目

采用读写平等策略的读者写者问题

1.2 课程设计目的

操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。

1)2)培养学生结构化程序、模块化程序设计的方法和能力。

3)提高学生调试程序的技巧和软件设计的能力。

4)提高学生分析问题、解决问题以及综合利用C语言进行课程设计的能力。

1.3 课程设计内容

用高级语言编写和调试一个采用“读写平等”策略的“读者--

写者”问题的模拟程序。

1.4 课程设计要求

1)2) 读者与写者均有两个以上,可在程序运行期间进行动态增加读者与写者。

3) 可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化。

4) 要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。

5) 读写策略:读写互斥、写写互斥、读写平等(严格按照读

者与写者到达的顺序进入阅览室,有写着到达,则阻塞后续到达的读者;有读者到达,则阻塞后续到达的写者)。

1.5 时间安排

1)1 天)

2)7 天)

3)2 天)

第2部分 实验原理分析

2.1问题描述

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

1)任意多的读进程可以同时读这个文件;

2)一次只允许一个写进程往文件中写;

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

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

2.2算法思想

三个线性链表,分别为h1、h2、h3。h1为写入序列,h2为就绪序列,h3为执行序列。其中h1用来存放输入进去的读者和写者的信息,h2根据读入内存的时间将h1中的读者写者的信息进行排序,并将排完序的读者与写者信息存在h2中,把h2的内容调入到执行序列h3中,从而执行要求的内容。

2.3主要功能模块流程图

第3部分 主要的功能模块

3.1 数据结构

主要的数据结构及数据:

int Wmutex=1;//互斥读写的信号量

int readcount=0; //读者数目

struct process//进程结构体

{

int ID; //进程序号

char type; //进程类别(判断是读者还是写者)

int starttime; //进程开始时间

int needtime; //进程读写需要的时间

int runtime; //进程在内存中已运行的时间

struct process *next;

};

process *h1=NULL,*h2=NULL,*h3=NULL;//三个链表

函数成员:

void input()//输入信息函数

void main()//主函数

void choose()//选择函数

void ready(int i)//进入就绪队列函数

int wait(int &a)//等待队列函数

void reader()//读写平等下的读者信息函数

void writer()//读写平等下的写者信息函数

void add(int i)//动态增加函数

void print(int i)//输出函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值