我在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
我找不到任何信息,这是什么意思?本页声明
别名内存(ALI)和共享内存(SHM)在进程之间共享。
没有关于ALI
和SHM
之间差异的进一步信息。你能帮我理解一下它们的区别吗?
当内存是共享的(SHM)时,两个进程可以同时访问它。
然而,当内存别名(ALI)时,一次只有一个进程将虚拟地址映射到物理内存。当第二个进程尝试访问内存时,将执行以下步骤:
- 进程2页面错误
- 内核从进程中取消内存映射。
- 内核将内存映射给进程
- 现在,进程2可以从内存中读写。
这与linux上的内存工作方式不同,linux上没有别名(ALI)模式,只有共享模式。
来源。