linux核心使用段頁式儲存流程

2021-10-02 16:17:46 字數 728 閱讀 4686

首先,8086一開始是位址匯流排是20位,而暫存器只有16位,因此採用了兩個16位數字錯位相加的方式,完成了採用16位暫存器控制20位位址匯流排的目的,為何位址匯流排大?因為想要控制更多的記憶體空間。

那麼8086是沒有保護機制的,那些負責作為基位址的段暫存器,也是可以修改的,那麼使用者就可以訪問到記憶體位址的任何空間。

為了達到能夠在位址轉換的過程中檢查許可權,並且把每個段設定固定的長度這個功能,採用16位暫存器顯然就不夠了,在演進的過程中,80386已經將暫存器和位址匯流排都實現了32位的功能。然後為了向上相容,16位的暫存器仍然要保留,那麼這些段暫存器就更不可能作為任何乙個位址,無論是基位址還是偏移量了。

因此16位暫存器發生了變化,簡單來說變為了乙個記憶體中全域性陣列的下標。用暫存器作為下標找到相應的全域性變數,然後取到根據全域性變數中資料結構,這個資料結構中有基位址,有段長度,有許可權校驗位。校驗通過之後,用基位址加上資料匯流排上的位址,得到實體地址。

具體來說,80386繼承8086留下4個段暫存器,意圖將整個物理空間劃分為使用者**空間,使用者資料空間,核心**空間,核心資料空間。當乙個資料匯流排帶著邏輯位址來的時候,它經歷的流程是這樣的:

對於linux核心來說,gdt中所有的段表描述符中的段起始位址都是0,長度均為0到4g,因此對於linux來說,段式轉換沒有任何變化,就是把乙個32位原封不動的拿過來用,再使用自己的頁式儲存

段頁式儲存管理

段頁式儲存管理技術的基本思想 段頁式儲存管理技術試圖結合分段儲存管理在邏輯上的優點以及分頁儲存管理在物理上的優點,它是採用分段方法來分配和管理使用者的作業位址空間,採用分頁的方法來分配和管理主存 的儲存空間。即把作業分段,段內再分成也,主存分配以頁為單位。在段頁式儲存管理系統中,作業的位址空間被劃分...

段頁式儲存管理

分段式和分頁式管理都有他們各自的優缺點 優點缺點 分段式很方便按照邏輯模組實現資訊的共享和保護 如果段長過大,分配空間不方便,其次,會產生外部碎片 分頁式記憶體利用率高,不會產生外部碎片,只有少量的頁內碎片 不方便按照邏輯模組實現資訊的共享和保護 分段式管理中,產生的外部碎片當然有其解決的方法 緊湊...

段頁式虛擬儲存器

段頁式虛擬儲存器是段式虛擬儲存器和頁式虛擬儲存器的結合。首先,實存被等分成頁。在段頁式虛擬儲存器中,把程式按邏輯結構分段以後,再把每段按照實存的頁大小分頁,程式按頁進行調入和調出操作,但它又可按段實現共享和保護。因此,它可以兼有頁式和段式系統的優點。它的缺點是在位址映像過程中需要多次查表,虛擬位址轉...