共享内存原理和实现

实现原理

实现函数

1,ftok--shmget--shmat--shmdt

shmget用于分配映射物理内存的虚拟内存。

怎么保证不同进程访问同一块物理内存呢

key_t ftok(const char *pathname, int proj_id);

ftok的第一个参数是一个文件,只要使用同一个文件进行映射,不同进程就可以访问同一块物理内存。mmap也一样。

2,mmap--mummap

映射的物理是不是调用函数的时候就分配了

不是的,映射只是确定用于映射物理内存的虚拟内存,当程序真正使用到物理内存时才真的映射物理内存。

这个共享的内存是虚拟内存还是物理内存

相关推荐
乐观勇敢坚强的老彭8 小时前
C++信奥洛谷循环章节练习题
java·c++·算法
Shingmc38 小时前
【Linux】序列化与反序列化
开发语言·c++
白夜11178 小时前
C++设计模式(高内聚,低耦合)
c++·设计模式
我不是懒洋洋8 小时前
【数据结构】二叉树-堆(树的概念、二叉树的概念、顺序结构的结构及实现、堆的实现、堆排序、TopK问题)
c语言·数据结构·c++·经验分享·算法·青少年编程
ximu_polaris8 小时前
设计模式(C++)-结构型模式-桥接模式
c++·设计模式·桥接模式
楼田莉子8 小时前
仿muduo库的高并发服务器——正则表达式与any类介绍及其简单模拟实现
linux·服务器·c++·学习·设计模式
wengqidaifeng10 小时前
C++从菜鸟到强手:1.基础入门
开发语言·c++
handler0118 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
t***54418 小时前
如何在Dev-C++中使用Clang编译器
开发语言·c++
Qbw200419 小时前
【Linux】进程地址空间
linux·c++