進程管理回顧 基本方法: 用戶進程最大記憶體640K。 問題:記憶體過小,如果應用程式需要更多記憶體怎麼辦 解決方案:overlay。僅載入當前必須的代碼和數據。 問題:P1, P2都在運行,P1需要申請更多記憶體,但記憶體已經用完 解決方案:swap(將P2臨時交換到外存)。缺點:磁碟傳輸導致swap成本極 ...
- 進程管理回顧
- 本質:操作系統內核對物理CPU的虛擬,讓每個進程以為自己獨占了CPU。
- 類似的:記憶體管理的目的是提供一個虛擬介面,讓每個進程以為自己獨占了RAM。
- 基本方法:
- 單用戶,單任務:MS-DOS
- 用戶進程最大記憶體640K。
- 問題:記憶體過小,如果應用程式需要更多記憶體怎麼辦
- 解決方案:overlay。僅載入當前必須的代碼和數據。
- 多任務
- 問題:P1, P2都在運行,P1需要申請更多記憶體,但記憶體已經用完
- 解決方案:swap(將P2臨時交換到外存)。缺點:磁碟傳輸導致swap成本極高。
- 重定位問題
- 源程式變成進程:源碼 -> 目標文件 -> 可執行文件 -> 進程
- 概念:可執行文件(鏈接器實現地址綁定)使用地址為相對地址(邏輯地址),而進程需要絕對地址(物理地址)。
- 實現:記憶體管理單元(MMU)負責將邏輯地址和載入地址結合成物理地址。
- 記憶體保護問題
- 概念:保護進程記憶體不被其他進程訪問或破壞。
- 實現:MMU實現,在重定位之前檢查limit register是否大於邏輯地址。
- 記憶體分配問題
- 概念:管理記憶體的分配和回收。即動態記憶體分配問題。
- 可分配的記憶體空間:hole。分配記憶體則分配hole,回收記憶體則回收hole,涉及hole的合併。
- 外部碎片:分配回收導致較小的記憶體碎片 -> 解決方案:分配hole的策略(首次適應,最佳適應,最壞適應)
- 內部碎片:記憶體分塊分配,導致分配給進程的記憶體大於進程所需,導致的碎片。