- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word专业整理
学习资料 整理分享
生产者-消费者实验
实验目的和要求
实验目的
操作系统的基本控制和管理控制都围绕着进程展开,其中的复杂性是由于支持并发和并发机制而引起的。自从操作系统中引入并发程序设计后,程序的执行不再是顺序的,一个程序未执行完而另一个程序便已开始执行,程序外部的顺序特性消失,程序与计算不再一一对应。并发进程可能是无关的,也可能是交互的。然而,交互的进程共享某些变量,一个进程的执行可能会影响其他进程的执行结果,交互的并发进程之间具有制约关系、同步关系。其中典型模型便是生产者-消费者模型。
本实验通过编写和调试生产者-消费者模拟程序,进一步认识进程并发执行的实质,加深对进程竞争关系,协作关系的理解,掌握使用信号量机制与P、V操作来实现进程的同步与互斥。
实验要求
1.用高级语言编写一个程序,模拟多个生产者进程和多个消费者进程并发执行,并采用信号量机制与P、V操作实现进程间同步与互斥。
2.撰写实验报告,报告应包含以下内容:
实验目的;
实验内容;
设计思路;
程序流程图;
程序中主要数据结构和函数说明;
带注释的源程序代码;
程序运行结果及分析;
实验收获与体会。
预备知识
生产者—消费者问题
生产者—消费者问题表述如下:如图3.1所示,有n个生产者和m个消费者,连接在具有k个单位缓冲区的有界环状缓冲上,故又称有界缓冲问题。生产者不断生成产品,只要缓冲区未满,生产者进程pi所生产的产品就可投入缓冲区;类似的,只要缓冲区非空,消费者进程cj就可以从缓冲区取走并消耗产品。
图 3.1 生产者—消费者问题示意图
著名的生产者—消费者问题(producer-consumer problem)是计算机操作系统中并发进程内在关系的一种抽象,是典型的进程同步问题。在操作系统中,生产者进程可以是计算进程、发送进程,而消费者进程可以是打印进程、接收进程等,解决好生产者—消费者问题就解决了一类并发进程的同步问题。
操作系统实现进程同步的机制称为同步机制,它通常由同步原语组成。不同的同步机制采用不同的同步方法,迄今已设计出多种同步机制,本实验采用最常用的同步机制:信号量及PV操作。
信号量与PV操作
1965年,荷兰计算机科学家E.W.Dijkstra提出新的同步工具——信号量和PV操作,他将交通管制中多种颜色的信号灯管理方法引入操作系统,让多个进程通过特殊变量展开交互。一个进程在某一关键点上被迫停止直至接收到对应的特殊变量值,通过这一措施任何复杂的进程交互要求均可得到满足,这种特殊变量就是信号量(semaphore)。为了通过信号量传送信号,进程可利用P和V两个特殊操作来发送和接收信号,如果协作进程的相应信号仍未到达,则进程被挂起直至信号到达为止。
在操作系统中用信号量表示物理资源的实体,它是一个与队列有关的整型变量。具体实现时,信号量是一种变量类型,用一个记录型数据结构表示,有两个分量:一个是信号量的值,另一个是信号量队列的指针。信号量在操作系统中主要用于封锁临界区、进程同步及维护资源计数。除了赋初值之外,信号量仅能由同步原语PV对其操作,不存在其他方法可以检查或操作信号量,PV操作的不可分割性确保执行的原子性及信号量值的完整性。利用信号量和PV操作即可解决并发进程竞争问题,又可解决并发进程协作问题。
信号量按其用途可分为两种:公用信号量,联系一组并发进程,相关进程均可在此信号量上执行PV操作,用于实现进程互斥;私有信号量,联系一组并发进程,仅允许此信号量所拥有的进程执行P操作,而其他相关进程可在其上执行V操作,初值往往为0或正整数,多用于并发进程同步。
信号量的定义为如下数据结构:
typedef struct semaphore
{
int value; //信号量的值
struct pcb *list; //信号量队列的指针
}
信号量说明: semaphore s;
P、V操作原语描述如下:
P(s):s.value--;若s.value≥0,则执行P(s)的进程继续执行;若s.value0,则执行P(s)的进程被阻塞,并把它插入到等待信号量s的阻塞队列中。
V(s):s.value++;若s.value≤0,则执行V(s)的进程从等待信号量s的阻塞队列中唤醒头一个进程,然后自己继续执行。若s.value0 ,则执行V(s)的进程继续执行;
信号量实现互斥
信号量和PV操作可用来解决进程互斥问题。为使多个进程能互斥地访问某临界资源,只需为该资源设置一互斥信号量mutex,并置初值为1,然后将各进程访问该资源的临界区置于P(mutex)和V(mutex)操作之间即可。
用信号量和PV操作管理并发进程互斥进入临界区的一般形式为:
semap
您可能关注的文档
- 临床用血管理制度汇编.ppt
- 流行性乙型脑炎病人的_护理.ppt
- 流域的综合开发_以美国田纳西河流域为例(高三第一轮复习).ppt
- 硫化氢气体中毒的应急知识.ppt
- 六年级数学总复习(因数倍数).ppt
- 轮胎行业发展现状和市场分析报告书.doc
- 论企业破产清算的若干财务问题论文正稿.doc
- 论如何提升企业核心竞争力(工商管理_毕业设计规范格式).doc
- 论儒家思想在企业文化建设中的应用.doc
- 论提高客户满意度对企业发展的重要性.doc
- 人教版六年级上册数学期末测试卷带答案(巩固).docx
- 人教版六年级上册数学期末测试卷带答案(夺分金卷).docx
- 人教版六年级上册数学期末测试卷带答案(培优).docx
- 人教版六年级上册数学期末测试卷带答案(完整版).docx
- 人教版六年级上册数学期末测试卷带答案(培优).docx
- 高中生物细胞结构与功能教学创新设计教学研究课题报告.docx
- 人教版六年级上册数学期末测试卷带答案(轻巧夺冠).docx
- 高中生物教学中实验探究能力培养策略与实践教学研究课题报告.docx
- 初中语文阅读教学中文化传承的策略研究教学研究课题报告[001].docx
- 初中地理信息系统教学对学生空间思维能力的促进作用教学研究课题报告.docx
文档评论(0)