Linux內存管理初探

    linux內存是後臺開發人員,需要深入瞭解的計算機資源。合理的使用內存,有助於提升機器的性能和穩定性。本文主要介紹linux內存組織結構和頁面佈局,內存碎片產生原因和優化算法,linux內核幾種內存管理的方法,內存使用場景以及內存使用的那些坑。從內存的原理和結構,到內存的算法優化,再到使用場景,去探尋內存管理的機制和奧祕。

一、走進 linux 內存

1、內存是什麼?

  1) 內存又稱主存,是CPU能直接尋址的存儲空間,由半導體器件製成

  2) 內存的特點是存取速率快

  

2.內存的作用

  1) 暫時存放cpu的運算數據

  2) 硬盤等外部存儲器交換的數據

  3) 保障cpu計算的穩定性和高性能

二、linux內存地址空間

1、linux內存地址空間Linux內存管理全貌

  

2、內存地址--用戶態&內核態

  • 用戶態: Ring3運行於用戶態的代碼則要受到處理器的諸多
  • 內核態: Ring0在處理器的存儲保護中,核心態
  • 用戶態切換到內核態的3種方式: 系統調用、異常、外設中斷
  • 區別: 每個進程都有完全屬於自己的,獨立的,不被幹擾的內存空間;用戶態的程序就不能隨意操作內核地址空間,具有一定的安全保護作用;內核態線程共享內核地址空間;

3、內存地址--MMU地址轉換

  • MMU是一種硬件電路,它包含兩個部件,一個是分段部件,一個是分頁部件
  • 分段機制把一個邏輯地址轉換爲線性地址
  • 分頁機制把一個線性地址轉換爲物理地址