




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品及针织品安全标准与质量控制体系考核试卷
- 建筑装饰的室内装修工期管理指南考核试卷
- 炼油厂能源管理与节能技术应用考核试卷
- 花画艺术在音乐节视觉设计中的应用考核试卷
- 海洋牧场规划与运营管理考核试卷
- 橡胶合成过程中副产物的处理与利用考核试卷
- 租赁设备的维修技术培训与提升考核试卷
- 体育经纪公司体育产业人才培养与引进策略考核试卷
- 影视后期制作灯光系统租赁与后期支持协议
- 铁路建设工程监理公司股权合作投资合同
- 2025年高三语作文模拟题分析+材料+范文:关心人本身应成为一切技术上奋斗的主要目标
- 2025中考二轮专题复习:古诗文主题默写汇编(2)(含答案)
- 长城汽车2025人才测评答案
- 河道的管理和防护课件
- 绿化作业安全教育培训
- GB/T 45282-2025IPv6地址分配和编码规则总体要求
- 二便失禁病人的护理措施
- 浙江省金华义乌市稠州中学2024-2025学年九年级下学期3月独立作业英语试卷(原卷版+解析版)
- 模拟退火与数论-深度研究
- 驾照考试科目一试题900题(含标准答案)022506
- 水利项目立项报告
评论
0/150
提交评论