![](/img/trans.png)
[英]Why does the page fault not cause the thread to finish its execution later?
我有下面的代碼,我故意在file.c中的一個線程中創建頁面錯誤util.c#include "util.h" // to use as a fence() instruction extern inline __attribute__((always_inline)) CYCLES rdtscp ...
[英]Why does the page fault not cause the thread to finish its execution later?
我有下面的代碼,我故意在file.c中的一個線程中創建頁面錯誤util.c#include "util.h" // to use as a fence() instruction extern inline __attribute__((always_inline)) CYCLES rdtscp ...
[英]Hijacking page fault handler
我有一個進程 PID 訪問不允許訪問的 memory 區域,CPU 在 kernel 中創建了一個陷阱,它調用 do_page_fault() 將 SIGSEGV 發送到用戶進程。 用戶進程有一個自定義信號處理程序,它有一些邏輯並且故障指令被恢復。 我想做的是將這個信號處理邏輯移動到kernel空間 ...
[英]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 ...
[英]Can Someone Give me a high-level overview of the VSWS Algorithm used in Operating Systems?
我試圖找到可以為我提供簡單、清晰、簡潔的 VSWS 算法描述的視頻/資源,但我似乎找不到任何視頻/資源。 任何幫助,將不勝感激! ...
[英]Does mmap causes a page fault after we use fork?
由於 COW,linux 將僅在已寫入頁面后將其分配給子進程。 它還只會在更改后為堆棧分配一個新頁面。 因此,例如,如果在fork()系統調用之后,我們在子進程中調用 printf,由於堆棧已更改,我們將出現頁面錯誤。 但是我不確定以下代碼: 由於父子都運行 mmap,我假設第二行會發生頁面錯 ...
[英]lazy overcommit allocation and calloc
知道的人可以解釋一下延遲堆存儲如何與 calloc/realloc 的內存歸零保證交互嗎? 具體來說,我想知道: 如果/當零寫入會導致存儲立即出現故障如果/當不是,我是否應該關注可能發生故障的上下文(例如,從程序集中完成的讀取系統調用) ...
[英]Why does malloc() cause minor page fault?
我正在嘗試了解 memory 和頁面錯誤,所以我寫了下面的代碼來檢查我的理解。 我不明白為什么調用 malloc 會導致 MINFL 增加,因為 malloc() 不應該影響物理 memory (據我了解)。 這是我的代碼: 這些是 ps 命令的最終結果。 malloc之前 malloc后有兩點 ...
[英]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 字頁 ...
[英]Can page fault occur if we don't use virtual memory?
我正在閱讀有關虛擬內存和頁面錯誤的信息。 據我了解,當主內存中不存在 CPU 正在查找的頁面時,就會發生頁面錯誤。 我有一個疑問,如果我們不使用虛擬內存,會不會發生頁面錯誤? ...
[英]What cause kernel to eat CPU on page_fault?
硬件/操作系統:linux 4.9,64G 內存。 16 個守護進程正在運行。 每次讀取隨機短(100 字節)5GiB 文件,在守護程序啟動時將其作為通過 mmap() 映射的內存進行訪問。 每個守護進程讀取自己的文件,所以總共有 16 個 5GiB 文件。 每個守護進程每秒可能進行 10 次 ...
[英]Page Fault in Linux Kernel
閱讀Mel Gorman的書《 Understanding the Linux Virtual Memory Manager 》后,我有幾個問題。 第4.3 Process Address Space Descriptor節4.3 Process Address Space Descriptor說k ...
[英]Is there a disk access in every page fault?
我的問題是(如上所述)每次出現頁面錯誤時是否可以訪問磁盤/虛擬 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 中的另一個段中的代碼(可能類似於 ...
[英]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 直到需要時才分配頁表(分配在使用頁面時按需進行)。 我想檢查在程序執行期間真正分配了多少頁表。 您能否讓我知道如何測量實際分配的頁面數? ...
[英]how to determine if a memory organization follows row major order or column major order?
如何確定 memory 組織遵循行優先順序還是列優先順序? 我學習了這個新概念,並且知道如果我們知道 memory 組織遵循行優先順序或列優先順序,我們可以使我們的數組以這樣一種方式運行,即通過減少代碼的數量來提高代碼性能頁面錯誤。 但我無法找到“如何確定 memory 組織是否遵循行優先順序或列 ...
[英]Prefetching in vm_fault(), Linux drivers
我正在實現一個簡單的設備驅動程序。 使用此驅動程序的程序從用戶那里獲取 arguments 是使用請求分頁還是預取(僅獲取下一頁)。 但是當用戶請求預取時,應該將此信息發送給驅動程序。 問題是 vm_fault 的標准結構如下: 那么如何將這些預取的附加信息合並到這些中,以便我可以使用它來編寫不同的 ...
[英]Profiling resident memory usage and many page faults in C++ program on linux
我試圖弄清楚為什么我的一個程序版本(“新”)的常駐 memory 比同一程序的另一個版本(“基線”)高得多(5x)。 該程序在具有 E5-2698 v3 CPU 並用 C++ 編寫的 Linux 集群上運行。 基線是多進程程序,新的是多線程程序; 它們基本上都在執行相同的算法、計算和操作相同的輸入數 ...
[英]Can address be loaded in a cache but not in the main memory?
memory 地址可以加載到緩存中,但不能加載到主 memory 中嗎? 換句話說,如果緩存想要將數據寫入主 memory,那會在 x86-64 中使用 Linux 產生頁面錯誤嗎? ...