操作系统之进程生产者---消费者实验报告_第1页
操作系统之进程生产者---消费者实验报告_第2页
操作系统之进程生产者---消费者实验报告_第3页
操作系统之进程生产者---消费者实验报告_第4页
操作系统之进程生产者---消费者实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.操作系统实验报告生产者和消费者问题: *: 班级:一、实验内容 1、模拟操作系统中进程同步和互斥; 2、实现生产者和消费者问题的算法实现;二、实验目的1、熟悉临界资源、信号量及PV操作的定义与物理意义;2、了解进程通信的方法;3、掌握进程互斥与进程同步的相关知识;4、掌握用信号量机制解决进程之间的同步与互斥问题;5、实现生产者消费者问题,深刻理解进程同步问题;三、实验题目 在Windows操作系统下用C语言实现经典同步问题:生产者消费者,具体要求如下: (1)一个大小为10的缓冲区,初始状态为空。 (2)2个生产者,随机等待一段时间,往缓冲区中添加数据,假设缓冲区已满,等待消费者取走

2、数据之后再添加,重复10次。 (3)2个消费者,随机等待一段时间,从缓冲区中读取数据,假设缓冲区为空,等待生产者添加数据之后再读取,重复10次。四、思想 本实验的主要目的是模拟操作系统中进程同步和互斥。在系统进程并发执行异步推进的过程中,由于资源共享和进程间合作而造成进程间相互制约。进程间的相互制约有两种不同的方式。 1间接制约。这是由于多个进程共享同一资源如CPU、共享输入/输出设备而引起的,即共享资源的多个进程因系统协调使用资源而相互制约。 2直接制约。只是由于进程合作中各个进程为完成同一任务而造成的,即并发进程各自的执行结果互为对方的执行条件,从而限制各个进程的执行速度。 生产者和消费者

3、是经典的进程同步问题,在这个问题中,生产者不断的向缓冲区中写入数据,而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥,即当前只能有一个进程对这个缓冲区进展操作,生产者进入操作缓冲区之前,先要看缓冲区是否已满,如果缓冲区已满,则它必须等待消费者进程将数据取出才能写入数据,同样的,消费者进程从缓冲区读取数据之前,也要判断缓冲区是否为空,如果为空,则必须等待生产者进程写入数据才能读取数据。 在本实验中,进程之间要进展通信来操作同一缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制在本实验中,进程之间要进展通信来操作同一

4、缓冲区。一般来说,进程间的通信根据通信内容可以划分为两种:即控制信息的传送与大批量数据传送。有时,也把进程间控制信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。 目前,计算机系统中用得比拟普遍的高级通信机制可分为3大类:共享存储器系统、消息传递系统及管道通信系统。共享存储器系统 共享存储器系统为了传送大量数据,在存储器中划出一块共享存储区,诸进程可通过对共享存储区进展读数据或写数据以实现通信。进程在通信之前,向系统申请共享存储区中的一个分区,并为它指定一个分区关键字。 信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。消息传递系统 在消息传递系统中,进程间的数据交

5、换以消息为单位,在计算机网络中被称为报文。消息传递系统的实现方式又可以分为以下两种:(1)直接通信方式 发送进程可将消息直接发送给接收进程,即将消息挂在接收进程的消息缓冲队列上,而接收进程可从自己的消息缓冲队列中取得消息。(2)间接通信方式 发送进程将消息发送到指定的信箱中,而接收进程从信箱中取得消息。这种通信方式又称信箱通信方式,被广泛地应用于计算机网络中。相应地,该消息传递系统被称为电子系统。管道通信系统 向管道提供输入的发送进程,以字符流方式将大量的数据送入管道,而接收进程从管道中接收数据。由于发送进程和接收进程是利用管道进展通信的,故称为管道通信。 为了协调发送和接收双方的通信,管道通

