一尘不染

linux中的用户空间分配连续的物理内存

linux

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


阅读 837

收藏
2020-06-02

共1个答案

一尘不染

不,那里没有。您 确实 需要在内核空间中执行此操作。

如果您说“我们需要从用户空间执行此操作”-没有在内核空间中进行任何操作,那没有什么意义-因为用户空间程序无法控制 甚至不知道 底层内存是否连续。

您需要执行此操作的唯一原因-是与某个硬件或其他需要此要求的低层(即内核)服务一起使用时。同样,您必须在 级别上处理它。

因此,答案不只是“您不能”-而是“您永远不需要”。

我已经编写了这样的内存管理器,这些内存管理器 确实 允许我执行此操作-
但这始终是因为内核级存在一些潜在的问题,必须在内核级解决。通常是因为总线上的某些其他代理(PCI卡,BIOS或RDMA接口上的另一台计算机)具有物理上连续的内存需求。同样,所有这些都必须在内核空间中解决。

当您谈论“缓存行”时,您无需担心。您可以放心,每个 页面 的用户存储空间的是连续的,并且每一 比高速缓存行(无论你在说什么架构)大得多。

2020-06-02