版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、v1.0可编辑可修改软件学院操作系统实验报告专 业:软件工程班 级:RB软工互152学 号:0226学生姓名:王泽华扌旨导教师:韩新超13实验二:进程同步(生产者与消费者)一. 实验目的1) 理解进程竞争资源的现象,进而理解进程的同步于互斥;2) 掌握基本的互斥与同步算法,进一步理解“生产者一消费者”模型;3) 通过对“生产者一消费者”问题编程实现,了解进程创建、同步信号量、互斥信号量、临界区的创建和使用,初步了解并发程序设计方法;4) 进一步理解P、V原语和信号量在线程互斥和同步机制中的运用。二. 实验属性该实验为设计性实验。三. 实验仪器设备及器材普通PC386以上微机四. 实验理论基础1
2、、该实验中使用到相关的 wi ndows API函数:1) create Thread 建立新的线程;2) create Mutex创建一个互斥体;3) create Semaphore创建一个新的信号量;4) release Mutex释放由线程拥有的一个互斥体;5) release Semaphore对指定的信号量增加指定的值;6) wait for Single Object用来检测handle时间的信号状态;7) wait for Multiple Objects true即等待所有信号量有效再往下执行,false当其中一个信号量有效时向下执行;8) Close Handle关闭一个内
3、核对象。2、数据结构用实验一中的进程就绪队列,并在此基础上进行调度,如果队 列排序与算法要求不一致则编写一个排序函数。3、进程调度算法:选择一种进程调度算法实现。4、主界面设计:在实验一的界面上增加一个进程调度按钮、被调进程的PCB2显示o5、功能测试:从显示出的就绪队列状态和被调进程的 PCB查看操作的正确与否。2区矗:一編人护号啓的编口胆別品 口岸当亠 产的区号番8:1:2:I Ij 4:|区1213区区区区区区区区区区区区亠:L 詬一尺皿取 Ebai-tptncptp-tpgtflImfli申口-Lis a- - I I - Hr. fe -el r - 4 r a - - - - Ta
4、 - 1 K !12 0 0 0 0 0 0 0 00 1 2 35 6 7891111I编入口ncl 一牛(2)结果分析: 在每个过程中先做 P(mutex),后做V(mutex),二者要成对出现。夹 在二者中间的代码段就是该进程的临界区。 对同步信号量full和empty的P, V操作同样必须成对出现,但它们分别位于不同的程序中无论在生产者进程中还是在消费者进程中, 两个P操作的次序不能颠 倒:应先执行同步信号量的P操作,然后执行互斥信号量的P操作。否则可 能造成进程死锁。六. 实验总结计算机操作系统中引入了进程后,极大的改善了系统资源的利用率和提 高了系统的吞吐量,但是由于多道环境中同时
5、存在多个进程,它们共享系统 资源,各自按照各自的方式执行,给系统造成了混乱,所以系统必须提供一 种机制管理进程,使这些并发执行的进程之间能有条不紊地运行,能有效地 共享资源和相互合作,使得程序的执行具有可再现性,这就是进程同步的主 要任务。七. 附录#in elude #in elude #in elude using n amespaee std;/生产者消费者问题,单个生产者,多个消费者,多个缓冲池/使用信号量 和关键段来实现using n amespaee std;in t gi,gj;const int num = 10; /const int size = 4; / volatile
6、 bool flag = true; /产生数据的个数缓冲池的大小用于消费者线程之间int bufsize; /缓冲池CRITICAL_SECTION gc; / 关键段HANDLE empty,full; / Sem aphoreun sig ned int _stdcall pro(PVOID p) /for(i nt i = 0; i = num ; i+)WaitForSi ngleObject(empty,INFINITE); /EnterCriticalSection(&gc); /bufgi = i;cout 生产者在 gi gi = (gi+1)%size;LeaveCriti
7、calSect ion(&gc);ReleaseSe map hore(full,1,NULL);cout 生产者运行结束! endl;return 0;un sig ned int _stdcall cus(PVOID p) /生产者线程线程同步线程互斥号缓冲池放入 bufgi endl;消费者线程while(true)线程同步WaitForSi ngleObject(full,INFINITE); /if( flag = false ) /线程之间的逻辑判断break;EnterCriticalSection(&gc); /线程互斥cout 线程 GetCurre ntThreadld()
8、 数据 bufgj endl;在缓冲池 gj 获取if( bufgj = num ) /结束条件LeaveCriticalSect ion(&gc);ReleaseSemaphore(full,1,NULL);flag = false;break;gj = (gj+1)%size;LeaveCriticalSect ion(&gc);Sleep(50);ReleaseSemaphore(empty,1,NULL);cout 消费者线程 GetCurrentThreadld() 运行结束! endl;return 0; int mai n()/ 相关变量的定义const int sz = 3;g
9、i = gj = 0;In itializeCriticalSect ion(&gc);empty = CreateSemaphore(NULL,4,4,NULL);full = CreateSem aphore(NULL,0,4,NULL);创建了三个线程HANDLE han dsz;han d0= (HANDLE)_begi nthreadex(NULL,0,pro,NULL,0,NULL); /han d1 = (HANDLE)_begi nthreadex(NULL,0,cus,NULL,0,NULL);han d2 = (HANDLE)_begi nthreadex(NULL,0,cus,NULL,0,NULL);WaitForMultipleObjects(s z,ha nd,t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浅析弱电安防系统综合防雷解决方案考核试卷
- 石棉在流体控制中的应用考核试卷
- 煤炭加工工艺对低质煤利用的影响考核试卷
- DB11T 589-2010 保健按摩操作规范
- 森林小屋课件教学课件
- 员工知识产权培训总结报告
- 员工技能培训道场方案
- 英语培训课件教学课件
- 淮阴工学院《沥青与沥青混合材料1》2022-2023学年第一学期期末试卷
- ATM机相关行业投资方案范本
- 习思想教材配套练习题 第七章 社会主义现代化建设的教育、科技、人才战略
- led显示屏工艺流程
- 建设项目设计管理方案
- 第13课《警惕可怕的狂犬病》 课件
- 仓库货物条码管理培训
- 第六章-中国早期社会学中的社区学派-《中国社会学史》必备
- 水产品质量安全知识讲座
- 技术协议范本通用模板
- 香港十日游旅游计划书
- 屠宰工培训课件
- 生命的价值课件
评论
0/150
提交评论