山东大学操作系统实验报告4进程同步实验(共12页).doc
《山东大学操作系统实验报告4进程同步实验(共12页).doc》由会员分享,可在线阅读,更多相关《山东大学操作系统实验报告4进程同步实验(共12页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机科学与技术学院实验报告实验题目:实验四、进程同步实验学号:日期:班级:计基地12姓名: 实验目的:加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解 Linux 系统中 IPC 进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。实验内容:抽烟者问题。假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。一个抽烟者有烟草,一个有纸,另一个有胶水。系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次
2、仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。 请用以上介绍的 IPC 同步机制编程,实现该问题要求的功能。硬件环境:处理器:Intel Core i3-2350M CPU 2.30GHz 4 图形:Intel Sandybridge Mobile x86/MMX/SSE2内存:4G操作系统:32位磁盘:20.1 GB软件环境:ubuntu13.04实验步骤:(1)新建定义了producer和consumer共用的IPC函数原型和变量的ipc.h文件。(2)新建ipc.c文件,编写producer和c
3、onsumer共用的IPC的具体相应函数。(3)新建Producer文件,首先定义producer的一些行为,利用系统调用,建立共享内存区域,设定其长度并获取共享内存的首地址。然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。(4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。然后设定消费者互斥与同步的信号灯,并为他们设置相应的初值。当有消费进程在运行而其他消费者请求时,相
4、应的信号灯就会阻止它,当共享内存区域已空时,信号等也会提示生产者不能再从共享内存中取出相应的内容。运行的消费者应该与相应的生产者对应起来,只有这样运行结果才会正确。结论分析与体会: 实现方式: Consumer:#include ipc.h int main(int argc,char *argv) int rate = 3; int consumerid=atoi(argv1); buff_h = 101; buff_number = 1; cget_h = 103; cget_number = 1; shm_flg = IPC_CREAT | 0644; buff_ptr = (char
5、*)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 | 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);
6、 sem_val = 1; cmtx_sem = set_sem(cmtx_h,sem_val,sem_flg); if(consumerid=0)*cget_ptr=0;while(1) if(buff_ptr0-A=consumerid)down(cons_sem); down(cmtx_sem); sleep(rate); if(buff_ptr0=A)printf(%d The consumer has glue.nThe consumer gets tobacco and papern,getpid(); if(buff_ptr0=B)printf(%d The consumer h
7、as paper.nThe consumer gets tobacco and gluen,getpid(); if(buff_ptr0=C)printf(%d The consumer has tobacco.nThe consumer gets glue and papern,getpid(); *cget_ptr = (*cget_ptr+1);if(*cget_ptr%2=0)buff_ptr0=D;elsebuff_ptr0=E;up(cmtx_sem); up(prod_sem); return EXIT_SUCCESS; Producer:#include ipc.hint ma
8、in(int argc,char *argv)int rate=3;int producerid=atoi(argv1);buff_h=101;buff_number=1;pput_h=102;pput_number=1;shm_flg=IPC_CREAT|0644;buff_ptr = (char *)set_shm(buff_h,buff_number,shm_flg); pput_ptr = (int *)set_shm(pput_h,pput_number,shm_flg);prod_h = 201;pmtx_h = 202;cons_h = 301;cmtx_h = 302;sem_
9、flg = IPC_CREAT|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; pmtx_sem = set_sem(pmtx_h,sem_val,sem_flg); if(producerid=0)buff_ptr0=D;*pput_ptr=0;while(1) if(buff_ptr0-D=producerid)down(prod_sem);down(pmt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 山东大学 操作系统 实验 报告 进程 同步 12
限制150内