linux - Linux 中的内存请求

标签 linux memory memory-management linux-kernel

当一个进程或程序试图访问某些东西而不是任何东西时,就会有一个内存访问。这是如何以及在哪里发生的。我需要 C 文件。我需要在那里编写我的实现,以了解任何程序何时发出内存访问请求。

程序 --- 申请内存 ---> LINUX MM FILE??? ---> 实际地址。

我不是在寻找虚拟到物理的转换,而是想知道谁在 ping,什么时候 ping 内存访问。

最佳答案

用户空间程序使用mmapsbrk 系统调用。您可以使用 strace 命令为一个程序跟踪这些。我认为您可以使用一种 Linux 跟踪框架(如 ftrace)来跟踪所有这些框架。我认为 perf 也可以做到。 Some useful perf examples I found here.

在内核内部,情况有所不同。内核使用 SLOB、SLAB 或 SLUB slab 管理器在“slabs”中分配大部分内容。我相信 kmalloc 会执行 slab。我认为还有 valloc,用于分配要在内核中使用的虚拟内存。

关于linux - Linux 中的内存请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25941220/

相关文章:

c++ - (C++ 内存管理)如果我们有一个 int x = 1234,并且 int &y = x... 那么 y 在堆栈上的地址是什么?

c - 结构和内存分配

java - 如何修复 java.net.ConnectException : Connection refused in Storm

c - 是否需要关闭 systemv 消息队列

linux - 在 linux 中安装 eclipse

string - 如何减少内存使用,搜索序列中的第 k 个字符?

linux - 语法错误 : redirection unexpected

c++ - 由于删除而崩溃(尝试处理异常...)

c - 如果 free() 知道我的数组的长度,为什么我不能在我自己的代码中要求它?

c - 动态分配 C 数组的大小不应该出错吗?