512 words
3 minutes

作業系統Ch8 Memory Management

Intro#

  • Load program : disk -> memory
  • CPU能直接存取的只有Main memory, register
  • Memory unit : addr + read request / write request
  • Main memory可能需要很多CPU cycle : Stall
  • Cache介於Memory與Register之間

記憶體管理的目標#

  • 性能
    • 最大化利用記憶體
    • 提升存取速度
  • 保護
    • 防止越界存取
    • 保護資料
  • 靈活性
    • 動態分配
  • Responsiveness
    • Context switch

Address binding#

  • Compile-time binding
    • Logical address -> known physical address
    • Prehistoric / Embeded
  • Load-time binding
    • 程式載入memory -> 轉換physical address
    • 靜態分配
  • Run-time binding
    • 硬體支援(MMU)
    • 動態分配 + Virtual memory -> 程式可以在任意address執行

Contiguous allocation#

  • Early method
  • 通常拆成兩個partition : OS(通常在高address), 剩下的是Process
  • 每個process分配到一個segment
  • Relocation register : 防止越界存取
    • Base register : 最低address
    • Limit register : 邏輯address上界
    • MMU 動態分配邏輯地址
  • 破碎化問題
    • First-fit 或是 Best-fit
    • Internal fragment : 分配到的chunk太大
    • External fragment : 總空間可以滿足request, 但是分散掉
    • First-fit analysis : 大約 13\frac{1}{3} 的memory沒辦法使用 -> 50% rule

Paging#

Intro#

  • Process -> memory pages (4k/8k)
  • Physical -> memory page frames (4k/8k)
  • Page table
    • 對每個process建映射表
    • Access某個address時, Page table上 Page number -> Frame number
    • Page table base register : PTBR
    • Page table length register : PTLR
    • Page miss -> page fault, 從disk載入
  • Address translation
    • Logical address
      • Page number
      • Page offset
    • MMU自動做 logical address -> physical address 的轉換
  • 問題
    • Internal fragmentation
    • 位址轉換的overhead
      • 透過TLB解決, 如TLB miss才去查page table (TLB為MMU的一部分)
    • Page table占用的空間

Structure#

Types#

  • Sigle-level page table
  • Multi-level page table
  • Inverted page table : physical -> index
  • Huge pages : larger page size

Two-level paging : 對page table做paging

PTE結構#

  • Frame number : 對應page frame
  • Valid bit : 是否在main memory
  • Access bits : RWX flag
  • Dirty bit : 是否被修改過
  • Reference bit : 是否最近用過
  • 其他metadata : tag / hardware info

Shared pages#

  • Shared code
  • Libc, Ld…
  • 允許寫入 -> IPC

Swapping#

  • 把閒置的Process swap到硬碟裡面, 空出memory給新的process

    • 放入ready queue
  • 上下文切換的成本可能很高 (disk讀寫速度遠低於RAM)

Hashed page table#

  • 用於比較大的尋址空間
  • 對Page number進行hash
  • 每個hash value都維護list (解決collision)
  • 每次對Page number hash過後遍歷對應的list
作業系統Ch8 Memory Management
https://blog.cyberangel.work/posts/os-ch8/
Author
Ethan
Published at
2024-12-20
License
CC BY-NC-SA 4.0
Last updated on 2024-12-20,349 days ago

Some content may be outdated

Table of Contents