閱碼場深入剖析Linux內(nèi)核頁表技術(shù)
2022-09-21 23:09 作者:娜娜絡(luò)絡(luò) | 我要投稿
頁表的作用是什么?
1)地址轉(zhuǎn)換
將虛擬地址轉(zhuǎn)換為物理地址已報名閱碼場 底部 評
2)權(quán)限管理
管理cpu對物理頁的訪問,如讀寫執(zhí)行權(quán)限
3)隔離地址空間
隔離各個進程的地址空間,使其互不影響,提供系統(tǒng)的安全性
打開mmu后,對沒有頁表映射的虛擬內(nèi)存訪問或者有頁表映射但是沒有訪問權(quán)限都會發(fā)生處理器異常,內(nèi)核選擇殺死進程或者panic;通過頁表給一段內(nèi)存設(shè)置用戶態(tài)不可訪問, 這樣可以做到用戶態(tài)的用戶進程不能訪問內(nèi)核地址空間的內(nèi)容;而由于用戶進程各有一套自己的頁表,所以彼此看不到對方的地址空間,更別提訪問,造成每個進程都認為自己擁有所有虛擬內(nèi)存的錯覺;通過頁表給一段內(nèi)存設(shè)置只讀屬性,那么就不容許修改這段內(nèi)存內(nèi)容,從而保護了這段內(nèi)存不被改寫;對應(yīng)用戶進程地址空間映射的物理內(nèi)存,內(nèi)核可以很方便的進行頁面遷移和頁面交換,而對使用虛擬地址的用戶進程來說是透明的;通過頁表,很容易實現(xiàn)內(nèi)存共享,使得一份共享庫很多進程都可以映射到自己地址空間使用;通過頁表,可以小內(nèi)存加載大應(yīng)用程序運行,在運行時按需加載和映射...
標簽: