《作業系統的儲存結構》一文講過,記憶體是現代計算機系統執行的中心。
記憶體是一個大的位元組陣列,大小從數十萬到數十億。每個位元組都有地址。記憶體是個快速存取的資料倉儲,並為 CPU 和 I/O 裝置所共用。中央處理器在獲取指令週期時從記憶體中讀取指令,而在獲取資料周期時對記憶體資料進行讀寫(在馮•諾依曼架構上)。
記憶體一般是 CPU 所能直接定址和存取的、唯一的、大容量的記憶體。例如,如果 CPU 需要處理磁碟資料,那麼這些資料必須首先通過 CPU 產生的 I/O 呼叫傳到記憶體。同樣,如果 CPU 需要執行指令,那麼這些指令必須在記憶體中。
如果一個程式需要執行,那麼它必須對映到絕對地址,並且載入到記憶體。隨著程式執行,進程可以通過產生絕對地址來存取記憶體的程式指令和資料。最後,程式終止,它的記憶體空間得以釋放,這樣下一個程式可以載入並得以執行。
為改進 CPU 的利用率和使用者的計算機響應速度,通用計算機應在記憶體中保留多個程式,這就需要
記憶體管理。記憶體管理的方案有許多。這些方案會有各種具體方法,所有特定演算法的效率取決於特定情景。在選擇某個特定系統的記憶體管理方案時,必須考慮許多因素,尤其是系統的硬體設計。每個演算法都要求特定的硬體支援。
作業系統負責記憶體管理的以下活動:
-
記錄記憶體的哪部分在被使用以及被誰使用;
-
決定哪些進程(或其部分)會調入或調出記憶體;
-
根據需要分配和釋放記憶體空間;