修改核心頁表問題

2021-06-09 02:27:28 字數 424 閱讀 5208

以前一直以為核心**段的保護屬性是 可執行|唯讀的

最近才發現核心**段竟然是可寫的

現在我想把核心**段設定成為不可寫的,做了個實驗,修改了3g+1m ~ 3g+4m這段位址對應的頁表項

但是這個模組一載入就宕機,/var/log/messages也沒有任何出錯資訊

這是**的問題呢?核心是i386,沒有pae。

#define page_offset 0xc0000000

#define first_kern_pg_dir_index (page_offset >> 22)

#define stext_index 256

#define pte_ents 1024

int init_module()

return 0;

}void cleanup_module()

核心頁表和程序頁表

初學核心時,經常被 核心頁表 和 程序頁表 搞暈,不知道這到底是個啥東東,跟我們平時理解的頁表有和關係 核心頁表 程序頁表 每個程序自己的頁表,放在程序自身的頁目錄task struct.pgd中。在保護模式下,從硬體角度看,其執行的基本物件為 程序 或執行緒 而定址則依賴於 程序頁表 在程序排程而...

Linux核心頁表

一 linux位址空間 arm的32位系統共支援4g的記憶體空間,其中0 3g為使用者空間,3g 4g是核心空間,arm採用2級頁表,32位位址空間address分別為 pgd pte 12bits,在核心 中分別為pgd 11位,pte 9 位,頁內位址12位 但是在mmu系統中對於arm的二級分...

關於使用者程序頁表和核心頁表

普通使用者程序的頁表也是存在核心空間的。這很容易理解,畢竟頁表沒有vma來對應。在應用程序建立的時候,task struct m struct描述記憶體資訊,mm gpd指定頁表基位址。頁表的分配是通過呼叫核心夥伴演算法介面分配到物理記憶體,核心在啟動階段已經建立了核心頁表,使用者程序的頁表可以分為...