这是一个面试问题,我仍然对此感到困惑。
实施2个API - 1.访问共享内存中存在的链表的头部
2.访问头部后的元素
问题中的内核是Linux。
我在一个论坛上读到,不使用指针,应该使用偏移量(如果不使用指针,它仍然是一个链表)
我真的不明白这一部分。考虑到虚拟内存的存在,还会对将要发生的地址转换感到好奇。
对于这个问题含糊不清的道歉,但这是我能想到的。
感谢任何帮助。
谢谢
答案 0 :(得分:6)
您无法使用指针,因为无法确保共享内存映射到两个进程中的同一地址。一个进程不知道如何处理指向另一个进程的虚拟地址空间的指针。
因此,您将偏移量存储到共享内存块中。两个进程都确切地知道共享内存块的第712个字节是什么。要访问这样的偏移量,可以将偏移量添加到共享内存块在此特定进程中映射的基址,并创建可在该特定进程中使用的指针。