關於gdtr和cr3位址型別的理解

2021-08-14 11:25:39 字數 658 閱讀 6422

結論:1.cr3裡儲存頁目錄表的基址的位址型別為實體地址,頁目錄表裡的每一項也是頁表的實體地址。

2.gdtr裡儲存的位址型別為線性位址。

原因:由於段表並不能保證頁表存在或開啟,所以它的機制,完全建立在無頁表存在的情況。體現在gdtr上,就是gdtr的位址和gdt裡的描述符裡的位址型別一樣,都為線性位址,當開啟分頁機制後有可能會和實體地址不同。而且,當想要更換段頁式的時候,必須在現有位址轉換情況下,構造段表和頁表,但是當往gdtr裡填段表基址是,卻必須是在無段表轉換的位址。頁表和頁目錄表的基址是無段表和頁表轉換後的位址,也就是實體地址。

換句話說,就是換段表時,不依賴現有段表。換頁表時,不依賴段表和頁表。

比如下面這張圖,好像是intel手冊上的,但是根據我的實踐,不知道是不是我的理解不對,我認為不僅cr3是實體地址,頁目錄表項和頁表項都應該是實體地址。

題外話:最近,想實現乙個簡單的基於x86的作業系統記憶體管理功能,網上關於段頁式記憶體管理介紹也挺多,但是,由於自己對計算機硬體不是很了解,所以,在演算法之餘,更多問題是硬體的細節問題。感覺如果硬體細節不清楚,總會遇到很多奇怪的問題,而且,很難排除,花了很多時間,心裡也沒底。所以也建議大家無論做什麼,基礎永遠值得花更多時間。

關於怎麼提取m3u8位址

摘自 很長時間沒有寫部落格了,這一段時間比較忙,接下來的日子要堅持寫部落格了,後期抽空會把這一年多的測試心得補上來,寫部落格其實就像git精神一樣,分享 討論 總結 提公升自己,只有去分享才會得到更多,所謂復出越多,得到越多。這個問題其實不難,最近也在研究小程式 工具 chrome瀏覽器 重要的來了...

127 0 0 1和0 0 0 0位址的區別

ip位址由兩個部分組成,net id和host id,即網路號和主機號。net id 表示ip位址所在的網路號。host id 表示ip位址所在網路中的某個主機號碼。即 plain view plain copy ip address 特殊ip位址就是用來做一些特殊的事情。rfc1700中定義了以下...

S3C2440位址空間的分配與啟動

一 s3c2440位址空間的分配 1.s3c2440a 的儲存器控制器有以下特性 大小端 通過軟體選擇 可程式設計的訪問位寬,bank0 16 32 位 其他bank 8 16 32 位 共8個儲存器banks 6個是rom,sram 等型別儲存器bank 2個是可以作為rom sram sdram...