?返回专栏总目录

文章目录

  • 一、共享内存的创建和映射过程流程梳理
  • 二、如何创建共享内存?
  • 三、如何将共享内存映射到虚拟地址空间?

沉淀、分享、成长,让自己和他人都能有所收获!?

?本篇我们一起学习下共享内存的创建和映射过程。

一、共享内存的创建和映射过程流程梳理


  1. 调用 shmget 创建共享内存。
  2. 先通过 ipc_findkey 在基数树中查找 key 对应的共享内存对象 shmid_kernel 是否已经被创建过,如果已经被创建,就会被查询出来,例如 producer 创建过,在 consumer 中就会查询出来。
  3. 如果共享内存没有被创建过,则调用 shm_ops 的 newseg 方法,创建一个共享内存对象 shmid_kernel。例如,在 producer 中就会新建。</