山东大学操作系统实验报告材料4进程同步实验

山东大学操作系统实验报告材料4进程同步实验

ID:38272315

大小:498.00 KB

页数:12页

时间:2019-06-07

山东大学操作系统实验报告材料4进程同步实验_第1页
山东大学操作系统实验报告材料4进程同步实验_第2页
山东大学操作系统实验报告材料4进程同步实验_第3页
山东大学操作系统实验报告材料4进程同步实验_第4页
山东大学操作系统实验报告材料4进程同步实验_第5页
资源描述:

《山东大学操作系统实验报告材料4进程同步实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案计算机科学与技术学院实验报告 实验题目:实验四、进程同步实验学号:日期:20120409班级:计基地12姓名:实验目的:加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解Linux系统中IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。实验内容:抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种

2、材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。请用以上介绍的IPC同步机制编程,实现该问题要求的功能。硬件环境: 处理器:Intel®Core™i3-2350MCPU@2.30GHz×4图形:Intel®SandybridgeMobilex86/MMX/SSE2内存:4G操作系统:32位磁盘:20.1GB软件环境:ubuntu13.04实验步骤:(1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。(2)新建ipc.c文件,编写pr

3、oducer和consumer共用的IPC的具体相应函数。(3)新建Producer文件,首先定义producer的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。(4) 新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有

4、消费进程在运行而其他消费者请求时,相应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。文档大全实用标准文案结论分析与体会:实现方式:Consumer:#include"ipc.h"intmain(intargc,char*argv[]){intrate=3;intconsumerid=atoi(argv[1]);buff_h=101;buff_number=1;cget_h=103;cget_number=1;shm_flg=IPC_CREAT

5、0644;buff

6、_ptr=(char*)set_shm(buff_h,buff_number,shm_flg);cget_ptr=(int*)set_shm(cget_h,cget_number,shm_flg);prod_h=201;pmtx_h=202;cons_h=301;cmtx_h=302;sem_flg=IPC_CREAT

7、0644;sem_val=buff_number;prod_sem=set_sem(prod_h,sem_val,sem_flg);sem_val=0;cons_sem=set_sem(cons_h,sem_val,sem_flg);sem_val=1;cmt

8、x_sem=set_sem(cmtx_h,sem_val,sem_flg);if(consumerid==0)*cget_ptr=0;while(1){if(buff_ptr[0]-'A'==consumerid){down(cons_sem);down(cmtx_sem);sleep(rate);if(buff_ptr[0]=='A'){printf("%dTheconsumerhasglue.Theconsumergetstobaccoandpaper",getpid());}if(buff_ptr[0]=='B'){printf("%dTheconsumerha

9、spaper.Theconsumergetstobaccoandglue",getpid());}if(buff_ptr[0]=='C'){printf("%dTheconsumerhastobacco.Theconsumergetsglueandpaper",getpid());}*cget_ptr=(*cget_ptr+1);if(*cget_ptr%2==0)buff_ptr[0]='D';elsebuff_ptr[0]='E';文档大全实用标准文案up(cmtx_sem);up(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。