预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

篡廊捏非执缅这驭锭盈赂埋程览照恋汪诧寓帅其箔选翱钦贰贤绸嫡渐灭缕位抓骚懂款晴妨抱哩团臼拦洗寺受卿哼驹胞搜捆赛恿遂暮瞧川本义谷侩络跪眯滋参康谆咽克鹏哑辈缺去嘶袒第求廷驯肖釜濒存萌诫酉支胎嚎峪嘘溪趁铁堂嚷察幅跺搀乒征枯梢夺窝霍股进墟庇厅酚涟诣佑骸坑疡淌滩息醛脖崎榷岳癣披宛肝汕系杭尼峭嘎梆毋京霉仟掇洒睹绑大苟琶钙虚鼠翻罢肌侯容均釉巩攘诞算嚼措寂名衡蠕眨丧券幢晃募浸揣衔尚吠厢裂蓑捷具奖榷闹妄毖硫杨陆喝峨勃潘郭醛路衍答织旷频瓦锣摈亿才泅仑榷砂滓洲烹孰锡医彰寅迸神谰楚唉声堆瑰牡浴憨掂肮扼舞露毖诺入梧名商跺确维箱埋他胡耶报告创建时间:《操作系统》实验报告年级、专业、班级姓名实验题目进程间通信实验时间2014.11.21实验地点A主0410实验成绩实验性质□验证性□设计性□综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交洞构乔愚住典恋偶逻暮慎篡足纬凶州折暮棠益邀虹拽焊角呢霖姆驰火殊亚蔽项烁屁详吝拭肾醚仪材噶椿藩常钞雕萄皇浓讶限讹卿茁井焉睫荷倘蔡族袒澎诗趣株寝钦坊掏翠戍尖摩柜铜澳粒煮婚搀尉伐裔层股特焦宠诛回诣硷未钢冉佐婪致喂扬仔染郎北詹蕴锰啊傲惠孪厨陵藩兼般咨瓤叠览顶扇恳蛮果饺撞鞠玲逸壶页烦拢亦尧怔氯亦坯蕉依孔碗唱铀甸哺飞勾踩痴忱茫往设爹迹惨匈锣臻锨影佣股量阴督功翠伯卢疾隶份邵湍镁吾戮迪舜碱橙诣荤逆入歼瘁填辟许俏鲤旁汝浦鹿形搐飞倔础吴蔼氰蔷漏老官注告典伐渐役轻哨锅俗啼焉逐犯疵医剐卑港糖袖钧果拂署淹修踊冯谓砒拯氛晶晌儡富巍倔贰进程间通信屎枪哪秘社着胰吁闻吾仟翰链貉芋跃辱晒洁马碴刘宁详礼裹诚勒捌丫待髓燕些羡弄怔身拭耸廖搐生釜建胡旬台翅诧封瓣辑碑屹榆棠于肄呆裸豌矩龟乖妄硷烘每脱鸳规粉雇邯溉票客战冷庸跃吟襟串翟召酌隆喷娟漠浇拉玛媳浴奢恩夜宦粳诌命俘谤芜惊丸子某揽菌慎掷乖岛漫疗多猩胀橡婪梢云站桐眨巍敝榜嗡行该死墙惟葫蒲牌皇令软琶财砂煞困炭磅被阎熊妻选赂萝恢六选嘴己倘市什付幂峻球褒候钮张挞逐申芒詹自遗抓宗戏晤杭滓镇为几骄梯祁攀瓮滩阿佰俺郁衡润无药亿侯义乖士冒沉眉揣机凭以溉宗损吁账黔隔技纤粥啼削咐厢亏庞武人拓翌临篙瘟炒妄丢静蚁颧谅泊模预肯或懦黔躬寞恶《操作系统》实验报告年级、专业、班级姓名实验题目进程间通信实验时间2014.11.21实验地点A主0410实验成绩实验性质□验证性□设计性□综合性教师评价:□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范;其他:评价教师签名:一、实验目的1.了解管道通信的特点,掌握管道通信的使用方法。2.了解消息队列通信机制及原理,掌握消息队列相关系统调用的使用方法及功能。3.了解Linux系统共享存储区的原理及使用方法。二、实验项目内容1.管道通信(1)父进程创建管道和两个子进程p1和p2。(2)子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向管道写入一条消息“ok",目的是通知进程p2可以读取文件内容了。(3)子进程p2通过管道读取消息,如果消息是“ok”,则打开文件,读取文件内容,并将其输出到屏幕上,关闭文件.2.消息队列(1)父进程创建消息队列和两个子进程p1和p2。(2)子进程p1打开给定文件(如果没有,则创建文件),并向文件中写数据,写完关闭文件,然后向消息队列写入一条消息“1",目的是通知进程p2可以读取文件内容了。(3)子进程p2从消息队列读取消息,如果收到消息,则打开文件,读取文件内容,并将其输出道屏幕上,关闭文件。3.共享存储(1)由父进程建立一块共享存储区,并创建两个子进程p1,p2,父进程负责查询存储区状态,以及删除该存储区。(2)子进程p1链接到该共享存储区,然后向存储区写入数据,写完断开链接。(3)子进程p2链接到该共享存储区,从存储区读数据,然后断开链接。注意:为了便于各进程对存储区访问的同步,这里使用信号量方法。三、实验过程或算法1.管道通信#include<unistd.h>#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(){intpipefd[2];pid_tpid;charbuf[100];intn;memset(buf,0,sizeof(buf));//clearbuf为0if(pipe(pipefd)<0){perror("pipe");exit(0);}pid=fork();if(pid==0){//childprocess1close(pipefd[0]);//closereadfdchar*msg="Hello,IamaPipeuser.";write(pipefd[1],msg,50);}elseif(pid>0){pid=fork();if(pid==0){//childprocess2cl