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

2021-07-06 09:41:48 字數 442 閱讀 1052

記憶體管理:

實體地址出現在cpu外部位址匯流排上的定址物理記憶體的位址訊號

執行緒位址虛擬位址在32位cpu架構下4g位址空間中的位址

邏輯位址彙編中使用的位址

20位的虛擬位址如何存入16位的暫存器中呢

分段方式來實現

邏輯段的起始位址段位址必須是16的倍數,邏輯段的最大容量是64k

實體地址= 段位址+段內偏移量

實體地址= 段暫存器的值×16 + 邏輯位址

從管理和效率的角度出發,虛擬位址被分為固定長度的組,稱為頁page

虛擬位址通過分頁管理得到實體地址。

物理頁頁框,頁幀,分頁單元將物理記憶體劃分為固定長度的管理單位,長度和虛擬位址頁是相同的。虛擬位址也和物理頁之間通過page table來對映。

linux所有的段基位址都是0,所以邏輯位址和虛擬位址相同,完全利用分頁機制來管理

記憶體管理學習筆記

1.棧 堆和靜態區 靜態區 儲存自動全域性變數和static變數 包括全域性靜態變數和區域性靜態變數 靜態區的內容在整個程式的生命週期內都存在。棧 儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式執行結束,這些內容也會自動被銷毀。其特點是效率高,但是空間大小有限。堆 由malloc系列函式或n...

Linux核心之程序管理(學習筆記)

1 支援執行緒的計算機系統裡面,程序作為資源分配的基本單位而存在,執行緒作為排程的基本單位而存在。執行緒僅擁有必不可少的一些資源,如 一組暫存器 堆疊資訊等等和其他執行緒共享同乙個程序的所有資源。所以,在同乙個程序的執行緒切換時不需要大量的儲存和恢復工作,同時由於共享同乙個儲存空間,不需要更新快表t...

object c 記憶體管理學習筆記

nsautoreleasepool pool nsautoreleasepool alloc init pool drain 這個函式可以把autoreleasepool裡的物件釋放 在for迴圈中每次都釋放記憶體池的示例 nsautoreleasepool temppool for i 0 i a...