普考-資訊處理計算機概要109 年第 18 題單選題
核心程序(Kernel Process)所需記憶體的分配與管理,通常是採取夥伴系統(Buddy System)或平板分配(Slab Allocation)演算法。下列敘述何者錯誤?
A夥伴系統之記憶體分配與收回是以核心物件(Kernel Object)為單位正確答案
B夥伴系統中分配給一個核心程序的實體記憶體是連續的實體空間
C平板分配的實體記憶體利用率與處理速度均優於夥伴系統
D夥伴系統會產生內部碎裂(Internal Fragmentation)
A正確答案
夥伴系統以 2 的次方頁框為單位分配;以核心物件為單位的是 Slab Allocation。
為什麼答案是 A
錯誤敘述(即本題要選的答案)。夥伴系統是以 2 的次方大小的連續頁框(Page Frame)為分配單位,而非核心物件。以核心物件為單位的是 Slab Allocation,題目故意把兩者特性對調。
載入中…
完整詳解
Pro · 無限重點 夥伴系統以 2 的次方頁框為單位分配;以核心物件為單位的是 Slab Allocation。
看到「核心物件為單位」→ Slab 的特色,不是 Buddy!
逐選項分析
A✓ 正確
錯誤敘述(即本題要選的答案)。夥伴系統是以 2 的次方大小的連續頁框(Page Frame)為分配單位,而非核心物件。以核心物件為單位的是 Slab Allocation,題目故意把兩者特性對調。
B✕
正確。夥伴系統將記憶體切成 2^n 大小的區塊,分配給核心程序的必定是一段連續的實體空間,這也是它被選用於核心的原因(DMA 需要連續實體記憶體)。
C✕
正確。Slab Allocation 為常用核心物件預先建立快取池,省去反覆初始化成本,能減少碎裂、加快配置速度,整體利用率與處理速度優於 Buddy System,這也是 Linux 核心採用它的理由。
D✕
正確。夥伴系統只能分配 2 的次方大小區塊,若需求為 33KB 卻必須分配 64KB,多出的 31KB 無法使用,即產生內部碎裂(Internal Fragmentation)。
Buddy System vs Slab Allocation
| 比較項目 | 夥伴系統 Buddy | 平板分配 Slab |
|---|
| 分配單位 | 2^n 個連續頁框 | 核心物件 (Kernel Object) |
| 碎裂問題 | 有內部碎裂 | 幾乎無碎裂 |
| 處理速度 | 較慢(需切割/合併) | 快(預先建好快取) |
| 典型用途 | 大塊連續記憶體、DMA | 頻繁建立/銷毀的小物件 |
A 選項把 Slab Allocation 的特徵(以核心物件為分配單位)硬套在 Buddy System 身上。兩者常一起考,記憶訣竅:Buddy 管「頁框」,Slab 管「物件」,Slab 是架在 Buddy 之上的第二層快取機制。