有没有办法从
linux中的用户空间分配连续的物理内存?至少几个保证连续的内存页面.一个巨大的页面不是答案.

解决方法

不,那里没有.您需要从内核空间中执行此操作.

如果你说“我们需要从用户空间”这样做 – 在内核空间中没有任何事情就没有意义 – 因为用户空间程序无法控制,甚至不知道底层内存是否连续.

您需要执行此操作的唯一原因是 – 如果您正在与一块硬件或需要此需求的其他一些低级(即内核)服务配合使用.那么再一次,你必须在这个层面上处理它.

所以答案不只是“你不能” – 而是“你永远不需要”.

我已经写过这样的内存管理器,让我可以做到这一点 – 但是它总是因为内核层面的一些基本问题,这在内核层面必须被解决.通常因为总线上的其他一些代理(PCI卡,BIOS,甚至是通过RDMA接口的另一台计算机)具有物理连续的内存要求.再次,所有这一切都必须在内核空间中解决.

当你谈论“缓存行”时,你不用担心.您可以放心,用户空间内存的每个页面都是连续的,每个页面都比缓存行大得多(无论您在讨论什么架构).

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。