cost 418 ms
劫持頁面錯誤處理程序

[英]Hijacking page fault handler

我有一個進程 PID 訪問不允許訪問的 memory 區域,CPU 在 kernel 中創建了一個陷阱,它調用 do_page_fault() 將 SIGSEGV 發送到用戶進程。 用戶進程有一個自定義信號處理程序,它有一些邏輯並且故障指令被恢復。 我想做的是將這個信號處理邏輯移動到kernel空間 ...

在 MSVC 中,操作員 new 在調試模式下的行為與在發布模式下的行為不同

[英]Operator new behaves differently in Debug mode than in Release mode in MSVC

在測試有關頁面錯誤的一些事情時,我發現new在 MSVC 中的調試模式和發布模式下的運行方式之間存在奇怪的差異。 考慮以下代碼1 :#include <array> constexpr size_t PAGE_SIZE = 4096; int main() { const s ...

使用 fork 后 mmap 是否會導致頁面錯誤?

[英]Does mmap causes a page fault after we use fork?

由於 COW,linux 將僅在已寫入頁面后將其分配給子進程。 它還只會在更改后為堆棧分配一個新頁面。 因此,例如,如果在fork()系統調用之后,我們在子進程中調用 printf,由於堆棧已更改,我們將出現頁面錯誤。 但是我不確定以下代碼: 由於父子都運行 mmap,我假設第二行會發生頁面錯 ...

惰性過度分配和 calloc

[英]lazy overcommit allocation and calloc

知道的人可以解釋一下延遲堆存儲如何與 calloc/realloc 的內存歸零保證交互嗎? 具體來說,我想知道: 如果/當零寫入會導致存儲立即出現故障如果/當不是,我是否應該關注可能發生故障的上下文(例如,從程序集中完成的讀取系統調用) ...

為什么 malloc() 會導致輕微的頁面錯誤?

[英]Why does malloc() cause minor page fault?

我正在嘗試了解 memory 和頁面錯誤,所以我寫了下面的代碼來檢查我的理解。 我不明白為什么調用 malloc 會導致 MINFL 增加,因為 malloc() 不應該影響物理 memory (據我了解)。 這是我的代碼: 這些是 ps 命令的最終結果。 malloc之前 malloc后有兩點 ...

Memory 容量飽和和輕微頁面錯誤

[英]Memory capacity saturation and minor page faults

在USE Method: Linux Performance Checklist中提到目標是衡量 memory 容量飽和度 - 進程驅動系統超出其能力(並導致分頁/交換)的程度。 [...] 另一個可能服務於類似目標的指標是進程的次要故障率,可以從 /proc/PID/stat 中查看。 我不確定 ...

如何從虛擬地址確定頁碼?

[英]How do I determine the page number from the virtual address?

我正在尋求以下作業問題的幫助: 假設一個程序有1200個字的虛擬空間。 考慮以下一系列虛擬地址: 60; 222; 160; 910; 450; 345; 412; 10; 180; 20; 443; 766; 812. 給出參考頁碼的順序,假設每頁有 200 個單詞。 總虛擬空間與 200 字頁 ...

是什么導致內核在 page_fault 上吃 CPU?

[英]What cause kernel to eat CPU on page_fault?

硬件/操作系統:linux 4.9,64G 內存。 16 個守護進程正在運行。 每次讀取隨機短(100 字節)5GiB 文件,在守護程序啟動時將其作為通過 mmap() 映射的內存進行訪問。 每個守護進程讀取自己的文件,所以總共有 16 個 5GiB 文件。 每個守護進程每秒可能進行 10 次 ...

x86-64 返回指令會導致 linux 中的頁面錯誤嗎? 當前進程堆棧總是在主 memory 中嗎?

[英]Can x86-64 return instruction cause a page fault in linux? Is the current process stack always in main memory?

我知道返回指令會將“程序控制權轉移到位於堆棧頂部的返回地址” (第 1205 頁) 。 當前進程的堆棧是否總是在 memory 中? 假設我在自己的程序中返回到 function(接近返回?),那么我能保證沒有頁面錯誤嗎? 如果返回將控制權傳遞回不在 memory 中的另一個段中的代碼(可能類似於 ...

分頁和非連續 memory 分配

[英]Paging and non-contiguous memory allocation

我對 x86_64 Linux 操作系統中的 memory 管理幾乎沒有疑問。 如果我從我的用戶空間代碼中分配一個 2000 字節的數組(靜態 - arr[2000];或動態 - malloc(2000); ),這些將是物理 memory 中的連續 memory 嗎? If I allocate ...

如何測量已分配頁表的數量?

[英]How to measure number of allocated page tables?

據我所知,Linux 直到需要時才分配頁表(分配在使用頁面時按需進行)。 我想檢查在程序執行期間真正分配了多少頁表。 您能否讓我知道如何測量實際分配的頁面數? ...

如何確定 memory 組織是否遵循行主順序或列主順序?

[英]how to determine if a memory organization follows row major order or column major order?

如何確定 memory 組織遵循行優先順序還是列優先順序? 我學習了這個新概念,並且知道如果我們知道 memory 組織遵循行優先順序或列優先順序,我們可以使我們的數組以這樣一種方式運行,即通過減少代碼的數量來提高代碼性能頁面錯誤。 但我無法找到“如何確定 memory 組織是否遵循行優先順序或列 ...

在 vm_fault()、Linux 驅動程序中預取

[英]Prefetching in vm_fault(), Linux drivers

我正在實現一個簡單的設備驅動程序。 使用此驅動程序的程序從用戶那里獲取 arguments 是使用請求分頁還是預取(僅獲取下一頁)。 但是當用戶請求預取時,應該將此信息發送給驅動程序。 問題是 vm_fault 的標准結構如下: 那么如何將這些預取的附加信息合並到這些中,以便我可以使用它來編寫不同的 ...

在 linux 上的 C++ 程序中分析常駐 memory 使用情況和許多頁面錯誤

[英]Profiling resident memory usage and many page faults in C++ program on linux

我試圖弄清楚為什么我的一個程序版本(“新”)的常駐 memory 比同一程序的另一個版本(“基線”)高得多(5x)。 該程序在具有 E5-2698 v3 CPU 並用 C++ 編寫的 Linux 集群上運行。 基線是多進程程序,新的是多線程程序; 它們基本上都在執行相同的算法、計算和操作相同的輸入數 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM