

MMAP学习_北洋的技术博客_51CTO博客
source link: https://blog.51cto.com/u_14689064/5445378
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

MMAP学习
原创
虚拟进程地址空间(vm_area_struct)和虚拟内核地址空间(vm_struct)都映射到同一块物理内存空间。当Client端与Server端发送数据时,Client(作为数据发送端)先从自己的进程空间把IPC通信数据copy_from_user拷贝到内核空间,而Server端(作为数据接收端)与内核共享数据,不再需要拷贝数据,而是通过内存地址空间的偏移量,即可获悉内存地址,整个过程只发生一次内存拷贝。一般地做法,需要Client端进程空间拷贝到内核空间,再由内核空间拷贝到Server进程空间,会发生两次拷贝。
对于进程和内核虚拟地址映射到同一个物理内存的操作是发生在数据接收端,而数据发送端还是需要将用户态的数据复制到内核态。到此,为何不直接让发送端和接收端直接映射到同一个物理空间,那样就连一次复制的操作都不需要了,0次复制操作那就与Linux标准内核的共享内存的IPC机制没有区别了,对于共享内存虽然效率高,但是对于多进程的同步问题比较复杂,而管道/消息队列等IPC需要复制2两次,效率较低。
如下是大致流程图:

- 赞
- 收藏
- 评论
- 分享
- 举报
Recommend
-
12
张宗昌诗选 以下诗文有说是张宗昌所作,也有说是后人伪作的张宗昌诗作,反正挺有趣的。 《笑刘邦》 听说项羽力拔山,吓得刘邦就要窜。 不是俺家小张良,奶奶早已回沛县。 《大风歌》 大炮开兮轰...
-
13
一、优先队列二、图三、前缀树四、线段树五、树状数组本节的内容一、优先队列
-
2
-
12
AWS服务概览
-
7
安全组、EBS、实例存储、AMI 安全组总结 在每一个EC2实例创建的过程中,我们都会被要求为其指定一个安全组(Security Group)。这个安全组充当了主机的虚拟防火墙作用,能根据协议、端口、源IP地址来过滤EC2实例...
-
4
ELB、CLB、ALB、NLB、AS、PG 传统负载均衡器(Classic Load Balancer),**应用程序负载均衡器(Application Load Balancer)和网络负载均衡器(Network Load Balancer)**三种不同的负载均衡器
-
7
静态广播发送流程分析 原创 上篇文章分析的是动态广播(NR>0因为是在动态regist的时候会把bf...
-
4
系统架构师学习 原创 xueyise 2022-07-29 09:13:54...
-
3
一、Qt的介绍Qt是一个跨平台的C++图形用户界面应用程序框架。支持Linux、类Unix系统、windows、Mac os以及嵌入式平台。Linux的图形界面有KDE和gnome,其中KDE就是用Qt写的MSVC和MinGW是两种不同的编译器...
-
5
gcc GNU C语言编译器gcc GNU C++语言编译器ld GNU链接器,将目标文件和库函数链接起来,创建可执行程序和动态链接库ar 生成静态库.a,可以编辑和管理静态链接库make 生成器,根据makefile文件自动编译链接生成...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK