Linux

access_process_vm() 在 linux 中是如何工作的?

  • October 5, 2021

AFAIK,ptrace 系統呼叫用於access_process_vm從其他程序讀取數據。但是,不同程序的地址空間是隔離的,那是如何實現的呢?

程序的地址空間確實是相互隔離的,但它們並沒有與核心隔離。核心總是知道所有活動程序的記憶體佈局。access_process_vm工作方式如下:

在 64 位平台上,一般情況下(頁面不是 I/O 重新映射的頁面),最後一步的映射依賴於核心的直接物理映射:核心可以直接訪問所有物理記憶體。在帶有 的 32 位平台上HIGHMEM,這可能涉及創建特定映射。(後者是在kmap上面最後一個連結中定義的原因highmem.h——它只需要用於HIGHMEM。)

引用自:https://unix.stackexchange.com/questions/671884