链接列表在共享内存,linux内核中

sud*_*gin 1 linux shared-memory

这是一个面试问题,我仍然对此感到困惑.

实现2个API - 1.访问共享内存中存在的链表的头部

2.访问头部后面的元素

问题中的内核是Linux.

我在一个论坛上读到,不使用指针,应该使用偏移量(如果不使用指针,它仍然是一个链表)

我真的不明白这一部分.考虑到虚拟内存到位,还会对将要发生的地址转换感到好奇.

抱歉这个问题很模糊,但这是我能想到的.

任何帮助表示赞赏.

谢谢

Dav*_*rtz 6

您不能使用指针,因为无法确保共享内存映射到两个进程中的同一地址.一个进程不知道如何处理指向另一个进程的虚拟地址空间的指针.

因此,您将偏移存储到共享内存块中.两个进程都确切地知道共享内存块的第712个字节是什么.要访问此类偏移量,请将偏移量添加到共享内存块在此特定进程中映射的基址,并创建可在该特定进程中使用的指针.