进程间通信

举报
看,未来 发表于 2020/12/29 23:57:44 2020/12/29
【摘要】 怎么做(文中所有蓝色字体都可以点击进去) 前面提到进程间通信的几种方式这里进行一个铺开 1.半双工管道 由于管道仅仅是将一个进程的读端和另一个进程的写端连通的单通信方法,所以又叫“半双工管道”。在shell中管道用“|”表示。 管道的历史很悠久了。 管道部分这篇讲的清楚了,栗子也在里面,我就留着篇幅写别的啦。 2.消息队列 是什么 1、消息队列是内核地址空...

怎么做(文中所有蓝色字体都可以点击进去)

前面提到进程间通信的几种方式这里进行一个铺开

1.半双工管道

由于管道仅仅是将一个进程的读端和另一个进程的写端连通的单通信方法,所以又叫“半双工管道”。在shell中管道用“|”表示。
管道的历史很悠久了。

管道部分这篇讲的清楚了,栗子也在里面,我就留着篇幅写别的啦。

2.消息队列
是什么

1、消息队列是内核地址空间中的内部链表,通过Linux内核在不同的进程间传递消息。
2、消息顺序的发送到消息队列中,并以几种不同的方式从队列中获取。
3、内核中的消息队列是通过IPC标识符来进行区别的,不同消息队列之间是互相独立的。
4、每个消息队列中的消息又构成一个独立的链表。

我把它看作一个“丰巢”。

<为什么和怎么用>部分,点这里

3.共享内存(这是IPC最快捷的方式)
是什么

我的第一个服务器项目分了前后端,而其中前后端的数据通讯就是使用shm共享内存的方式,所以对于这块会比较有感觉。

1、共享内存是在多个进程之间共享内存区域的一种进程间的通信方式。
2、它是在多个进程间通过对指定内存段进行映射实现内存共享的。
3、这是IPC最快捷的方式,因为它没有中间商赚差价。
4、多个进程间共享的是同一块物理空间,仅仅是挂载地址不同而已,因此不需要进行复制,可以直接使用这段空间。

怎么用呢?源码呢?在这里

4.文件空间映射mmap()函数

是什么

1、mmap()函数用来将文件或者设备映射到内存中。
2、mmap的特点是按需调页。最开始只申请vma,并不调真正的页。当对某些页进行引用的时候,会引起一个缺页中断,再将页面调入到内存当中,这样避免了对内存的浪费。

为什么要用mmap()函数

mmap的优势: 操作文件就像操作内存一样,适合于对较大文件的读写。

mmap的缺点:
1、文件如果很小,比如60bytes,由于在内存当中的组织都是按页组织的,将文件调入到内存当中是一个页4k,这样其他的4096-60=4036 bytes的内存空间就会浪费掉了。
2、···未完待续···

5、信号

文章来源: lion-wu.blog.csdn.net,作者:看,未来,版权归原作者所有,如需转载,请联系作者。

原文链接:lion-wu.blog.csdn.net/article/details/104985526

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。