1 / 11
文档名称:

操作系统之进程(生产者---消费者)实验报告.doc

格式:doc   大小:68KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统之进程(生产者---消费者)实验报告.doc

上传人:63229029 2017/3/31 文件大小:68 KB

下载得到文件列表

操作系统之进程(生产者---消费者)实验报告.doc

文档介绍

文档介绍:操作系统实验报告——生产者和消费者问题姓名: 学号: 班级: 一、实验内容 1 、模拟操作系统中进程同步和互斥; 2 、实现生产者和消费者问题的算法实现; 二、实验目的 1 、熟悉临界资源、信号量及 PV 操作的定义与物理意义; 2 、了解进程通信的方法; 3 、掌握进程互斥与进程同步的相关知识; 4 、掌握用信号量机制解决进程之间的同步与互斥问题; 5 、实现生产者-消费者问题,深刻理解进程同步问题; 三、实验题目在 Windows 操作系统下用 C 语言实现经典同步问题: 生产者—消费者,具体要求如下: (1) 一个大小为 10 的缓冲区,初始状态为空。(2)2 个生产者,随机等待一段时间,往缓冲区中添加数据,若缓冲区已满,等待消费者取走数据之后再添加,重复 10 次。(3)2 个消费者,随机等待一段时间,从缓冲区中读取数据,若缓冲区为空,等待生产者添加数据之后再读取,重复 10 次。四、思想本实验的主要目的是模拟操作系统中进程同步和互斥。在系统进程并发执行异步推进的过程中, 由于资源共享和进程间合作而造成进程间相互制约。进程间的相互制约有两种不同的方式。(1) 间接制约。这是由于多个进程共享同一资源(如 CPU 、共享输入/ 输出设备)而引起的,即共享资源的多个进程因系统协调使用资源而相互制约。(2) 直接制约。只是由于进程合作中各个进程为完成同一任务而造成的, 即并发进程各自的执行结果互为对方的执行条件, 从而限制各个进程的执行速度。生产者和消费者是经典的进程同步问题, 在这个问题中, 生产者不断的向缓冲区中写入数据, 而消费者则从缓冲区中读取数据。生产者进程和消费者对缓冲区的操作是互斥, 即当前只能有一个进程对这个缓冲区进行操作, 生产者进入操作缓冲区之前, 先要看缓冲区是否已满, 如果缓冲区已满, 则它必须等待消费者进程将数据取出才能写入数据, 同样的, 消费者进程从缓冲区读取数据之前, 也要判断缓冲区是否为空, 如果为空, 则必须等待生产者进程写入数据才能读取数据。在本实验中, 进程之间要进行通信来操作同一缓冲区。一般来说, 进程间的通信根据通信内容可以划分为两种: 即控制信息的传送与大批量数据传送。有时, 也把进程间控制在本实验中, 进程之间要进行通信来操作同一缓冲区。一般来说, 进程间的通信根据通信内容可以划分为两种: 即控制信息的传送与大批量数据传送。有时, 也把进程间控制信息的交换称为低级通信, 而把进程间大批量数据的交换称为高级通信。目前,计算机系统中用得比较普遍的高级通信机制可分为 3大类:共享存储器系统、消息传递系统及管道通信系统。?共享存储器系统共享存储器系统为了传送大量数据, 在存储器中划出一块共享存储区,诸进程可通过对共享存储区进行读数据或写数据以实现通信。进程在通信之前, 向系统申请共享存储区中的一个分区, 并为它指定一个分区关键字。信息的交换称为低级通信,而把进程间大批量数据的交换称为高级通信。?消息传递系统在消息传递系统中, 进程间的数据交换以消息为单位, 在计算机网络中被称为报文。消息传递系统的实现方式又可以分为以下两种: (1) 直接通信方式发送进程可将消息直接发送给接收进程, 即将消息挂在接收进程的消息缓冲队列上,而接收进程可从自己的消息缓冲队列中取得消息。(2) 间接通信方式发送进程将消息发送到指定的信箱中, 而接收进程从信箱中取得消息。这种通信方式又称信箱通信方式, 被广泛地应用于计算机网络中。相应地,该消息传递系统被称为电子邮件系统。?管道通信系统向管道提供输入的发送进程, 以字符流方式将大量的数据送入管道, 而接收进程从管道中接收数据。由于发送进程和接收进程是利用管道进行通信的,故称为管道通信。为了协调发送和接收双方的通信, 管道通信机制必须提供以下 3 方面的协调功能。(1 )互斥当一个进程正在对 pipe 文件进行读或写操作时,另一个进程必须等待。(2 )同步当写进程把一定数量的数据写入 pipe 文件后,便阻塞等待,直到读进程取走数据后,再把写进程唤醒。(3 )确认对方是否存在只有确定对方已存在时, 才能进行管道通信, 否则会造成因对方不存在而无限制地等待。在这个问题当中, 我们采用信号量机制进行进程之间的通信,设置两个信号量,空的信号量和满的信号量。在 Windows 系统中, 一个或多个信号量构成一个信号量集合。使用信号量机制可以实现进程之间的同步和互斥, 允许并发进程一次对一组信号量进行相同或不同的操作。每个 P、V 操作不限于减 1 或加 1 ,而是可以加减任何整数。在进程终止时, 系统可根据需要自动消除所有被进程操作过的信号量的影响。 1 .缓冲区采用循环队列表示,利用头、尾指针来存放、读取数据, 以及判断队列是否为空。缓冲区中数组大小为 10; 2 .利用