Linux 核心開發 記憶體管理

2021-09-07 12:42:28 字數 2283 閱讀 5998

記憶體管理是對計算機記憶體進行分配和使用的技術。記憶體管理主要存在於多工的作業系統中,因為記憶體資源極其有限。須要在不同的任務之間共享記憶體,記憶體管理的存在就是要高效、高速的非配記憶體,並在適當的時候**和釋放記憶體。以保各個任務正常的執行。最常見的記憶體管理機制有:段式記憶體管理和頁式記憶體管理。

早期的16

位計算中。暫存器的位寬僅僅有

16位。為了能訪問到

1m bit

的記憶體空間,

cpu就採用了分段的方式來管理記憶體,將

1m的記憶體分為若干個邏輯段,每乙個邏輯段的起始位址必須是

16的整數倍,每乙個邏輯段最大的訪問空間為

64k。 

1) 段基位址

將實體地址分為64k bit 

為單位的多個段,因為最後

4位總是

0,所以段的起始位址被右移

4位後儲存,須要計算實際的實體地址時再左移四位。

2) 邏輯位址(段內偏移位址)

邏輯位址地分段後段內偏移量。

3) 線性位址

線性位址代表了計算機的位址訪問能力。代表了乙個非物理的實體地址。是邏輯位址到物理位址變換之間的中間層。

在段式管理中。線性位址 = 

段內基位址 

+ 邏輯位址。

4) 虛擬位址

虛擬位址的概念主要出如今虛擬記憶體技術中。它使得應用程式覺得它擁有連續的可用的記憶體(乙個連續完整的位址空間)。所以在某種情況下被稱為線性位址。

5) 實體地址

實際物理儲存器的位址,是位址轉換的終於結果。

ps: 對於

16位機來說,他的實際實體地址是

20位,線性位址和實體地址是同樣的所以線性位址到實體地址之間是一一相應的。

x86的

32位機型有「實模式」與「保護模式」兩種。在「實模式」下段的使用方式與

16位機時一致的。可是在「保護模式」下,段暫存器被稱為段選擇器

(segment selector)

。它儲存的是段描寫敘述符

(segment descriptor)

,段描寫敘述符記錄了該段的基位址、許可權等資訊,段基位址

+邏輯位址 能夠轉換成線性位址。

段式管理的長處:可以依據實際的**。從使用者的角度(

程式猿)

的角度將**分成多個邏輯段,比方資料段、**段、堆疊段。段大小可變,利於保護資料、方便記憶體共享。

頁式管理是將線性位址劃分為固定長度的管理單元,

一般是4k

大小,對

32位計算機來說就劃分了

2^20

個也,以二級的頁式記憶體管理機制來說,線性位址被分為三部分 共

10位)

共10位)

l 頁內偏移量:0~11

(共12位)

系統會為每乙個程序的頁資料夾位置,通過線性位址的最高10

位找到頁表的起始位址,再通過中間

10位找到頁的起始位址。最後通過低

12位找到頁內偏移量。終於計算出實體地址。

linux 是乙個跨平台的作業系統。為了能支援

intel 

的段式管理方式,它採用了段式 

+ 頁式管理機制。不過

linux 

不過有限度的使用段式管理方式。由於

linux 

系統中每乙個段的基位址都是

0,所以 邏輯位址

= 線性位址,邏輯位址轉換成線性位址時一一相應。

linux 

的這樣的處理方式不僅簡化了核心。也為移植到不支援段式管理方式的平台上提供了方便。

更嚴格的說,linux 

採用了頁式管理模式,只是由於不同的平台的頁級數不一致,

linux 2.6.29

使用了四級的頁式管理結構來相容不同頁級數的

cpu。

這四級分別為:

頁全域性資料夾(page global directory) 

:pgd

頁上級資料夾(page upper directory)

:pud

頁中間資料夾(page middle directory)

:pmd

頁表(page table entry)

linux核心記憶體管理

整個linux虛擬記憶體發布如下 3g以上是核心位址,0 3g是程序位址空間。在x86結構中,核心位址分為三種,這三種型別的區域如下 zone dma 記憶體開始的16mb zone normal 16mb 896mb zone highmem 896mb 結束 程序位址空間的3g,通過mmu,隨機...

Linux核心之記憶體管理

1 核心把物理頁作為記憶體管理的基本單位 處理器的最小可定址單位一般為字 記憶體管理單元 mmu,管理記憶體並把虛擬位址轉換為實體地址的硬體 通常以頁為單位進行處理 2 不同體系結構支援的頁大小不盡相同,有些還支援多種,大多數32體系結構支援4kb的頁,64位體系結構一般支援8kb頁 3 核心用st...

Linux核心管理 記憶體(三)

首先明確一點,mmu的主要工作只有乙個,就是把虛擬位址對映到實體地址。mmu是memory management unit的縮寫,中文名是 記憶體管理 單元,它是 處理器 cpu 中用來管理 虛擬儲存器 物理儲存器的控制線路,同時也負責 虛擬位址 對映為實體地址 是乙個硬體,mmu工作原理也就是cp...