主記憶體:配置、連結與分段
連續配置(contiguous allocation)
想像在一張長宴會桌前安排一個個家庭就座,每個家庭都必須坐在一連串不間斷的椅子上。一個四口之家需要四張相鄰的空椅——不是這邊兩張、那邊兩張。連續配置就是把這條規則套用在記憶體上:每個行程拿到的是單一、不間斷的一整塊實體 RAM,從某個起始位址到它的大小,連成一片。
具體來說,在最早的方案裡,記憶體被分成作業系統區與使用者區,而每個行程取得那個使用者區裡的一整塊連續區塊。硬體只需要每個行程一組基底與界限暫存器來重定位並保護它。有兩種型式。固定(靜態)分割把記憶體切成一組預設大小的槽;行程被丟進一個大到足以容納它的槽。可變(動態)分割沒有預設的槽:作業系統保有一張空洞(空閒連續段)清單,並為每個新行程切出剛好它需要的大小,留下一個較小的空洞。隨著行程來來去去,空閒記憶體變成一塊塊空洞拼湊而成。
為什麼重要:連續配置很簡單、硬體又便宜(只要基底與界限),所以它最早出現,至今仍見於簡單的嵌入式系統。但由於每個行程都必須塞進一整段連續空間,它深受碎裂之苦——空閒記憶體最後散落成一塊塊小到無法使用的片段,即使總空閒量綽綽有餘。正是這一個弱點,催生了動態適配策略、緊縮,以及最終的分頁。
記憶體有 100 KB、30 KB、60 KB 的空閒空洞。一個新的 90 KB 行程需要一整段連續空間,所以只有那個 100 KB 的空洞能容納它——即使別處有 30 + 60 = 90 KB 的空閒,也無法使用,因為它們不連續。
「必須是一整塊」這條規則,正是讓散落的空閒記憶體變得無法使用的原因。
連續配置要求每個行程佔據一整塊連續區塊,這直接導致外部碎裂。分頁後來移除了這個要求,這正是它最大的優點。
又称
另见