“读写平等”策略的“读者写者”问题实验报告.doc
《“读写平等”策略的“读者写者”问题实验报告.doc》由会员分享,可在线阅读,更多相关《“读写平等”策略的“读者写者”问题实验报告.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、淮北师范大学程序设计课程设计采用“读写平等”策略的“读者-写者”问题学 院 计算机科学与技术 专 业 计算机科学与技术(师范) 学 号 * 学 生 姓 名 * 指导教师姓名 * 2012年6月 16 日一、设计目的与内容课程设计的目的:操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决问题的机会。l 进一步巩固和复习操作系统的基础知识。l 培养学生结构化程序、模块化程序设计的方法和能力。l 提高学生调试程序的技巧和软件设计的能力。l 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。设计内容:用高级语
2、言编写和调试一个采用“读写平等”策略的“读者写者”问题的模拟程序。设计的要求:1. 读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。2. 读者与写者均有两个以上,可在程序运行期间进行动态增加读者与写者。3. 可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写时间的初始化。4. 要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。5. 读写策略:读写互斥、写写互斥、读写平等(严格按照读者与写者到达的顺序进入阅览室,有写着到达,则阻塞后续到达的读者;有读者到达,则阻塞后续到达的写者)。 有
3、一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间,甚至可以是一组处理器寄存器。有一些只读取这个数据区的进程(reader)和一些只往数据区中写数据的进程(writer)。以下假设共享数据区是文件。这些读者和写者对数据区的操作必须满足以下条件:读读允许;读写互斥;写写互斥。这些条件具体来说就是:(1)任意多的读进程可以同时读这个文件;(2)一次只允许一个写进程往文件中写;(3)如果一个写进程正在往文件中写,禁止任何读进程或写进程访问文件;(4)写进程执行写操作前,应让已有的写者或读者全部退出。这说明当有读者在读文件时不允许写者写文件。二、算法的基本思想 创建三个线性链表,
4、分别为head1、head2、head3。head1写入序列,head2为就绪序列,head3为执行序列。其中head1用来存放输入进去的读者和写者的信息,head2根据读入内存的时间将head1中的读者写者的信息进行排序,并将排完序的读者与写者信息存在head2中,把head2的内容调入到执行序列head3中,从而执行要求的内容。三、主要功能模块流程图开始Jiuxu(int i)typereader()rwriter ()wruntime+runtime=needtime离开head3head1=Null&head2=Null&head3=NullYNi+Y结束四、系统测试(列出对于给定的输
5、入所产生的输出结果。只写出自己所做功能测试结果)文件为文本文件。文件内容为:5(表示进程数)1 r 7 2(表示进程名,进程类型,进程开始时间,进程运行时间)2 w 2 3(表示进程名,进程类型,进程开始时间,进程运行时间)3 r 3 4(表示进程名,进程类型,进程开始时间,进程运行时间)4 r 5 3(表示进程名,进程类型,进程开始时间,进程运行时间)5 w 6 4(表示进程名,进程类型,进程开始时间,进程运行时间)程序运行实例如下:1选择2,运行界面如下:2选择3,运行界面如下:3.在执行过程中按下s可以暂停进程的执行。4在进程暂停的情况下,按下a可以增加进程。五、结论程序运行后,可以通过
6、手动输入进程和文件读取进程,并执行读者与写者在公平竞争下的同步进程问题,另外可以实现进程的可视化显示、暂停和动态增加最后退出。完成任务书的要求。六、源程序及系统文件使用说明#include #include #include #include windows.hint Wmutex=1;/互斥读写的信号量int readcount=0; /读者数目void input();void main();struct processint ID; /进程序号char type; /进程类别(判断是读者还是写者)int starttime; /进程开始时间int needtime; /进程读写需要的时间
7、int runtime; /进程在内存中已运行的时间struct process *next;process *head1=NULL,*head2=NULL,*head3=NULL;void choose()/选择 int a;process *p,*q;q=head1=(process *)malloc(sizeof(process);FILE *fp; scanf(%d,&a);switch(a)case 1: /手动输入 int i,j; printf(tt输入进程数:); fp=fopen(file.txt,w+);scanf(%d,&i); fprintf(fp,%dn,i);for
8、(j=1;i0;i-,j+)p=(process *)malloc(sizeof(process);q-next=p;printf(tt第%d个进程:n,j);printf(tt进程序号t读或写tt开始时间t执行时间ntt); scanf(%d %c %d %d,&p-ID,&p-type,&p-starttime,&p-needtime);fprintf(fp,%d %c %d %dn,p-ID,p-type,p-starttime,p-needtime);printf(n);p-runtime=0;q=q-next;p-next=NULL;fclose(fp);p=head1;head1=
9、head1-next;p-next=NULL;free(p);break;case 2: /文件读入if(fp=fopen(file.txt,r)=NULL)printf(文件打开失败!n); system(pause); system(cls); main();fscanf(fp,%d,&i); for(j=1;i0;i-,j+)p=(process *)malloc(sizeof(process);q-next=p;fscanf(fp,%d %c %d %d,&p-ID,&p-type,&p-starttime,&p-needtime); p-runtime=0;q=q-next;p-ne
10、xt=NULL;fclose(fp);p=head1;head1=head1-next;p-next=NULL;free(p); break; case 3: int k; if(fp=fopen(file.txt,r)=NULL)printf(文件打开失败!n); system(pause); system(cls); main(); printf(tt进程序号t读或写tt开始时间t执行时间n); fscanf(fp,%d,&i); k=0; for(j=0;i0;i-,j+) p=(process *)malloc(sizeof(process);q-next=p;fscanf(fp,%d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读写 平等 策略 读者 问题 实验 报告
限制150内