核心學習之記憶體定址(一)

2021-08-21 04:06:58 字數 841 閱讀 9400

端選擇符和段暫存器

邏輯位址(48位)由段選擇符(16位)和偏移量(32位)組成

t1:0表示gdt,1表示ldt

段暫存器(16位):用來儲存段選擇符,由於段描述符為8位元組,因此,索引號只需要13位元組即可

cs:**段暫存器,指向包含程式指令的段。它包含兩位的字段:cpl:0表示核心態,3表示使用者態

ss:棧段暫存器,指向包含當前程式棧的段

ds:資料暫存器,指向包含靜態資料和全域性資料的段

段描述符

它有8位元組組成,表示段的特徵,它放在全域性描述符表(gdt,它的位址和大小儲存在gdtr)和區域性描述符表(ldt,它的位址和大小儲存在ldtr),它主要的內容是基位址(32位)和偏移量(20位)組成。

分段單元:

1.根據t1欄位,選擇gdtr或ldtr作為基位址的暫存器

2.通過上面所述的基位址+index欄位的值*8得到描述符的位址

3.通過描述符的基位址加偏移就得到線性位址

除linux的80x86,所有段(使用者**段、核心**段、使用者資料段、核心資料的)都是從0x0開始的,因此邏輯位址偏移量就是線性位址。

分頁單元把線性位址轉為實體地址,線性位址被分為以固定長度為單位的組,稱為頁,頁內部連續線性位址被轉為連續的實體地址。

核心筆記之記憶體定址

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

linux核心學習筆記之記憶體管理

linux核心把物理頁作為記憶體管理的基本單位。每一頁的大小根據系統架構不同有所區別,32位系統下為4kb,64位系統下為8kb。記憶體管理單元 mmu 以頁為單位來管理系統中的頁表,負責虛擬位址到實體地址的轉換,使用者所使用的記憶體位址一般都是虛擬位址。核心中頁的結構體中比較重要的成員為 stru...

linux核心學習筆記(2) 記憶體定址

硬體中的分頁 頁框是乙個儲存區域,頁是乙個資料塊。兩者的長度一致 乙個 每個頁框包含乙個頁。4kb 1 directory 最高10位 2 table 中間10位 3 offset 最低12位 兩級頁表 兩級表的第一級表稱為頁目錄,儲存在乙個4k位元組的頁中,頁目錄表共有1k個表項,每個表項為4個位...