博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解LInux内核-进程通信
阅读量:6210 次
发布时间:2019-06-21

本文共 1027 字,大约阅读时间需要 3 分钟。

进程间通信的基本机制: 1、管道和FIFO(命名管道):最适合在进程之间实现生产者/消费者的交互。进程A向管道写入数据,进程B从管道读出数据。 2、信号量:内核信号量的用户态版本。 3、消息:允许进程在预定义的消息队列中读和写消息来交换消息(小块数据)。Linux提供两种不同的消息版本:System V IPC;POSIX消息 4、共享内存区:允许进程通过共享内存块来交换信息。在必须共享大量数据的应用中,这可能是最高效的进程间通信。 5、套接字:允许不用计算机上的进程通过网络交换数据。同样可以用作相同主机上的进程间通信。例如 X Window系统图形接口。 6、文件系统 管道: 1、一种进程间通信机制,所有Unix系统都愿意提供 2、进程间单向数据流;一个进程写入,另一个进程读取 3、shell中使用‘|’操作符来创建管道;例如 ls|more; 临时文件的实现方式:ls>temp; more < temp; 4、POSIX实现了半双工的管道,虽然pipe系统调用返回了两个文件描述符,但每个进程在使用一个的时候必须关闭另一个 5、System V Releas 4实现了全双工的管道。允许两个文件描述符即可以读,也可以写。虽然仍然是单向的,但是不必关闭。 6、同一个管道可以被多个进程进行读写。 7、对于每个管道,内核都要创建一个索引节点和两个文件对象;还有多个(1或者16)管道缓冲区,它是一个单独的页,包含了已经写入等待读出的数据。 8、管道没有对应的磁盘映像,作为一组VFS对象来实现的,在Linux2.6中被组织成pipefs特殊文件系统。 9、无法打开已经存在的管道。任意的两个进程不可能共享同一个管道,除非管道由一个共同的祖先进程创建。 命名管道(FIFO): 1、在文件系统中不拥有磁盘块 2、打开的FIFO总是于一个内核缓冲区相关联,存放进程间交换的数据 3、因为有了磁盘索引节点,任何进程都可以访问FIFO。因为FIFO文件名包含在系统的目录树中。 4、FIFO索引节点出现在系统目录树,而不是pipefs特殊文件系统 5、FIFO是一种双向通信管道,可能以读写模式打开一个FIFO System V IPC: 1、通过信号与其他进程同步,通过semget 创建IPC资源 2、通过消息队列;通过msgget 创建IPC资源 3、共享内存和其他进程;通过shmget创建IPC资源 4、所有进程都可以,不必有相同都祖先进程

 

转载地址:http://lpzja.baihongyu.com/

你可能感兴趣的文章
javascript控制页面(含iframe进行页面跳转)跳转、刷新的方法汇总
查看>>
JAVA常见算法题(九)
查看>>
leetcode解题文件夹
查看>>
MySQL复制原理-加强版
查看>>
dotnet 命令实战
查看>>
Hbase集群扩展
查看>>
C语言之归并排序
查看>>
绘制loss曲线
查看>>
进程的处理器亲和性和 vCPU 的绑定(查看cpu信息,超线程等)
查看>>
CentOS 中使用yum出现的“UnicodeDecodeError: &#39;ascii&#39; codec”问题解决方法
查看>>
【知识整理】这可能是最好的RxJava 2.x 教程(完结版)
查看>>
【Android】定位与解决anr错误记录
查看>>
Virtex6 PCIe 超简版基础概念学习(二)
查看>>
Hive 内建操作符与函数开发——深入浅出学Hive
查看>>
Azure IOT 设备固件更新技巧,看这一篇就够了
查看>>
Excel中输入身份证后3位变成0,怎么办?
查看>>
js学习笔记32----new
查看>>
FFmpeg基础知识之————H264编码profile & level控制
查看>>
PyCharm中按住Alt键,可以选择一个指定列表,然后对这个数列进行操作,比如删除,增加等等...
查看>>
Ubuntu 16.04配置VNC进行远程桌面连接
查看>>