当一个进程或程序试图访问某些东西而不是任何东西时,就会有一个内存访问。这是如何以及在哪里发生的。我需要 C 文件。我需要在那里编写我的实现,以了解任何程序何时发出内存访问请求。
程序 --- 申请内存 ---> LINUX MM FILE??? ---> 实际地址。
我不是在寻找虚拟到物理的转换,而是想知道谁在 ping,什么时候 ping 内存访问。
最佳答案
用户空间程序使用mmap
和sbrk
系统调用。您可以使用 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/