电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

unix进程之间的通信

24页
  • 卖家[上传人]:第***
  • 文档编号:50418554
  • 上传时间:2018-08-08
  • 文档格式:PPT
  • 文档大小:89KB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 UNIX系统的进程通信机制包括:管道、消息缓冲、共享主存信号量机制。UNIXUNIX进程之间的通信进程之间的通信1管道通信是进程之间借助于文件按先 进先出方式同步传递数据的一种形式。 有两种类型的管道:无名管道(pipes)和有名管道(FIFO)。 无名管道由父进程创建,用于父子或有家族 关系的进程之间进行信息传递。 有名管道(FIFO)通常用于实现不要求具有 父子或有家族关系的进程之间进行信息传递 。11.1 管道通信(pipes)2 管道就是将一个进程的标准输出与一个进 程的标准输入连接在一起。管道文件是一 个临时文件,通信完成后,文件就不再存 在。 通信方式: 一个进程如进程2用write命令向管道写入 数据 另一个进程如进程1用read命令读管道中的 数据。 读、写必需同步。进程1 fd0进程2 fd1管道 系统内核3一、创建无名管道一、创建无名管道(pipe)(pipe)的系统调用的系统调用系统调用pipe()的调用语法如下:pipe(fdp);这里,fdp是一个整形指针数组。记 录管道创建后的对管道文件读写的两个文 件描述符。实现结果:生成一个没有路径名、长度为0的pip

      2、e 文件。4它由下图所示的几项组成: pipe文件所在设备上的i节点、 与之对应的主存i节点、 两个系统打开文件表项 返回生成的pipe文件的进程打开文件表的两个表项。用户打开 文件(父) u_ofilei节点系统打开文 件表file内存I节点表外存pipe文件pf0Fdp0Fdp1pf1读文件指针, 主存i节点指针p243写文件指针, 主存i节点指针5对pipe文件大小的限制: 只使用磁盘索引节点中的10个直接地址项 核心将直接地址项作为一个循环队列来管理。剩下的3个索引项存放: 文件的读指针(i_frptr)、 文件的写指针(i_fwptr)、 读管道的进程数(i_frcnt)、 写管道的进程数(i_fwcnt) 等待使用管道的标志(i_fflag)等信息之后创建一个或几个子进程。子进程复 制父进程的用户打开文件表,于是pipe文件 就是父子或同族进程之间进行通信的共享文 件。6为了避免混乱,一个pipe文件最好为 两进程专用,一个用于读,一个用于写。通信双方分别关闭pipe文件的发送端 与接收端,通过调用READ()或WRITE()函 数对pipe文件进行存取。允许写者超前读者1

      3、024个字符。读写进程通过加锁机制互斥访问pipe 文件,读写必须随时同步。通信完成后,使用关闭命令CLOSE(), 将其关闭,收回文件占用的系统全部资源 。文件一经关闭,不再存在。7图11.2(p243)给出父进程向pipe写,子进 程从管道读的通信涉及的数据结构。用户打开文件表 (子)u_ofilei节点系统打开文 件表file内存I节点表外存pipe文件Fdp0 Fdp1读文件指针, 主存i节点指针写文件指针, 主存i节点指针pf0Fdp0 Fdp1用户打开文件表 (父)u_ofilepf18例1父子进进程之间间采用无名管道通信 char parent = “A message from parent.n” main() /*执行main()的是父进程*/ int chan12;char buf100;pipe(chan1);Pid=fork();if(pid0) *返回父进进程context* close(chan10); *父进进程关闭读闭读 通道*write(chan11,parent,sizeof(parent);close(chan11);wait(0);print(“

      4、parent process terminates.n”);else *返回子进进程context*close(chan11);*子进进程关闭闭写通道*read(chan10,buf,100);printf(“child process read:sn”,buf);close(chan10);printf(“child process terminates.n”); 9有名管道既可用于同一机器进程间的 本地通信,也可用于不同机器进程间的网 络通信。它可用于知道管道名字的进程之 间的通信。创建命令的调用语法如下:mknod(pathname,mode,dev);pathname是新创建的有名管道的文件路径 名, mode是被创建文件的类型和存取方式, dev是文件所在的设备。二、 创建一个有名管道(named pipe)10有名管道被创建后,在系统中有: u一个目录项 u对应的外存i节点 u并不打开它。与普通文件一样,有名管道只要不删除 ,永久存在,只是文件长度为零。通信双方必须使用管道名字打开文件后 才能通过读写命令实现通信。112打开一个有名管道通信双方使用如下的系统调用打开有 名管

      5、道文件:open(pathname,oflg); pathname是要打开的有名管道的路径名, oflg是文件打开时的存取方式: v通信的发送者以O_WRONLY只写方式、 v接收方以O_RDONLY只读方式打开12l 之后通信双方使用读写命令进行通信l 通信完成后就应立即关闭。l 有名管道关闭后,它所占用的磁盘块全 部释放l 文件仍占有一个目录项和一个i节点。l 文件长度为0。13 进程间使用有名管道实现通信时,必须 有三次同步:第一次是打开同步。当一个进程以读方式或写方式打开有名 管道时,若已有写者或读者将管道打开,唤醒写 者或读者后继续前进,否则,睡眠等待写者或读者打开管道。14第二次是读写同步 当写者写时, 检查有无读者等待,若有,唤醒之,再写。 当管道被写满时,写者必须睡眠等待。 当读者读时, 若没有数据可读,则睡眠等待。 若有数据可读,读完后要检查有无写者等待 ,若有唤醒之。n 一旦有一方不存在,应立即终止通信过程 。15第三次是关闭同步。 当一个写进程关闭有名管道时, 若发现有进程睡眠等待读管道,唤醒它, 被唤醒进程立即从读调用返回。 当一个读进程关闭有名管道时, 若发现

      6、有进程睡眠等待写管道,唤醒它, 向它发一个指示错误条件的信号 返回。 最后一个关闭有名管道的进程, 释放该管道占用的全部盘块 释放相应的主存i节点。16例2任意两进进程之间间通过过一个有名管道通信#include char string=“a”;main(argc,argv) int argc; char *argv; int fd;char buf256;mknod(“fifo”,010777,0); *以读读写执行方式为为所有用户创户创 建有名管道*17if(argc=2)fd=open(“fifo”,O_WRONLY); elsefd=open(“fifo”,O_RDONLY); for(,)if(argc=2) write(fd,string,2);printf(“n I have wrote :%s”,string);string0+=1;close(fd);elseRead(fd,buf,6);printf(“n I have read :%s.n”,buf);buf0=0;close(fd); 18有名管道程序的运行方式:一个进程用“./a.exe 1 key_t key; 用户指定的消息队列的名字int msgflg; 用户设置的标志和访问方式返回一个消息队列描述符 消息的发送:int msgsnd(msgid, msgp,msgsz,msgflg);int msgid; 消息队列描述符struct msgbuf * msgp;指向消息缓冲区的指针int msgsz;消息的长度int msgflg; 当无内存空间存储消息时,等待? 放回?22 消息的接收:int msgrev(msgid,msgp,msgsz,msgtpy,msgflg);int msgid,msgsz,msgflg;struct msgbuf * msgp;long msgtpy; 规定选读的消息类型 消息队列的操纵:如读出状态信息并修改int msgctl(msgid,cmd,buf);int msgid,cmd; cmd是规定的命令struct msgid_ds * buf; 存放控制参数和查询 结果。23作业P263 13-524

      《unix进程之间的通信》由会员第***分享,可在线阅读,更多相关《unix进程之间的通信》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.