作業系統記憶體管理的主要活動
記憶體管理在作業系統中扮演著重要的角色。它處理記憶體以及將程序從磁碟移動到主記憶體以執行,然後再移回磁碟。
作業系統在記憶體管理方面的一些活動包括:
記憶體分配
一種簡單的記憶體分配方法是根據需要為傳入的程序提供空閒記憶體空間。這可以使用以下演算法完成:
首位適配
分配第一個足夠大的可用記憶體空間來滿足程序的需求。搜尋可以從開頭開始,也可以從上次首位適配搜尋結束的位置開始。
最佳適配
分配最小的、足夠大的記憶體塊來滿足程序的需求。對於最佳適配演算法,除非記憶體塊按順序維護,否則需要搜尋整個塊列表。
最差適配
將最大的可用記憶體塊分配給程序。對於此演算法,除非記憶體塊按順序維護,否則也需要搜尋整個塊列表。
交換
有時,程序會被從主記憶體移到輔助儲存器中。這稱為交換。稍後,被交換出的程序可以被交換回主記憶體以執行。交換的原因之一是為其他程序騰出空間,以便它們能夠輕鬆執行。
一個說明交換過程的圖是:
程序P1被交換出,即從主記憶體移動到輔助儲存器,而程序P2被交換入,即從輔助儲存器移動到主記憶體以執行。
分頁
在計算機系統中,可以建立虛擬記憶體,其大小超過實際可用記憶體(即物理記憶體)。為此,使用了分頁的概念。
在分頁中,邏輯地址空間被劃分為頁,物理地址空間被劃分為幀。頁和幀的大小相同。程序由頁數來衡量。
現在,這些頁透過將頁儲存到幀中從邏輯地址空間被帶入物理地址空間。建立頁表來查詢哪個頁儲存在哪個幀中。
使用以下示例更清晰地解釋此概念:
上述示例的解釋如下:
- 邏輯地址是13位。其中前3位表示頁號,其餘位是頁偏移量。物理地址是12位。其中前2位表示幀號,其餘位是頁偏移量。
- 頁和幀的大小為1KW。邏輯地址空間中有8頁,物理地址空間中有4幀。
- 頁表指定頁在幀中的位置。它包含8行,每頁一行,這些行的內容是儲存該特定頁的幀。這稱為頁表項。
- 例如,在頁表第5行包含值11。這意味著第5頁儲存在物理地址空間的第3幀中。
分段
這是一種支援使用者記憶體檢視的記憶體管理技術。邏輯地址空間被劃分為一組段。這些段具有名稱和記憶體長度。因此,段地址使用其名稱、基地址和長度來指定。
邏輯地址空間中的段如下所示:
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP