繁体   English   中英

别名 (ALI) 和共享 (SHM) memory 在 MacOS 上的区别

[英]Difference between aliased (ALI) and shared (SHM) memory on MacOS

我在 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

我找不到任何信息,这是什么意思。 该页面指出

Aliased (ALI) 和 shared (SHM) memory 在进程之间共享。

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

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

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

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

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

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM