【问题标题】:Create shared memory segments in kernel space?在内核空间中创建共享内存段?
【发布时间】:2014-06-18 12:30:42
【问题描述】:

我正在尝试创建一个“邮箱”系统调用,进程可以在其中相互发送消息。我想使用某种共享内存,这样我就可以通过它的 ID 来引用一个“邮箱”,但是我不能从另一个系统调用中调用系统调用,对吧?还有另一种方法可以让我通过其 ID “引用”特定的“邮箱”吗?我正在考虑只使用kmalloc 并创建一个结构数组。不是在寻找代码,只是关于我应该如何做到这一点的一般指示。谢谢!

编辑:不要以为我澄清了,但邮箱必须在内核空间中

【问题讨论】:

    标签: c linux operating-system system


    【解决方案1】:

    你当然不能从用户空间调用kmalloc

    您要查找的内容实际上称为 POSIX“共享内存”。

    一般来说,你调用shm_open 来打开一个共享内存对象。然后你mmap它,这样你就可以通过指针访问它,就像普通内存一样。

    另见:

    【讨论】:

    • 对不起,我忘了说“邮箱”必须在内核空间中
    • @user1813076 我真的不明白你想要完成什么,你不能使用已经存在的功能。您可以使用许多 IPC 机制:UNIX 套接字(包括基于文件的)、管道、共享内存。这些邮箱有哪些不满足这些方式的功能?请注意,UNIX 套接字缓冲区所在的实际内存位于内核空间中。
    • 仅适用于我的操作系统类中的一个项目。我们必须创建类似于共享内存段的东西
    • 所以你打算修改Linux内核?我认为添加一个系统调用来创建或使用这些邮箱是有意义的。
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 2011-12-16
    • 2018-06-08
    • 1970-01-01
    • 2016-10-12
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多