共享内存原理和实现

实现原理

实现函数

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

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

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

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

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

2,mmap--mummap

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

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

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

相关推荐
不负岁月无痕3 分钟前
STL -- C++ 红黑树封装 Map 和 Set
java·c语言·开发语言·c++·面试
初学者,亦行者9 分钟前
算法设计与分析:动态规划 - TSP问题和0-1背包问题
c++·算法·动态规划
十五年专注C++开发33 分钟前
C++之std::numeric_limits介绍
开发语言·c++·limits
拳里剑气1 小时前
C++算法:优先级队列
开发语言·c++·算法·优先级队列
从零开始的代码生活_2 小时前
C++ 模板入门:函数模板、类模板与实例化机制
开发语言·c++·后端
远离UE411 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬11 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
luj_176812 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
取地址符12 小时前
C++学习笔记(基于learn-cxx)(1)
c++·经验分享·笔记·学习
思麟呀13 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++