【问题标题】:Difference between aliased (ALI) and shared (SHM) memory on MacOSMacOS 上别名 (ALI) 和共享 (SHM) 内存之间的区别
【发布时间】:2022-11-30 06:10:06
【问题描述】:

我在 MacOS 上使用vmmap。对于一个区域,它表明共享模式 = 别名 (ALI):

REGION TYPE     START - END       [ VSIZE  RSDNT  DIRTY   SWAP] PRT/MAX SHRMOD PURGE    REGION DETAIL
mapped file  1008dc000-1008e0000  [   16K    16K    16K     0K] rw-/rwx SM=ALI          /Users/USER/*/data

我找不到任何信息这是什么意思。 This page 指出

别名 (ALI) 和共享 (SHM) 内存在进程之间共享。

关于ALISHM之间的区别,没有进一步的信息。你能帮我理解有什么区别吗?

【问题讨论】:

    标签: macos unix memory shared-memory bsd


    【解决方案1】:

    当共享内存(SHM)时,两个进程可以同时访问。

    但是,当内存被别名(ALI)时,此时只有一个进程将虚拟地址映射到物理内存。当第二个进程尝试访问内存时,会发生以下步骤:

    1. 进程 2 出现页面错误。
    2. 内核从进程 1 取消映射内存。
    3. 内核将内存映射到进程 2。
    4. 现在,进程 2 可以写入/读取内存。

      这与内存在 linux 上的工作方式不同,在 linux 上没有别名 (ALI) 模式,只有共享。

      Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 2012-10-29
      • 1970-01-01
      • 2012-10-31
      • 2023-01-03
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多