終於來到作業系統與 CPU 的最後一個筆記 ᕦ(ò_óˇ)ᕤ,本篇的學習目標是
目標:了解記憶體分配與虛擬化應用
在作業系統中,記憶體管理是非常重要的一環。由於物理記憶體有限,系統需要有效地分配與管理資源,確保應用程式能正常運作,同時避免資源浪費與衝突。
邏輯記憶體與實體地址 (Logical Memory & Physical Address)
1. 邏輯地址 (Logical Address)
2. 實體地址 (Physical Address)
- 記憶體單元的實際地址,對應於實體記憶體(如 RAM)。
3. 地址轉換:Page Table & MMU
- Page Table (頁表):
就像 電影座位分配系統的資料庫,記錄了每位乘客的座位號碼與實際的座位位置。當有人選位時,系統檢查資料庫,確認是否有空位可分配。 - Memory Management Unit (MMU):
就像引導人員,當你進到電影院時時,它會根據系統的分配結果,即時將你引導到正確的座位。 - 如果有臨時變動,它會即時重新調整,並將你導引到新的位置。
為什麼需要邏輯記憶體 (Logical Memory)?
- 提供應用程式的簡單視角
- 引入 邏輯記憶體,應用程式只需與簡單的虛擬地址打交道,不需知道資料實際儲存的位置。
- 比喻: 就像訂機票時選擇座位,你只需選擇「邏輯上的座位號碼」,不用操心飛機上的實際空位如何安排。
2. 支援多工處理 (Multitasking)
- 每個應用程式都擁有獨立的邏輯記憶體區域,作業系統負責將這些區域對應到實體記憶體,避免相互干擾。
4. 支援記憶體擴充 (虛擬記憶體管理)
- 問題: 當應用程式需要的記憶體超過實體記憶體時,系統必須想辦法解決。
- 邏輯記憶體可以超過實體記憶體的容量,作業系統會啟用虛擬記憶體技術,將不常用的資料暫存到硬碟,並動態調整記憶體配置。
2. 分段與頁面管理 (Segmentation and Paging)
比喻:圖書館與書架管理
當作業系統管理記憶體空間時,必須決定如何分配應用程式所需的空間。以下用圖書館書架的比喻來解釋兩種常見的管理方式:
(1) 分段管理 (Segmentation)
- 場景:
- 想像圖書館的書架分成固定的「段」,每個段用來放完整的書集。
- 如果某個書集需要 5 個空間,但目前書架上只有兩個空格和三個空格分開的位置,即使加起來是 5 個空間,也無法放進書集,因為分段管理不允許分割。
- 應用:
- 例如:一個簡報程式需要 5 個單位,但系統只剩下兩個和三個分開的空間,因此無法啟動。
Segmented, Paged and Virtual Memory
優點: 更容易管理大型應用程式,資料邏輯結構清晰。
缺點: 空間分散容易產生「記憶體碎片 (Fragmentation)」。
(2) 頁面管理 (Paging)
比喻:拆散的圖書館書籍
- 場景:
- 如果圖書館允許將一本書拆成多個部分,儲存在不同的書架空格中,只要書目索引 能記錄每個部分的位置,就能正確找到整本書。
- 例如:簡報程式需要 5 個單位,即使記憶體只剩下分散的空格,如兩個和三個單位的空間,也可以分開存放,並由 頁表 (Page Table) 記錄資料的位置。
- 應用:
優點: 更有效利用記憶體,幾乎不會浪費空間。
缺點: 頁表管理複雜,可能產生額外的處理時間。
3. 虛擬記憶體管理 (Virtual Memory Management)
當實體記憶體 (RAM) 不夠用時,作業系統會啟用虛擬記憶體,將不常用的資料暫時存到硬碟中,騰出空間給更急需的應用程式。
比喻:後台應用管理
場景:手機的應用程式管理
- 如果你同時打開了多個應用程式,手機的記憶體可能不夠。
- 作業系統會將不常用的應用程式「暫存到後台」,即存到硬碟中,讓 RAM 空出來。
- 當你切回這些應用程式時,系統會將它們 重新載入 (Page In)。
警告:磁碟風暴 (Disk Thrashing)
- 如果系統記憶體不足,頻繁地將資料從 RAM 存到硬碟,或從硬碟載回 RAM,系統效能會大幅下降,這種狀況稱為 磁碟風暴。
4. 虛擬記憶體與容器技術 (Virtual Memory & Containers)
比喻:雲端遊戲伺服器資源分配
當遊戲伺服器需要支援多個玩家或應用程式時,虛擬化技術會將伺服器資源分成多個「虛擬機 (VM)」或「容器 (Containers)」。
虛擬機 (VM) (這部分我還需要查資料,還是不太熟)
- 搬整個作業系統
- 伺服器將一整個虛擬作業系統分配給某個應用程式。
- 就像擁有自己的 遊戲機主機,能完整控制,但需要更高的資源與效能支援。
容器 (Containers)
- 比喻:遊戲伺服器內的專屬房間
- 容器只分配應用程式運行所需的基本資源,類似「遊戲伺服器的專屬房間」,節省資源,且啟動快速。
左邊是整個作業系統,右邊 container 只有應用程式
參考影片及圖片來源:
Virtual Machines vs Containers