unix MacOS上别名(ALI)和共享(SHM)内存之间的差异

uyhoqukh  于 2022-12-03  发布在  Unix
关注(0)|答案(1)|浏览(146)

我在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之间的区别没有进一步的信息,你能帮助我理解区别是什么吗?

zf9nrax1

zf9nrax11#

当内存共享(SHM)时,两个进程可以同时访问。
然而,当内存被别名(ALI)时,只有一个进程将虚拟地址Map到物理内存。当第二个进程尝试访问内存时,会发生以下步骤:
1.进程2出现页面错误。
1.内核从进程1取消内存Map。
1.内核将内存Map到进程2。
1.现在,进程2可以对存储器进行写/读。
这与Linux上的内存工作方式不同,Linux上没有别名(ALI)模式,只有共享模式。
Source

相关问题