1. 程式人生 > >3.作業系統如何管理實體記憶體

3.作業系統如何管理實體記憶體

  • 計算機體系結構/記憶體分層體系
  • 地址空間 & 地址生成
  • 連續記憶體分配

3.1 計算機體系結構/記憶體分配體系

  • 計算機體系結構
  • 記憶體分層體系
  • 在作業系統的記憶體管理範例
計算機基本硬體結構
CPU完成了對整個程式或軟體執行的控制, 記憶體主要是放置了程式的程式碼和它所處理的資料,第三部分是外設配合程式發揮更大的作用。
記憶體的層次結構:CPU要訪問的資料或指令所儲存的位置; CPU要訪問的資料包含很多種類,第一個是暫存器,第二個是cache ,暫存器和cache都位於CPU的內部,作業系統無法對其直接進行管理,但是他們的速度很快,容量很小,所以能放的資料和指令是有限的,所以在計算機內還需要一塊很大的儲存區域,叫主存或實體記憶體。


作業系統要完成的任務

在作業系統中管理記憶體的不同方法:

  • 程式重定位
  • 分段
  • 分頁
  • 虛擬記憶體
  • 按需分頁虛擬記憶體
實現高度依賴於硬體
  • 必須知道記憶體架構
  • MMU(記憶體管理單元):硬體元件負責處理CPU的記憶體訪問請求

3.2 地址空間與地址生成

地址空間&地址生成
  • 地址空間定義
  • 地址生成
  • 地址安全檢查
地址空間 地址空間有兩種,一種是實體地址空間(硬體直接對應的,比如說記憶體條所代表的主存,硬碟所代表的另一種儲存空間),實體記憶體的地址空間管理是硬體所完成的;另外一種是邏輯地址空間,是指一個執行的程式它所看到的記憶體空間,它看到的空間更加簡單,它是一個一維的線性地址空間。  程式所訪問的邏輯地址空間都會落實到實體地址空間。

邏輯地址生成
實體地址生成
地址安全檢測
3.3 連續記憶體分配:記憶體碎片與分割槽的動態分配 (1)連續記憶體分配
  • 記憶體碎片問題
  • 分割槽的動態分配:第一適配;最佳適配;最差適配;
  • 壓縮式碎片整理
  • 交換式碎片整理
記憶體碎片問題
分割槽的動態分配
首次適配
首次適配的基本原理和實現 簡單實現 需求:按地址排序的空間塊列表;   分配需要尋找一個合適的分割槽;
  重分配需要檢查,看是否自由分割槽能合併於相鄰的空閒分割槽; 首次適配的優勢:簡單;易於產生更大空閒塊,向著地址空間的結尾。 劣勢:容易產生外部碎片;不確定性。 最優適配 基本原理和實現:  為了避免分割大空閒塊;
為了最小化外部碎片產生的尺寸; 需求:  按尺寸排列的空閒塊列表
分配需要尋找一個合適的分割槽 重分配需要搜尋及合併於相鄰的空閒分割槽 優勢:  當大部分分配是小尺寸時非常有效; 比較簡單; 劣勢:  外部碎片;
重分配慢; 易產生很多沒用的細小碎片; 最壞適配: 基本原理和實現:  為了避免有太多微小的碎片;
需求:  按尺寸排列的空間塊列表;
分配很快; 重分配需要合併於相鄰的空閒分割槽,若有,然後調整空閒塊列表; 優勢:加入分配是中等尺寸效果最好; 劣勢:重分配慢,外部碎片,易於破碎大的空閒塊以及分割槽無法被分配

3.4 連續記憶體分配:壓縮式與交換式碎片整理

壓縮式碎片整理:
  • 重置程式以合併孔洞
  • 要求所有程式是動態可置的
  • 議題:
 何時重置?
開銷