記憶體定址 筆記

2021-07-25 01:36:06 字數 1155 閱讀 8285

[方括號內的組建屬於硬體電路]

memory arbiter記憶體仲裁器,介於匯流排和ram之間,用於判斷序列讀寫的ram此時能否被訪問。

邏輯位址=16位的段選擇符(segment selector)+32位偏移量(offset)

段選擇符存放於6個段暫存器裡:

cs (code segment) **段暫存器,它含有乙個2bit欄位,指明cpl(current privilege level),0=核心態,1=使用者態。

ss (stack segment) 棧段暫存器

ds (data segment) 資料段暫存器

es (extra segment) 附加段暫存器和fs, gs (按字母排序) 可儲存任意資料段。

分段定址方式:

8位的段選擇符指定64位的段描述符,邏輯位址的偏移量 + 段描述符的base欄位 = 虛擬位址

執行在使用者態的所有linux程序都使用相同的一對使用者**段和使用者資料段來對指令和資料定址。

執行在核心態的所有linux程序都使用相同的一對核心**段和核心資料段來對指令和資料定址。

linux所有段都從0x00000000開始,偏移量欄位的值 = 虛擬位址的值

gdt(global descriptor table) 全域性描述符表,每個cpu對應yi ge

ldt(local descriptor table) 區域性描述符表

控制暫存器

cr0:含有控制處理器操作模式和狀態的系統控制標誌

cr1:保留不用

分頁定址方式:

通用的64位線性位址分頁級別是使用48bit定址,分4級:page global directory(9bit) + page upper directory(9bit) + page middle directory(9bit) + page table(9bit) + offset(12bit)。

目前的linux對於32位一樣採用該通用4級模型:10 + 0 + 0 + 10 + 12。不過,頁上級目錄和頁中間目錄在指標序列中的位置被保留,以便相容32bit和64bit。

關於快取記憶體cache

雖然每個頁目錄項和頁表項都包含兩個標誌:pcd(page cache disable), pwt(page write-through),linux清除該標誌,對所有頁框都啟用快取記憶體,對寫操作總是採用回寫策略。

linux記憶體定址 筆記一

一 記憶體位址方式 位址不再侷限於有限的實體地址。二 位址轉換 三 關於段位址 x86系統結構 3.2 x86結構會提供 cs,ss,ds,es,fs,fs段暫存器。3.3 系統通過乙個全域性段描述符表 gdt 和區域性段描述符表 ldt 來管理段,每個段描述符為8個字元大小。段描述符包含段的首位元...

核心筆記之記憶體定址

記憶體定址其實硬體已經幫我們解決了很多了,我們常常說的分段分頁機制硬體也有配套的實現,因此這部分內容還是比較容易了解乙個大概的。記憶體定址的幾個要點 1.分段機制中的段選擇符和段描述符的基本內容,這部分在網上大多都有描述。3.與程序的儲存分布相對應的乙個可執行檔案的內部組織,感興趣的可以看看,懂這部...

linux 記憶體定址

1 實體地址 虛擬位址及線性位址 2 虛擬位址到實體地址的過程 記憶體定址的過程可以簡單理解為虛擬位址到實體地址的轉換過程。程式設計師所使用的虛擬位址,並不是直接送到記憶體匯流排,而是被送到記憶體管理單元 mmu,由乙個或一組晶元組成是一種硬體電路,實現虛擬位址到實體地址的轉換 mmu包括分段機制和...