3.3 存儲器管理
3.3.1 存儲管理概述
問題的提出:
n 計算機處理的數據和程序都是存放在外存中,使用時才調入內存。
n 調入內存過程中如何分配存儲空間?
n 多個程序的存儲空間怎樣分配?
n 在小內存中能否運行大程序?
n 同一程序多次裝入內存其地址相同嗎?即如何解決程序的重定位問題?
n 怎樣解決存儲保護?
(1)存儲器管理的功能
主要有4個功能:
n 存儲分配。按分配策略和算法分配主存空間;
n 地址變換。將程序在外存中的邏輯地址轉換為在內存中的物理地址;
n 存儲保護。保護各類程序(系統的、用戶的、應用程序的)及數據區免遭破壞;
n 存儲擴充。解決在小的存儲空間中運行大程序的問題,即虛擬存儲問題。
(2)存儲分配
n 直接分配 在源程序中直接使用主存的物理地址。對用戶要求高、使用不方便、易出錯。早期計算機系統中使用。
n 靜態分配 在裝入內存前,一次性說明程序所需要的地址空間。確定後在整個程序執行過程中不再改變。簡單、利用率低、難於實現多道程序對資源的共享。
n 動態分配 在程序被裝入主存或在執行過程中,才確定其存儲分配。管理復雜、但利用率高,容易實現主存的資源共享。
在現代操作系統中,主要采用動態分配方式。
(3)地址變換
由源程序中的符號名空間→目標程序的邏輯地址空間→主存中的物理地址空間。
(4)存儲保護
n 內存中存放了各類程序。為確保它們在各自的存儲區內獨立運行,互不干擾,系統必須提供安全保護功能。
n 用“分隔法”把各類程序使用區域隔開,使得各類程序之間不可能發生有意或無意的損害行為。
n 存儲區域劃分為:用戶區域和系統區域
(5)存儲擴充
如何在有限的主存空間中,處理大於主存的程序。
擴充主存常用的有效方法:
ü “自動覆蓋”技術:采用分段方法,將大的程序劃分為在主存中可以容納的獨立的邏輯段。每次只調入其中的一段進行處理。後調入的程序使用前面程序使用過的存儲空間。
ü &