这是一个面试问题,我仍然对此感到困惑。
实现 2 个 API - 1.访问共享内存中存在的链表的头部
2.访问头部之后的元素
问题中的内核是Linux。
我在论坛上看到,不是使用指针,而是应该使用偏移量(如果不使用指针,它仍然是链表吗)
这部分我不是很懂。考虑到虚拟内存到位,也对将发生的地址转换感到好奇。
很抱歉这个问题含糊不清,但这就是我能弄清楚的。
感谢任何帮助。
谢谢
最佳答案
您不能使用指针,因为无法确保共享内存在两个进程中都映射到同一地址。一个进程不知道如何处理指向另一个进程的虚拟地址空间的指针。
因此,您将偏移量存储到共享内存块中。两个进程都确切地知道共享内存块的第 712 个字节是什么。要访问这样的偏移量,您需要将偏移量添加到共享内存块在此特定进程中映射到的基地址,这会创建一个您可以在该特定进程中使用的指针。
关于linux - 共享内存中的链表,linux内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439780/