我在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)内存在进程之间共享。
关于ALI
和SHM
之间的区别没有进一步的信息,你能帮助我理解区别是什么吗?
1条答案
按热度按时间zf9nrax11#
当内存共享(SHM)时,两个进程可以同时访问。
然而,当内存被别名(ALI)时,只有一个进程将虚拟地址Map到物理内存。当第二个进程尝试访问内存时,会发生以下步骤:
1.进程2出现页面错误。
1.内核从进程1取消内存Map。
1.内核将内存Map到进程2。
1.现在,进程2可以对存储器进行写/读。
这与Linux上的内存工作方式不同,Linux上没有别名(ALI)模式,只有共享模式。
Source。