1、Pentium地址翻譯的情況
1)頁表
每個pentium系統都使用兩級頁表。
每個進程都有一個惟一的頁面目錄和頁表集合。頁面目錄基底位址暫存器(page directory base register, PDBR)指向頁表目錄的起始位置。
2)PDE與PTE格式
Write-through 直寫;write back: 寫回。
Pentium頁表條目缺少一個執行許可證,用來控制一個頁面的內容是否可以被執行。緩衝區溢位攻擊利用了這個疏漏,有使用者棧上直接載入和運行代碼。如果有這樣一個執行位,那麼核心就可以通過限制對唯讀程式碼片段的可執行許可權,來消除這種攻擊的威脅了。
3)頁表翻譯
2、Linux虛擬儲存空間
1)一個進程虛擬儲存空間樣本
核心在系統中為每個進程維護一個單獨的任務結構(中,task_struct)。任務結構中的元素包含或者指向核心運行該進程所需要的所有資訊,如PID,指向使用者的棧,可執行目標檔案的名字,PC等。
One of the entries in the task structure points to an mm_struct that characterizes the current state of the virtual memory. The two fields of interest to us are pgd, which points to the base of the page directory table, and mmap, which points to a list of vm_area_structs (area structs), each of which characterizes an area of the current virtual address space. When the kernel runs this process, it stores pgd in the PDBR control register.