6、信机制必须提供以下3方面的协调功能。1互斥 当一个进程正在对pipe文件进展读或写操作时,另一个进程必须等待。2同步 当写进程把一定数量的数据写入pipe文件后,便阻塞等待,直到读进程取走数据后,再把写进程唤醒。3确认对方是否存在 只有确定对方已存在时,才能进展管道通信,否则会造成因对方不存在而无限制地等待。在这个问题当中,我们采用信号量机制进展进程之间的通信,设置两个信号量,空的信号量和满的信号量。在Windows系统中,一个或多个信号量构成一个信号量集合。使用信号量机制可以实现进程之间的同步和互斥,允许并发进程一次对一组信号量进展一样或不同的操作。每个P、V操作不限于减1或加1,而是可以加

7、减任何整数。在进程终止时,系统可根据需要自动消除所有被进程操作过的信号量的影响 。1缓冲区采用循环队列表示,利用头、尾指针来存放、读取数据,以及判断队列是否为空。缓冲区中数组大小为10;2利用随机函数rand()得到AZ的一个随机字符,作为生产者每次生产的数据,存放到缓冲区中;3. 使用shmget()系统调用实现共享主存段的创立, shmget()返回共享内存区的ID。对于已经申请到的共享段,进程需把它附加到自己的虚拟空间中才能对其进展读写。4.信号量的建立采用semget()函数,同时建立信号量的数量。在信号量建立后,调用semctl()对信号量进展初始化,例如本实习中,可以建立两个信号量

8、SEM_EMPTY、SEM_FULL,初始化时设置SEM_EMPTY为10,SEM_FULL为0。使用操 作信号的函数semop()做排除式操作,使用这个函数防止对共享内存的同时操作。对共享内存操作完毕后采用shmctl()函数撤销共享内存段。5.使用循环,创立2个生产者以及2个消费者,采用函数fork()创立一个新的进程。6一个进程的一次操作完成后,采用函数fflush()刷新缓冲区。7程序最后使用semctl()函数释放内存。模拟程序的程序流程图如下所示:1.主程序流程图:2.生产者进程流程图3.消费者进程流程图4.P操作流程图5.V操作流程图实现代码为:/ e*et5.cpp#inclu

9、de stdaf*.h#include #include #define mSIZE 3#define pSIZE 20static int memerymSIZE = 0;static int processpSIZE = 0;/static int processpSIZE = 2,3,2,1,5,2,4,5,3,2,5,2;/static int processpSIZE = 7,10,1,2,10,3,10,4,2,3,10,3,2,1,2,10,1,7,10,1;void build(); void LRU(); int main(intargc, char *argv)printf

10、(Random sequence is as follows:n);build();printf(nInvoking LRU Algorithn: n);LRU();return 0;void build()int i = 0;for(i=0; ipSIZE; i+) processi = (int)(10.0*rand()/(RAND_MA*);printf(%d ,processi); printf(n);void LRU()int flagmSIZE = 0; int i = 0, j = 0;int m = -1, n = -1;int ma* = -1,ma*flag = 0; in

11、t count = 0;for(i = 0; ipSIZE; i+) /Find the first free Physical Blockfor(j=0; jmSIZE; j+) if(memeryj = 0) m = j;break; /Find if there are same processesfor(j = 0; j mSIZE; j+) if(memeryj = processi) n = j; /Find free PBfor(j = 0; j ma*flag) ma*flag = flagj;ma* = j; if(n = -1) / Find no same process

12、 if(m != -1) / find free PB memerym = processi;flagm = 0;for(j = 0;j = m; j+) flagj+; m = -1; else /NO find free PB memeryma* = processi;flagma* = 0;for(j = 0;j mSIZE; j+) flagj+; ma* = -1; ma*flag = 0;count+; else / Find same process memeryn = processi;flagn = 0;if(m != -1) /find free PB flagm = 0; for(j = 0;j mSIZE; j+) flagj+;ma* = -1; ma*flag = 0; n = -1; for(j = 0 ;j mSIZE; j+)printf(%d ,memeryj);printf(n);printf(nThe times of page conversion is: %dn,count);六、实验总结及思考1、本次实验是关于生产者与消费者之间互斥和同步的问题。问题的是指是P、V操作,实验设一个共享缓冲区,生产者和消费者互斥的使用,当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论