有关Linux的share memory的问题
答案:1 悬赏:60 手机版
解决时间 2021-02-02 18:36
- 提问者网友:酱爆肉
- 2021-02-02 12:13
shmat函数的第二个参数为空的时候返回的地址值是实际内存的位置么?如果第二个参数为某一个void*类型的地址值时,shmat返回的就是这个地址值,那么这个地址值是由实际的virtual memory所map出来的地址值么?这样有什么好处?
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-02-02 13:26
在任何成功的情况下, shmat 返回的是将 shared memory 所 attach 到的地址。
如果 第二个参数为 NULL, 则由系统选择一个空闲的地址来 attach, 如果第二个参数不为空,则 attach 到这个指定的地址。好处就是此时你可以指定具体要 attach 到哪个地址 (比如 0x12345678),而第一种方法事先你无法知道被 attach 的地址是什么。
另外,在linux里,user space 的进程永远不可能看到 “实际内存”的位置,所以不管第二个参数是否为 NULL,你看到的永远不是 “实际内存”位置。
如果 第二个参数为 NULL, 则由系统选择一个空闲的地址来 attach, 如果第二个参数不为空,则 attach 到这个指定的地址。好处就是此时你可以指定具体要 attach 到哪个地址 (比如 0x12345678),而第一种方法事先你无法知道被 attach 的地址是什么。
另外,在linux里,user space 的进程永远不可能看到 “实际内存”的位置,所以不管第二个参数是否为 NULL,你看到的永远不是 “实际内存”位置。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