首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shmget()和shmat()

shmget()和shmat()
EN

Unix & Linux用户
提问于 2023-03-20 09:33:58
回答 1查看 37关注 0票数 0

使用shmget(),我们可以分配一定大小的共享内存块(以字节为单位),并使用shmat()将该共享内存块附加到调用进程的地址空间。

我需要检查一下我的理解:

我们有一个进程使用shmget()shmat()创建并附加共享内存,另一个进程使用shmat()将共享内存附加到其地址空间。

现在,这个共享内存的返回地址(使用shmat())在这两个进程中是不同的,因为这是一个虚拟地址。

但是,共享内存块本身有一个基本物理地址,映射到共享此内存的进程的不同虚拟地址。这是正确的吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-03-20 09:39:14

是的,这是正确的。共享内存的思想是,不同的进程可以映射相同的实际内存;由于虚拟寻址,这些地址不一定是相同的。

您甚至可以在不同的地址将相同的共享内存页映射到同一个进程两次--例如,GNU (古典的) 双映射缓冲区以模拟环形缓冲区,其中在末尾写入意味着在开头写入。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/740339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档