Pra*_*tic 3 c unix fork memory-management
我想编写一个小程序来演示操作系统在调用后是否使用copy-on-write fork().问题在于写入时复制对受影响的进程大多是透明的.
对于给定变量,使用&运算符访问的虚拟内存地址对于分叉进程看起来是相同的,即使这些进程在该变量中存储不同的值也是如此.有没有办法确定单独进程中的变量是否存储在同一物理地址?有没有办法确定它们是不是?
一般而言,在可移植到所有符合POSIX或类似POSIX的系统的意义上,没有,没有办法观察COW,尤其是在单个页面级别(您可能能够在更广泛的层面上观察它) "可用"内存,如果系统提供这样的数字).但是在Linux上,你可以通过/proc/[pid]/pagemap潜在的共享流程来观察它./proc/kpagecount并且/proc/kpageflags可能还包含相关信息,但您需要root才能访问它们.看到:
https://www.kernel.org/doc/Documentation/vm/pagemap.txt