- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山大操作系统实验4选编
进程同步实验
张咪
软件四班
一、实验要求
加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解Linux系统中IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。
二、实验目的
抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。 请用以上介绍的IPC同步机制编程,实现该问题要求的功能。
三、实验环境??
实验环境均为Linux操作系统,开发工具为gcc和g++。
四、实验思路?
1、约束:
(1)某一时刻,只能有一个供应者,放入一对物品。
(2)某一时刻,只能有一个抽烟者,且要保证这个抽烟者恰好需要的就是刚刚生产的物品。
(3)所有供应者提供这种物品之后,不论它要生产什么物品,只有等到抽烟者拿走了物品之后,才能继续生产。
供应者1 供应者2
wait(empty); wait(empty);
wait(mutex1); wait(mutex1);
随机生产两样产品; 随机生产两样产品;
signal(mutex1); signal(mutex1);
//有烟草的 //有烟草的
if(PG)signal(s1); if(PG)signal(s1);
//有胶水的 //有胶水的
if(PT)signal(s2); if(PT)signal(s2);
//有纸的 //有纸的
if(TG)signal(s3); if(TG)signal(s3);
s1(有烟草的) s2(有胶水的) s3(有纸)
wait(s1); wait(s2); wait(s3);
wait(mutex2); wait(mutex2); wait(mutex2);
取产品吸烟 取产品吸烟 取产品吸烟
signal(mutex2); signal(mutex2); signal(mutex2);
signal(empty); signal(empty); signal(empty);
2、创建五个子进程,两个作为供应者,三个作为吸烟者。
3、创建信号灯数组,8个信号灯
3 个给吸烟者: 0:tobaccopaper,1:paperglue,2:gluetobacco
2 个给两个供应者用于同步: 3,4
3 个给供应者用于互斥: 5:tobaccopaper,6:paperglue,7:gluetobacco
生产者同步,确保同一时间不会同时提供多个原料
原料互斥,两个生产者不会同时提供同种原料,通知需要该原料的吸烟者
4、系统建立IPC通讯时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。
在成功获取到key之后,就可以使用该key作为某种方法的进程间通信的key值
创建共享内存,providerId保存附加的共享内存的首地址。
5、一开始临界区为空,若供应者3产生了随机数0,则通知拥有胶水的吸烟者1,然后将自己的生产者ID写入临界区,吸烟者1接到信号0,便吸烟,释放原料,唤醒生产者。
五、实验过程
新建一个文件夹,在该文件夹中建立以下名为test4.c的C语言程序。编写代码?,保存。
输入gcc test4.c命令, 生成默认的可执行文件a.ou
您可能关注的文档
- 山东省执业药师继续教育题库选编.docx
- 山东省日照市2017中考物理复习-第十三章复习内能(共26张PPT)选编.ppt
- 山东省成武一中高中物理13.7光的色散课件选编.ppt
- 山东省日照市东港实验学校八年级数学下册16二次根式回顾与复习课件(新版)新人教版选编.ppt
- 山东省日照市2017届高三10月政治一轮复习-必修2第五课我国的人民代表大会制度(课件)(共24张PPT)选编.ppt
- 山东省日照市2017中考物理复习-第十六章复习电压电阻(共14张PPT)选编.ppt
- 山东省日照市东港实验学校八年级数学下册17勾股定理复习课件1(新版)新人教版选编.ppt
- 山东省兖州一中2017年地理复习备考策略《分析近几年高考新课标卷明确必修一备考方向》(共98张PPT)选编.ppt
- 山东省日照市东港实验学校八年级数学下册19.2.1正比例函数课件1(新版)新人教版选编.ppt
- 山东省德州市2016年中考语文试题及答案选编.doc
文档评论(0)