Linux 中的虚拟内存管理

问题描述 投票:0回答:1

我最近了解了 CUDA 的低级 GPU 虚拟内存管理,如这篇博文中所述。关键思想是:

保留大块虚拟内存而不最初分配物理内存。 需要时动态地将物理内存映射到保留的虚拟内存。 一旦不再需要物理内存,就取消映射并释放它。 这种技术对于需要动态增长的数据结构特别有用,例如向量。

我的问题是:这种方法可以使用Linux和C++实现吗? AFAIK,没有一个 Linux API 允许在不预先用物理内存支持的情况下保留虚拟内存。有没有办法在Linux上实现这个功能?

c++ linux memory-management cuda
1个回答
0
投票

这是 Linux 上的默认行为。每当您在 C++ 应用程序中分配内存时,您都会获得一个虚拟地址,并且内核最初不会使用物理内存来支持该地址。只有当发生页面错误时,内核才会映射一些物理内存来支持分配。

也就是说,默认情况下内核会过度使用内存,尽管可以更改该行为。

© www.soinside.com 2019 - 2024. All rights reserved.