版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学信息与软件学院实验报告(实验)课程名称计算机操作系统学生姓名_康彪_学牛学号 20132202020222013220202022电子科技大学教务处制表1 1实验名称:生产者/ /消费者问题的实现2 2、实验学时:2 23、实验内容和目的:实验目的:通过本实验掌握进程间的同步和互斥机制的使用。实验内容:1、 有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为 使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区 的缓冲池:生产者进程从文件中读取一个数据,并将它存放到一个缓冲区中; 消 费者进程从一个缓冲区中取走数据,并输出此数据。生产者和消费者之间
2、必须保 持同步原则:不允许消费者进程到一个空缓冲区去取产品; 也不允许生产者进程 向一个已装满产品且尚未被取走的缓冲区中投放产品。2、 创建3进程(或者线程)作为生产者,4个进程(或者线程)作为消费者。 创建一个文件作为数据源,文件中事先写入一些内容作为数据。3、 生产者和消费者进程(或者线程)都具有相同的优先级。4、实验原理:利用进程间共享的信号量、互斥锁等控制线程的同步。相关函数说明:信号量sem_tsem_init信号量初始化)、sem_wait (信号量值减一)、sem_post (信号量值加一)互斥量(线 程)pthread_mutex_tpthread_mutex_init (互斥
3、量初始化) pthread_mutex_lock (互斥量加锁) pthread_mutex_uniock (互斥量解锁)线程和进程pthread_t (线程) pid_t (进程)pthread_create (创建线程)fork (创建进程)pthread_join (等待线程结束)waitpid (停止目前进程的执行,直到有信号来到或 子进程结束)5、实验器材(设备、元器件)(1) 学生每人一台PC,安装WindowsXPQOOO操作系统。(2) 局域网络环境。(3) 个人PC安装VMware虚拟机和Ubuntu系统。6、实验步骤:1.算法思想生产者线程生产物品,然后将物品放置在一个空缓
4、冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消 费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直 到新的物品被生产出来。2.流程图3.程序代码#i nclude #i nclude #in elude vfstream.h#include #in elude vconi o.h/声明所需变量int in=0;int out=0;HANDLE h_Thread20; /线程数组HANDLE empty_Sem aphore; /表示空缓冲区的信号量HAN
5、DLE full_Sem aphore; /表示空缓冲区的信号量HANDLE mutex;struct dataint ID;/ 序号char type;/类型,是生产者还是消费者,p or cdouble delay;/线程延迟的时间,对应生产者生产产品的时间或消费者消费产 品的时间;data ThreadInfo20; / 线程信息数组int length; /线程信息数组中实际的线程个数void Produce(void *p);/ 生产者进程void Consume(void *p);/消费者进程void in put(void);int main(v oid)in put();/初始
6、化临界区对象/In itializeCriticalSectio n(& PC_Critical);empty_Semaphore=CreateSem aphore(NULL,10,10,NULL);full_Sem aphore=CreateSem aphore(NULL,0,10,NULL);mutex = :CreateMutex(NULL,FALSE,NULL);coutvv下面生产者和消费者开始工作!ID;my_delay=(data*)(p)-delay;/开始请求生产WaitForS in gleObject(empty_Semaphore,-1);:WaitForSi ngle
7、Object(mutex,-1);/En terCriticalSectio n(&PC_Critical);coutvv生产者my_id发出生产请求。e ndl;coute ndl;cout生产者my_id生产e ndl;in=(i n+1);Sleep(my_delay*10);cout生产者my_id完成了生产。ID;my_delay=(data*)(p)-delay;/开始请求消费WaitForSi ngleObject(full_Sem aphore,-1);:WaitForSi ngleObject(mutex,-1);En terCriticalSectio n(&PC_Crit
8、ical);coutvv消费者my_id发出消费请求。e ndl;coute ndl;cout消费者my_id消费e ndl;out=(out+1);Sleep(my_delay*10);cout消费者my_id完成了消费。e ndle ndl;/LeaveCriticalSectio n(&PC_Critical)ReleaseSemaphore(empty_Semaphore,1,NULL);:ReleaseMutex(mutex)/*/输入进程信息的函数/*void in put(void)/定义局部变量 int id;char ch; double time; int k=0;cout
9、*请输入线程信息:endl;coutvv* 线程 ID; vvendl;coutvv* 线程的类型(生产者线程,还是消费者线程,p代表生产者,c 代表消费者);vvendl;coutvv*线程延迟时间。e ndl;coutvv* 线程ID为0时结束线程信息的输入!!vvendlvvendl;while(id!=0)coutplease in put a thread ID. id;ThreadI nfok.ID=id;if(id=0) break;coutplease in put a thread type. ch;Thread In fok.type=ch;coutplease in pu
10、t a thread delay time: time;ThreadI nfok.delay=time;k+;len gth=k;coutvve ndlvv您输入的线程信息为:e ndl;for(i nt j=0;jcoutthread ThreadI nfojDv ThreadI nfoj.typeThreadI nfoj.delaye ndl;7 7、实验及结果分析:能够正确模拟生产者和消费者模型,对缓冲区进行读写操作生产者消费者问题1生产者2消费者斗缓冲区-by Morelilindousf htt p: /blog.csdn.ne t/Ho 厂 Qldindouis )生产者在缓冲池第
11、个缓冲区中投放数据1 生产者在缓冲池第1个缓冲区中投放数据2 生产者在缓冲池第2个缓冲区中投放数据3编号为帕0的消费者从缓冲池中第0个缓冲区取出数摇1 生产者在缓冲池笫3个缓冲区中投放数据4编号为35药的消费者从缓冲池中第1个缓冲区取出数据2 编号为巧20的消费者从缓冲池中第2个缓冲区取出数拯3 生产者在缓冲池第个缓冲区中投放数据S编号为斗20的消费者从缓冲池中第3个缓冲区取出数据坪 生产者在缓冲池第1个缓冲区中投放数据G编号为3520的滴费者瓦缓冲池中第个缓冲区取出数据5 生产者在缓冲池第2个缓冲区中投放数据F编号为420的消费者从缓冲池中第1个缓冲区取出数据& 生产者在缓冲池第3个缓冲区中
12、投放数据名 生产者完成任务,线程结束运行编号为3520的消费者从缓冲池中第2个缓冲区取出数据了 编号为罂0的消费者从缓冲池中第3个缓冲区取出数据8 编号为也0的消费者收到通知,线程结束运行编号为3520的消费者从缓冲池中第3个缓冲区取出数据8I编号为35初的消费者收到通知,线程结束运行Pres any key to eontinue_8 8实验结论、心得体会和改进建议:本次实验是关于生产者与消费者之间互斥和同步的问题。问题的是指是P、V操作,实验设一个共享缓冲区,生产者和消费者互斥的使用,当一个线程使用缓 冲区的时候,另一个让其等待直到前一个线程释放缓冲区为止。生产者与消费者是一个与现实有关的经验问题,通过此原理举一反三可以解决其他类似的问题。 通过本实验设计,我们对操作系统的 P、V进一步的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮公司员工培训
- 食堂大灶点火规范培训
- 广东省佛山市禅城区2023-2024学年四年级上学期月考英语试卷(12月份)
- 广东省江门市蓬江区省实学校2023-2024学年高一上学期期中考试 化学试题(无答案)
- 信息技术(第2版)(拓展模块) 教案 项目3、4 DHCP服务器的配置与管理;4 物联网
- T-ZFDSA 10-2024 沙棘面制作标准
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)课件 易月娥 项目5、6 Web和FTP服务器的配置与管理、证书服务器的配置与管理
- 高中语文第1章写作的多样性与独特性第2节联想与想象课件新人教版选修文章写作与修改
- 骨盆临床解剖
- 环保行动未来在手-共筑绿色生活守护地球家园
- 社会经济热点-贫富差距专题
- 金属与酸反应的图像解析
- 幼儿园世界地球日保护地球妈妈
- 猪肉配送服务应急保障方案
- AI技术在智能旅游中的应用
- 财产损害谅解书
- 3D打印技术在教育领域的应用案例报告
- 航天集团员工手册
- 物联网中的边缘智能设备与边缘计算
- 篮球培训年终总结报告
- 学校安全双重预防体系建设
评论
0/150
提交评论