Linux記憶體管理

2021-07-04 21:24:40 字數 739 閱讀 7774

記憶體是linux核心所管理的最重要的資源之一,記憶體管理子系統是作業系統中最重要的部分之一。對於立志從事核心開發的工程師來說,熟悉linux的記憶體管理系統非常重要。

cpu要將乙個邏輯位址轉換為實體地址,

再利用頁式記憶體管理單元,把線性位址最終轉換為實體地址。

段式、頁式管理

16位cpu內部擁有20位的位址線,它的定址範圍就是2的20次方,也就是1m的記憶體空間。但是16位cpu用於存放位址的暫存器(ip,sp……)只有16位,因此只能訪問65536個儲存單元,64k。

為了能夠訪問1m的記憶體空間,cpu就採用了記憶體分段的管理模式,並在cpu內部加入了段暫存器。16位cpu把1m記憶體空間分為若干個邏輯段,每個邏輯段的要求如下:

1.邏輯段的起始位置(段位址)必須為16的倍數,即最後4個二進位制位必須全為0。

2.邏輯段的最大容量為64k

由於段位址必須是16的倍數,所以值得一般形式為***x0h,即前16位二進位制是變化的,後4位示固定的0,鑑於段位址的這種特性,可以值儲存前16位二進位制來儲存整個段基位址,所以每次要使用段暫存器左移4個0(乘以16)來得到實際的段位址。

邏輯位址+段基位址+段內偏移量

pa = 段暫存器的值 * 16 + 邏輯位址

分頁管理

linux核心的設計並沒有全部採用intel所提供的段機制,僅僅是有限度的是用來分段機制。這不僅簡化了linux核心的設計,而且為把linux移植到其他平台創造了條件,因為很多risc處理器並不支援段機制。



Linux記憶體管理

本文首先介紹一下linux記憶體管理方式,著重說明一下使用者空間的記憶體管理,包括linux虛擬對映以及glibc中malloc的實現 然後簡要介紹單程序多執行緒的記憶體管理方式,主要涉及各執行緒堆疊空間的分配 linux 採用兩級保護機制,隔離核心空間和使用者程式空間,使使用者程式無法直接訪問核心...

Linux記憶體管理

本文首先介紹一下linux記憶體管理方式,著重說明一下使用者空間的記憶體管理,包括linux虛擬對映以及glibc中malloc的實現 然後簡要介紹單程序多執行緒的記憶體管理方式,主要涉及各執行緒堆疊空間的分配 linux採用兩級保護機制,隔離核心空間和使用者程式空間,使使用者程式無法直接訪問核心,...

Linux記憶體管理

首先我要說,我這是轉貼,轉的cu論壇上 nonameboy 的帖子,你可以連線過去看看。今天因為要解釋系統中可用記憶體的大小,用google看了半天,還有在cu上找了關天,竞然沒有發現有比較好的章,估計很多人都沒有注意到,懂了以後又沒有整理出來。在cu上看了很多文章說什麼memory leak和li...