共享内存:shmget()/共享内存如何工作?

7
通过阅读shmget()的手册页面,我了解到shmget()调用会在内存中分配许多页面,这些页面可以在多个进程之间共享。
它会创建内核内存页面,并将其映射到进程的本地地址空间中吗? 还是该进程内存页面保留用于此段,将为其他附加进程共享相同的内存页面?
我的假设:
当调用shmget()时,内核将保留一些段/页面。 当调用shmat()时,保留的段被映射到进程的地址空间/页面上。 当新进程连接到相同的段时,先前创建的内核段将映射到新进程的地址空间。
这是否正确?
1个回答

1
这个想法基本上是正确的,除了“内核内存页”这个词。在内存管理中保留/分配的内存并不是专门为内核而设计的。它只是“内存页”,尚未映射到进程内存中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接