存儲器管理是操作系統的核心功能之一,它直接關系到計算機系統的性能、穩定性和資源利用率。本章主要探討了操作系統如何高效地管理內存資源,并為上層應用和系統服務提供支持。
一、 存儲器管理的基本概念與目標
存儲器管理的核心目標是實現內存的高效、公平和安全使用。具體包括:
- 地址映射與重定位:將程序中的邏輯地址轉換為物理內存中的實際地址。這涉及靜態重定位(加載時完成)和動態重定位(運行時由硬件MMU支持)。
- 內存分配與回收:采用連續或非連續分配策略,為進程分配所需內存空間,并在進程終止后及時回收。
- 內存保護:確保每個進程只能訪問其被分配的內存區域,防止進程間相互干擾,增強系統安全性。
- 內存擴充(虛擬內存):利用外存(如硬盤)模擬更大的內存空間,通過請求調頁和頁面置換算法,實現“小內存運行大程序”。
二、 連續內存分配管理方式
主要分為單一連續分配、固定分區分配和動態分區分配。
- 動態分區分配 是重點,它根據進程的實際需求動態劃分內存。常用的分配算法有:
- 首次適應(FF):從低地址開始查找第一個足夠大的空閑區。
- 最佳適應(BF):查找能滿足要求的最小空閑區,以減少碎片。
- 最壞適應(WF):總是分配最大的空閑區,以避免產生過多難以利用的小碎片。
動態分區會產生外部碎片,需要通過“緊湊”技術來解決。
三、 非連續內存分配管理方式
為了更靈活地利用內存并減少碎片,現代操作系統普遍采用分頁和分段機制。
- 分頁存儲管理:
- 將物理內存和進程邏輯空間均劃分為固定大小的“頁框”和“頁面”。
- 優點:有效減少外部碎片,管理簡單;缺點:存在內部碎片,且單級頁表可能占用過大內存。
- 分段存儲管理:
- 按照程序的邏輯結構(如主程序、子程序、數據段)將進程空間劃分為若干段。
- 優點:便于代碼共享和保護,符合程序員的直觀視角;缺點:容易產生外部碎片。
- 段頁式存儲管理:結合分段和分頁的優點,先分段,段內再分頁。既保留了邏輯清晰性,又提高了內存利用率,但地址變換過程更復雜。
四、 虛擬內存技術
虛擬內存是存儲器管理的升華,它使得進程可用的邏輯地址空間遠大于實際物理內存。
- 核心思想:將當前需要的部分頁面裝入內存,其余保留在磁盤的交換區(如頁面文件)中。
- 關鍵實現:
- 請求調頁:當訪問的頁面不在內存時,由硬件產生缺頁中斷,操作系統介入將其從磁盤調入。
- 頁面置換:當需要調入新頁面而內存已滿時,需要選擇一個舊頁面換出。常用算法包括:
- 最佳置換(OPT):理論最優,選擇未來最長時間不被訪問的頁面,但無法預知。
- 先進先出(FIFO):選擇最早進入的頁面,可能淘汰常用頁,存在Belady異常。
- 最近最久未使用(LRU):選擇最長時間未被訪問的頁面,性能接近OPT,但實現開銷較大。
- 時鐘置換(CLOCK):LRU的近似算法,通過使用位和循環掃描,在開銷和效果間取得平衡。
- 影響性能的關鍵因素:缺頁率。工作集模型和頁面分配策略(固定/可變分配,局部/全局置換)用于優化性能。
五、 存儲器管理與計算機系統服務
高效的存儲器管理是眾多系統服務得以穩定、高效運行的基石:
- 進程管理與調度服務:內存管理為進程創建提供空間,其效率直接影響進程切換和上下文切換的速度。
- 文件系統與I/O服務:文件讀寫操作常涉及緩沖區(在內存中)的管理。虛擬內存的頁面交換也直接與磁盤I/O交互,內存管理策略深刻影響著I/O性能。
- 系統安全與保護服務:通過內存保護機制(如頁表/段表中的保護位),防止用戶進程非法訪問內核空間或其他進程空間,構成了系統安全的第一道防線。
- 共享庫與動態鏈接服務:分頁和分段機制使得多個進程可以共享同一份代碼(如系統庫),節省了大量內存。
- 高速緩存服務:內存本身可視為磁盤的高速緩存。操作系統的緩存管理策略(如頁緩存)優化了數據的訪問速度。
六、
存儲器管理是連接硬件資源與軟件應用的橋梁。從基礎的連續分配到先進的虛擬內存,其演進始終圍繞著提升利用率、保證性能、簡化編程和增強安全的目標。理解其原理,不僅有助于掌握操作系統的核心,也為分析和優化整個計算機系統的服務性能提供了關鍵視角。在實際系統中,這些管理策略往往協同工作,共同支撐起高效、可靠的運算環境。