3.作業系統如何管理實體記憶體
阿新 • • 發佈:2019-01-03
- 計算機體系結構/記憶體分層體系
- 地址空間 & 地址生成
- 連續記憶體分配
3.1 計算機體系結構/記憶體分配體系
- 計算機體系結構
- 記憶體分層體系
- 在作業系統的記憶體管理範例
CPU完成了對整個程式或軟體執行的控制, 記憶體主要是放置了程式的程式碼和它所處理的資料,第三部分是外設配合程式發揮更大的作用。
記憶體的層次結構:CPU要訪問的資料或指令所儲存的位置; CPU要訪問的資料包含很多種類,第一個是暫存器,第二個是cache ,暫存器和cache都位於CPU的內部,作業系統無法對其直接進行管理,但是他們的速度很快,容量很小,所以能放的資料和指令是有限的,所以在計算機內還需要一塊很大的儲存區域,叫主存或實體記憶體。
作業系統要完成的任務
在作業系統中管理記憶體的不同方法:
- 程式重定位
- 分段
- 分頁
- 虛擬記憶體
- 按需分頁虛擬記憶體
- 必須知道記憶體架構
- MMU(記憶體管理單元):硬體元件負責處理CPU的記憶體訪問請求
3.2 地址空間與地址生成
地址空間&地址生成- 地址空間定義
- 地址生成
- 地址安全檢查
邏輯地址生成
實體地址生成
地址安全檢測
3.3 連續記憶體分配:記憶體碎片與分割槽的動態分配 (1)連續記憶體分配
- 記憶體碎片問題
- 分割槽的動態分配:第一適配;最佳適配;最差適配;
- 壓縮式碎片整理
- 交換式碎片整理
分割槽的動態分配
首次適配
首次適配的基本原理和實現 簡單實現 需求:按地址排序的空間塊列表; 分配需要尋找一個合適的分割槽;
重分配需要檢查,看是否自由分割槽能合併於相鄰的空閒分割槽; 首次適配的優勢:簡單;易於產生更大空閒塊,向著地址空間的結尾。 劣勢:容易產生外部碎片;不確定性。 最優適配 基本原理和實現: 為了避免分割大空閒塊;
分配需要尋找一個合適的分割槽 重分配需要搜尋及合併於相鄰的空閒分割槽 優勢: 當大部分分配是小尺寸時非常有效; 比較簡單; 劣勢: 外部碎片;
重分配慢; 易產生很多沒用的細小碎片; 最壞適配: 基本原理和實現: 為了避免有太多微小的碎片;
需求: 按尺寸排列的空間塊列表;
分配很快; 重分配需要合併於相鄰的空閒分割槽,若有,然後調整空閒塊列表; 優勢:加入分配是中等尺寸效果最好; 劣勢:重分配慢,外部碎片,易於破碎大的空閒塊以及分割槽無法被分配
3.4 連續記憶體分配:壓縮式與交換式碎片整理
壓縮式碎片整理:- 重置程式以合併孔洞
- 要求所有程式是動態可置的
- 議題:
開銷