Linux系統的記憶體管理

2021-10-21 17:05:26 字數 704 閱讀 2258

dos時代 - 同一時間只能有乙個程序在執行(也有一些特殊演算法可以支援多程序)

windows9x - 多個程序裝入記憶體存在問題: 1:記憶體不夠用; 2:互相打擾

1.解決記憶體撐爆問題:lru演算法:(leetcode 146題)

分頁(記憶體不夠用),記憶體中分成固定大小的頁框(4k),把程式(硬碟上)分成4k大小的塊,用到哪一塊,載入那一塊,載入的過程中,如果記憶體已經滿了,會把最不常用的一塊放到swap分割槽(交換分割槽), 把最新的一塊載入進來。

為了保證互不影響,讓程序工作在虛擬空間,程式中用到的空間位址不再是直接的實體地址,而是虛擬的位址,這樣,a程序永遠不可能訪問到b程序的空間

虛擬空間多大呢?定址空間- 64位系統 2 ^ 64,比物理空間大很多 ,單位:byte

站在虛擬的角度,程序是獨享整個系統 + cpu

虛擬記憶體內部分段,段內部分頁,需要該頁的時候載入到頁框(page frame)

問:為什麼使用虛擬記憶體?*

隔離應用程式;每個程式都認為自己有連續可用的記憶體,突破物理記憶體限制,應用程式不需要考慮物理記憶體是否夠用,是否能夠分配等底層問題

安全,保護物理記憶體,不被惡意程式訪問

線性位址通過 os + mmu(硬體 memory management unit)

缺頁中斷:需要用到頁面記憶體中沒有,產生缺頁異常(中斷),由核心處理並載入

Linux系統的記憶體管理

drop caches 的值可以是 0 3 之間的數字,代表不同的含義 0 不釋放 系統預設值 1 釋放頁快取 2 釋放dentries和inode 3 釋放所有快取 修改 echo 1 proc sys vm drop caches 代表釋放頁快取 free命令相對於top,提供了更簡潔的檢視系統...

Linux系統記憶體管理簡介

linux記憶體管理之物理空間 linux核心中有個全域性變數mem map,指向乙個page資料結構的陣列,每個page資料結構代表著乙個物理頁面,整個資料就代表著系統中的全部物理頁面。頁表項的高20位對於軟體和mmu硬體有著不同的意義。對於軟體,這是乙個物理頁面的序號,將這個序號用作下標就可以從...

linux記憶體管理 夥伴系統演算法

分配記憶體 釋放記憶體 兩個塊的大小相同 兩個塊的位址連續 兩個塊必須是從同乙個大塊分離出來的 linux把每個zone分成max order個free area,每個free are的大小是2的冪次方。max order的值為11,第0組大小為2 0個頁,第1組大小為2 1個頁,依次類推,最大的是...