- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
胡亦帆2013329600180操作系统实验二.doc
操作系统实验报告
班级:13计科全英文班 姓名:胡亦帆 学号:2013329600180
实验二:管道通信和共享内存通信
实验目的
了解和掌握管道通信
实现共享内存通信
Linux系统的共享内存机制允许在任意进程间大批量地交换数据。
了解和熟悉Linux支持的共享存储区机制。
实验内容
实现管道通信
实现共享内存通信
代码及运行结果分析
例一:
main()
{ int x,fd[2];
char buf[30],s[30];
pipe(fd);
while ((x=fork())==-1);
if (x==0)
{
close(fd[0]);
printf(Child Process!\n);
strcpy(buf,This is an example\n);
write(fd[1],buf,30);
exit(0);
}
else{
close(fd[1]);
printf(Parent Process!\n);
read(fd[0],s,30);
printf(%s\n,s);
}
}
任务一:
阅读以上父子进程利用管道进行通信的例子(例1),写出程序的运行结果并分析
(2)编写程序:父进程利用管道将一字符串交给子进程处理。子进程读字符串,将里面的字符反向后再交给父进程,父进程最后读取并打印反向的字符串。
任务二
例二:
#include sys/types.h
#include sys/ipc.h
#include sys/shm.h
main()
{
key_t key=15;
int shmid_1,shmid_2;
if ((shmid_1=shmget(key,1000,0644|IPC_CREAT))==-1){
perror(shmget shmid_1);exit(1);
}
printf(First shared memory identifier is %d\n,shmid_1);
if ((shmid_2=shmget(IPC_PRIVATE,20,0644))==-1){
perror(shmget shmid_2);exit(2);
}
printf(Second shared memory identifier is %d\n,shmid_2);
exit(0);
}
任务二
(1)阅读例2的程序,运行一次该程序,然后用ipcs命令查看系统中共享存储区的情况,再次执行该程序,再用ipcs命令查看系统中共享内存的情况,对两次的结果进行比较,并分析原因。最后用ipcrm命令删除自己建立的共享存储区。 (有关ipcs和ipcrm介绍见后面一页)
运行结果:
用ipcs命令查看系统中共享存储区的情况
再次运行程序,查看结果
再次用ipcrm命令删除自己建立的共享存储区。
(2)每个同学登陆两个窗口,先在一个窗口中运行例3程序1(或者只登陆一个窗口,先在该窗口中以后台方式运行程序1),然后在另一个窗口中运行例3程序2,观察程序的运行结果并分析。运行结束后可以用ctrl+c结束程序1的运行。
代码:
程序一:
#include sys/types.h
#include sys/ipc.h
#include sys/shm.h
#define SHMKEY 138
#define K 1024
int shmid;
int main ()
{
int i,*pint;
char *addr;
extern char * shmat ();
extern cleanup ();
for(i=0;i20;i++) signal(i,cleanup);
shmid=shmget(SHMKEY,16*K,0777|IPC_CREAT); /*建立16K共享区SHMKEY */
addr=shmat(shmid,0,0);/*挂接,并得到共享区首地址 */
printf (addr 0x%x\n,addr);
pint=(int *)addr;
for (i=0;i256;i++)
*pint++=i;
pause();/*等待接收进程读 */
}
cleanup()
{
shmctl(shmid,IPC_RMID,0);
exit ();
}
程序二:
#include sys/types.h
#include sys/ipc.h
#include sys/shm.h
#define SHMKEY 13
您可能关注的文档
- 精彩全文阅读.ppt
- 糖尿病相关的低血糖.ppt
- 糟糕透了.ppt
- 系统升级工具.ppt
- 系统的克隆.ppt
- 系统的维护与管理台大计资中心教学组林淑芬磁碟的维护与管理清理磁.ppt
- 红十字标志-香港红十字会(青年及义工事务部).ppt
- 红十字知识及国际人道法知识培训班_4_5.ppt.ppt
- 红色教材单元10-100数与量的认识.doc
- 纯氧燃烧相关的科学问题及其研究现状.doc
- 隐形变异作风问题的检视与整改培训讲座PPT课件.pptx
- 内蒙古自治区赤峰第四中学2023-2024学年高二下学期5月期中物理试题 含解析.docx
- 内蒙古自治区巴彦淖尔市第一中学2024-2025学年高一下学期4月期中考试 物理 含答案.docx
- 内蒙古自治区赤峰市第四中学2024-2025学年高二下学期4月月考试题 物理 含答案.docx
- 内蒙古自治区鄂尔多斯市达拉特旗达拉特旗第一中学2023-2024学年高一下学期7月期末考试物理试题 含解析.docx
- 新修订《代表法》五大亮点解读.pptx
- 幼儿园夏季防暑降温安全课主题活动PPT课件.pptx
- 2025年宜明昂科分析报告:CD47融合蛋白安全性及疗效优秀,市场空间广阔.pdf
- 2-数学_数学答案.pdf
- 幼儿园小学端午节习俗文化教育教学主题班会PPT课件.pptx
文档评论(0)