Address Binding
- 連結與重定位
- Dynmaic Linking: 在執行期間連結
- Overlay: 不會同時被呼叫,就將程式放入相同位置
Logical and Physical Address space
- Executable Module: Relative Address,並且它的 Address Space 為 Logical Address Space
- 擺入 Physical Address Space 之後,使用的地址是 Physical Address
透過 Reloaction Register 或 Memory Management Unit 映射到實體地址
Swap out and Swap in
Swapping 提供機制緩解主記憶體不足的問題
- Swap In: Roll In, Memory <- Disk
- Swap Out: 或 Roll Out, Memory -> Disk
Memory Management
Strategies
- Fetch Strategies: 判斷必須佔有主記憶體的程式,根據各種排程器決定佔有主記憶體的程式
- Demano fetch
- Anticipatory fetch
- Placement Strategies: 分配未使用的空間並且加載程式
- Replacement Strategies
Storage Placement Strategies
- First fit: 由前依序找出第一個可用的未使用段落
- Best fit: 找到最相近的斷落載入
- Worst fit: 找到最大的斷落載入
Storage Allocation
- Contiguous Storage Allocation: 必須有連續的記憶體
- Real storage: 受限於主記憶體大小
- Non Contiguous Storage Allocation: 多個 Block 不必連續
- Virtual Memory:: 以 Block 的方式擺入記憶體
- 透過一種映射方式到主記憶體
Virtual and Real Memory
- Real
- Single Partition:
- 剩餘空間擺放 User Program
- 不完全使用記憶體
- Process 等待 I/O
- 被 Main memory 大小限制
- Fixed Partition
- Absolute: 載入到固定段落
- Relocatable: 可任意載入空段落
- Variable Partition: Compaction or no compaction
- 按照程式大小做分割記憶體
- Single Partition:
- Virtual
- Damand Paging
- Demand Segment
- Combine Paging Segment
Fragmentation
程式分散未使用空間多,導致無法載入程式
- Coalescing Holes: 相鄰段落區間的未始用段落
- External Fragmentation:
- 分配段落外部的間隔導致的問題
- 透過緊湊變動分割法解決
- 透過分頁法解決
- Internal Fragmentation: 程式小於段落的時未使用的空間浪費導致的問題
- Chunk Fragmentation: 很少被用到的段落程式
非緊湊 Variable Partition 問題
- External Fragmentation
- 尚未使用的空間不一定可容納程式
- Chunk Fragmentiation
Relocatable Partition
集中程式在記憶體的一邊,使最大化未使用空間
- Storage Compaction
- Garbage Collection
重定位分割法優缺點
- 優點
- 未使用空間較大
- Solved External Fragmentation
- 缺點
- 整理時花費效能,需要硬體加速
- 記憶體中程式與資料可能可能不被使用 (Internal F. ?)
分頁法
- 輔助記憶體程式切成多個 Page
- 主記憶體切成多個 Page Frame ,可以放入多個 Page
運作模式
- 程式執行時查詢第一頁
- 執行程式其他部份查詢其他頁框
- Page Fault: 分頁不再主記憶體,找到未使用的頁框載入分頁
- Page Replacement: 發生在所有頁框被用完時
特性
- 無 External Fragmentation,能夠消除該問題
- 大定址虛擬空間
- 程式不用完全載入主記憶體
- 有 1 / 2 的 Internal Fragmentaion
- 4KB 或 2KB ,每頁
- Associative Mapping: Page Number 作為 Search Key, Memory Cycle 中找到 Frame Number
Translation Look-aside Buffer (TLBs)
- 硬體快取
分段法
- 按照 Logical Function 切成 Segmentation ,使區段大小是 Variable
- 只需載入使用到的區段
- 類似 Relocatable Partition
Operating System