- 23
- 0
- 约4.9千字
- 约 17页
- 2017-07-09 发布于湖北
- 举报
实验三进程同步概要1
操作系统实验二进程同步实验班级:2010211306学号名:龙佳实验目的理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题;了解windows系统或unix/linux系统下中信号量的使用方法。实验要求编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓库,每个消费者每次从仓库中取出一个产品进行消费,仓库大小有限,每次只能有一个生产者或消费者访问仓库。要求:采用信号量机制。3:实验环境:Win7+DEV或者VS20124:实验思考与设计这是一个很典型的生产者和消费者的问题。在该题中生产者和消费者的个数显然不止一个,而且仓库的大小也是未知的,这都需要用户自己来自定义。那么我看到这题的时候我马上想到的便是写出这个问题的简化的流程图。对于生产者其流程图如下:对于消费者其流程图如下:那么这么设计的原因是什么了?首先有一个仓库需要实现互斥访问,故需要互斥控制量mutex; 然后消费者能够进入仓库的原因是因为仓库中有产品可消耗,故需要一个信号量full来表示仓库中是否有产品。那么对应的对于生产者必须是在仓库空余的条件下,才能将产品放入仓库中,故需要用信号量empty来表示此时仓库是否空余能放入生产者生产的产品。到底是用面向对象的的程序设计还是面向过程的程序设计了?由于本题我在使用面向对象的时候觉得有点繁忙,所以最终还是采用了面向过程的方法来解决该问题,故导致代码的可移植性不高。5实验接口的相关知识本次实验运行在windows的平台上,故我们需要了解相关的关于win32 API 所提供的系统调用的方法(接口函数)CreateThread(用来创建线程)CreateMutex创建一个互斥体:CreateSemaphore创建一个新的信号量:ReleaseMutex释放由线程拥有的一个互斥体ReleaseSemaphore对指定的信号量增加指定的值WaitForSingleObjectWaitForMultipleObjectsCloseHandle6:实验流程首先由用户来指定仓库的大小,以及同时进行的线程个数,此处并不进行随机创建,虽然实验结果一致。然后根据用户提供的线程对临界区的访问来确定接下来的线程是否能否完成任务,一旦完不成输出进程无法全都完成。否则则输出实验完成7:编程实现//datadefine.h#ifndef_DATA_DEFINE_H_#define_DATA_DEFINE_H#includeiostream#includewindows.htypedefHANDLESemaphore;//信号量的定义typedefintsize;//数据大小定义typedefintBoundary;//缓冲区边界定义typedefintBuffer_Kind;//定义缓冲区数据类型typedefintkind_of_request;//请求类型typedefintTime;//定义时间类型typedefintProcess_Kind;typedefintSequence_number;/*最大缓冲区*/constsizeMAX_BUFFER=256;constsizeMAX_REQUEST=20;structnode{Process_Kindcon_or_prod;//请求者的类型Timeconsume_time;//占用时间};typedefstructnodePro;#endif//Process_synchronization.h#ifndef_PROCESS_SYNCHRONIZATION_H_#define_PROCESS_SYNCHRONIZATION_H_#includedata_define.h/*缓冲区的边界设置实现一个循环队列*/Boundaryon;//上边界Boundaryoff;//下边界/*定义缓冲区数组(队列)*/Buffer_Kindbuffer[MAX_BUFFER];/*定义请求队列(包含请求的进程类型,进程所占用的时间)*/Prorequest[MAX_REQUEST];/*定义三个信号量mutex(对仓库访问的控制),empty(消费者消费的控制量),full(生产者生产的控制量)*/Semaphoremutex;Semaphorefull;Semaphoreempty;HANDLEtotal_thread[MAX_REQUEST];//总线程/*定义生产者和消费者的队列*/DWORDproduct_id[MAX_REQUEST];//生产者队列DWORDconsume_id[MAX_REQUEST];//消费者队列Sequence_numberproduct_number;//生产者的标号Process_KindPRODUCT;//生产者Proces
您可能关注的文档
- 实验一二三概要1.doc
- 实验一嵌入式系统设计概要1.doc
- 实验七 端口聚合提供冗余备份链路概要1.doc
- 实验七 ENVI软件介绍概要1.doc
- 实验三 交换机基本配置及交换机端口配置概要1.doc
- 实验七网络编程概要1.doc
- 实验一 认识Matlab编程环境概要1.doc
- 实验三 图形用户界面设计(汽院含答案)概要1.doc
- 实验三 Java面向对象高级编程概要1.doc
- 实验三 导数 数学实验课件习题答案概要1.doc
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 罗伯特·S.平狄克-微观经济学(第九版)PindyckPPT_Ch.6.pptx VIP
- 罗伯特·S.平狄克-微观经济学(第九版)PindyckPPT_Ch.5.pptx VIP
- DB14T 1098-2024奶牛规模养殖技术规程.pdf VIP
- 《卫生微生物学检验》课件——04-化妆品中铜绿假单胞菌的检测.pptx VIP
- 2025年春顶尖课课练八年级物理下册沪科版答案.pdf VIP
- 罗伯特·S.平狄克-微观经济学(第九版)PindyckPPT_Ch.4.pptx VIP
- 青岛酒店管理职业技术学院单招《数学》模拟试题附答案详解【预热题】.docx VIP
- 古诗江上渔者.pptx VIP
- 罗伯特·S.平狄克-微观经济学(第九版)PindyckPPT_Ch.3.pptx VIP
- (2026春新版)人教版三年级数学下册全册教案.pdf
原创力文档

文档评论(0)