iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
Software Development

十年後重讀作業系統恐龍本系列 第 28

ch8-解釋作業系統的記憶體和磁碟操作

  • 分享至 

  • xImage
  •  

周志遠教授的作業系統 詳細的文字整理請參考 作業系統 CH8 Memory Management

以下內容由 Claude 3.5 Sonnet 解釋作業系統的記憶體和磁碟操作。

  1. 基本組件:

    a) 實體記憶體(RAM):

    • 快速但容量有限的存儲空間
    • 用於存儲正在執行的程序和數據

    b) 虛擬記憶體:

    • 一種抽象概念,為每個程序提供看似連續的大容量記憶體空間
    • 實際上結合了實體記憶體和磁碟空間

    c) 磁碟:

    • 大容量但相對較慢的持久存儲設備
    • 用於長期存儲數據和程序

    d) 交換空間(Swap Space):

    • 磁碟上的特定區域,用作虛擬記憶體的擴展
  2. 記憶體管理:

    a) 分頁系統:

    • 將實體和虛擬記憶體劃分為固定大小的頁面
    • 通常每頁大小為 4KB 或 8KB

    b) 頁表:

    • 維護虛擬頁面到實體頁面的映射
    • 由記憶體管理單元(MMU)使用來進行地址轉換

    c) 按需分頁(Demand Paging):

    • 只有當程序需要訪問某個頁面時,才將其載入實體記憶體
    • 提高記憶體使用效率
  3. 進程執行流程:

    a) 程序載入:

    • 從磁碟讀取程序到記憶體
    • 為程序分配虛擬地址空間

    b) 執行:

    • CPU 通過虛擬地址訪問數據
    • MMU 將虛擬地址轉換為實體地址

    c) 頁面錯誤(Page Fault):

    • 當訪問的頁面不在實體記憶體中時發生
    • 觸發作業系統從磁碟加載所需頁面
  4. 交換機制:

    a) 頁面置換:

    • 當實體記憶體不足時,將不常用的頁面移到交換空間
    • 使用頁面置換算法(如 LRU、Clock 算法)決定哪些頁面被置換

    b) 頁出(Page-out):

    • 將頁面從實體記憶體寫入交換空間

    c) 頁入(Page-in):

    • 將頁面從交換空間讀回實體記憶體
  5. 檔案系統操作:

    a) 緩存機制:

    • 使用部分實體記憶體作為檔案系統緩存
    • 加速檔案讀寫操作

    b) 寫回(Write-back):

    • 修改的數據首先寫入緩存
    • 稍後再批量寫入磁碟,提高效率

    c) 預讀(Prefetching):

    • 預測並提前讀取可能soon需要的數據到記憶體
  6. 記憶體保護:

    • 每個進程擁有獨立的虛擬地址空間
    • 使用硬體支持(如 MMU)確保進程間的隔離
    • 防止未授權的記憶體訪問
  7. 性能優化:

    a) 記憶體壓縮:

    • 壓縮不常用的記憶體頁面,而不是將其移到交換空間

    b) 大頁面(Huge Pages):

    • 使用更大的頁面大小,減少頁表項,提高 TLB 效率

    c) NUMA(非統一記憶體訪問):

    • 在多處理器系統中優化記憶體訪問
  8. 實際運作示例:

假設您正在使用一個文字處理器編輯大型文檔:

  1. 打開程序:

    • 作業系統從磁碟讀取程序代碼到記憶體
    • 為程序分配虛擬記憶體空間
  2. 載入文檔:

    • 初始只載入文檔的一部分到記憶體
    • 其餘部分保留在磁碟上
  3. 編輯操作:

    • 當您編輯可見部分時,修改直接在記憶體中進行
    • 滾動到新部分可能觸發頁面錯誤,從磁碟載入新數據
  4. 後台操作:

    • 如果系統記憶體不足,可能會將其他不活躍程序的頁面移到交換空間
    • 文字處理器的自動保存功能可能會定期將更改寫入磁碟
  5. 保存文檔:

    • 更改首先寫入檔案系統緩存
    • 然後在適當的時機寫入磁碟

這個複雜的系統確保了高效的資源利用,提供了良好的用戶體驗,同時平衡了有限的實體資源和潛在的大量數據需求。作業系統不斷在速度(記憶體訪問)和容量(磁碟存儲)之間尋找最佳平衡,以提供流暢的計算體驗。


上一篇
ch7-死結,忽略就對了
下一篇
ch9-向高中生介紹虛擬記憶體管理
系列文
十年後重讀作業系統恐龍本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言