操作系统实验,生产者与消费者问题


实验四、生产者消费者问题(15分) • 一个大小为3的缓冲区,初始为空 • 2个生产者 – 随机等待一段时间,往缓冲区添加数据, – 若缓冲区已满,等待消费者取走数据后再添加 – 重复6次 • 3个消费者 – 随机等待一段时间,从缓冲区读取数据 – 若缓冲区为空,等待生产者添加数据后再读取 – 重复4次 说明: • 显示每次添加和读取数据的时间及缓冲区的状态 • 生产者和消费者用进程模拟,缓冲区用共享内存来实现
资源截图
代码片段和文件信息
/*消费者*/

#include “head.h“

main(int argcchar * argv[])
{
struct queue *buf*out;
int sem_id = semget(SEM_ALL_KEY 3 IPC_CREAT|0660);
int ij;
buf = getQueue();//打开共享主存
        out = buf;

for(i=0;i<4;i++)
{

p(sem_id SEM_FULL); //P(FULL) FULL开始值为0,表明开始的时候没有数据,无法取得,当producer释放一个数据时,这里开始有数据
p(sem_id SEM_MUTEX); //P(MUTEX)
                

                (buf + buf->buf) ->buf = 0; //取出产品后缓冲区置0
                 buf->buf--;   //产品数-1

//获取当前时间
struct timeval curtime;
gettimeofday(&curtimeNULL);

//输出信息
printf(“ No.%s consumer get product at %ld:%ld.
“    
                        argv[0]curtime.tv_seccurtime.tv_usec);
printf(“ Now the buffer is as follows: “);
for(j=1;j<=3;j++)
printf(“%4d“(out+j)->buf);
printf(“
“);

v(sem_id SEM_MUTEX); //V(MUTEX)
v(sem_id SEM_EMPTY); //V(EMPTY)

//随机等待一段时间
int ran=random()%5;
sleep(ran);
}
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     428032  2009-04-02 08:45  实验四20062918-柳丝-实验四.doc

     文件        970  2009-03-31 22:47  实验四LinuxPCconsumer.c

     文件       1121  2008-05-28 21:53  实验四LinuxPChead.h

     文件        790  2009-03-31 21:35  实验四LinuxPCpc.c

     文件        999  2009-03-31 22:49  实验四LinuxPCproducer.c

    ..A.SH.     16384  2009-04-02 08:29  实验四LinuxPCThumbs.db

     文件     148480  2009-04-01 16:01  实验四WindowsPCDebugvc60.idb

     文件      77824  2009-04-01 15:58  实验四WindowsPCDebugvc60.pdb

     文件     184369  2009-03-31 21:06  实验四WindowsPCDebugWindowsPC.exe

     文件     195504  2009-03-31 21:06  实验四WindowsPCDebugWindowsPC.ilk

     文件      18568  2009-04-01 16:01  实验四WindowsPCDebugWindowsPC.obj

     文件    3559256  2009-04-01 15:58  实验四WindowsPCDebugWindowsPC.pch

     文件     467968  2009-03-31 21:06  实验四WindowsPCDebugWindowsPC.pdb

     文件       5744  2009-03-31 21:06  实验四WindowsPCWindowsPC.cpp

     文件       4320  2009-03-31 21:37  实验四WindowsPCWindowsPC.dsp

     文件        541  2009-03-31 21:37  实验四WindowsPCWindowsPC.dsw

     文件      50176  2009-04-02 08:46  实验四WindowsPCWindowsPC.ncb

     文件      48640  2009-04-02 08:46  实验四WindowsPCWindowsPC.opt

     文件        737  2009-04-01 16:01  实验四WindowsPCWindowsPC.plg

     目录          0  2009-04-01 15:58  实验四WindowsPCDebug

     目录          0  2009-04-02 08:44  实验四LinuxPC

     目录          0  2009-04-02 08:46  实验四WindowsPC

     目录          0  2009-04-14 17:10  实验四

----------- ---------  ---------- -----  ----

              5210423                    23


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)