资源描述:
《山大操作系统实验四》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、山东大学软件学院操作系统实验报告实验题目:进程同步实验实验目的:加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解Linux系统屮IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。实验要求:抽烟者问题。假设一个系统小有三个抽烟者进程,每个抽烟者不断地卷烟并捕烟。抽烟者卷起并抽掉一颗烟需要冇三种材料:烟草、纸和胶水。一个抽烟者冇烟草,一个有纸,另一•个有胶水。系统中还有两个供应者进程,它们无限地供应所
2、有三种材料,但每次仅轮流提供三种材料中的两种。得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。这一过程重复进行。硬件环境:CPU:P4/1.8MHZ内存:256MB便盘:10GB软件环境:Ubuntu08.4-Linux操作系统Gnome桌血2.18.3BASH_VERSION=*3.2.33(1)-releasegccversion4.1.2vi3.1.2gedit2.18.2OpenOffice2.3实验步骤:1、问题分析实验要求提供者不断循环提供三种材料
3、屮的两种,而每个吸烟者拥何三种材料屮的一种,当每个吸烟者拥有三种材料时才可吸烟。首先对于提供者来说,因为其要不断循环提供两种材料,所以在设置信号量吋应该要使其一直运行,因此其信号量设置为,而吸烟者应该设置其信号量为0,等待提供者的唤醒2、算法设计说明sem_val=1;//提供者信号量设置prod_sem=set_sem(prod_key,sem_val,sem_flg);sem_val=0;//吸烟者信号量设置cig_sem=set_sem(cig_key,sem_val,sem_flg);pap_se
4、m=set_sem(pap_key,sem_val,sem_flg);glu_sem=set_sem(glu_key,sem_val,sem」lg);在缓冲区屮,提供者分别向其中存入C,P,G来识别其提供的三种材料,每次提供其屮的两种,同时唤醒需要其提供的材料的吸烟者,while(1){down(prod_sem);提供者不能同时进行提供材料,所以耍设置互斥锁使其不能同时进行执行down(pmtx_sem);if(con_val%3==0){sleep(rate);buff_ptr[*pput_ptr]=
5、'C,;〃向缓冲区存入数据,同时缓冲区指针指向下一个地址*pput_ptr=(*pput_ptr+1)%buff_num;buff_ptr[*pput_ptr]='P*;sleep(rate);}elseif(con_val%3==1){sleep(rate);buff_ptr[*pput_ptr]=,C,;*pput_ptr=(*pput_ptr+1)%buff_num;buff_ptr[*pput_ptr]='G,;sleep(rate);}else{sleep(rate);buff_ptr[*ppu
6、t_ptr]='P';*pput_ptr=(*pput_ptr+1)%buff_num;buff_ptr[*pput_ptr]='G*;sleep(rate);}*pput_ptr=(*pput_ptr+1)%buff_num;up(pmtx_sem);if(con_val%3==0)up(glu_sem);elseif(con_val%3==1)up(pap_sem);elseup(cig_sem);con_val=(con_val+1)%3;而对于吸烟者来说,其要做的是在刚开始时等待,等待提供者的唤醒
7、,设置其最初的信号量为0,使其最初等待,同吋还要设置互斥锁防止吸烟者同吋进行吸烟,并从缓冲区间读取所需要的数据sem_val=0;//设宜吸烟者信号量cig_sem=set_sem(cig_key,sem_val,sem_flg);down(cig_sem);sem_val=1;〃设置互斥锁prod_sem=set_sem(prod_key,sem_val,sem_flg);down(smtx_sem);*cig_get_ptr=(*cig_get_ptr+2)%buff_num;在其完成吸朋后,此时唤醒
8、其他的吸烟者并且对互斥锁进行解锁。up(smtx_sem);up(prod_sem);三个吸烟者所执行的操作差不多,通过不同的键值来区别三个吸烟者3、实验收获通过本次试验,理解了进程同步的一种设计方案,通过信号量來控制不同进程Z间的相互关系。加深了对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,理解了经典进程同步与互斥问题的实际解决方案。实验过程中遇到了许多问题,初期一时难以下手,主要原因是不清楚进