作業系統的段機制與頁機制

  • 2020 年 3 月 12 日
  • 筆記

段的引入是解決「 地址匯流排的寬度一般要大於暫存器的寬度 」這個問題。

8086的分段定址,是指一個物理地址由段地址(segment selector)與偏移量(offset)兩部分組成,長度各是16比特。其中段地址左移4位(即乘以16)與偏移量相加即為物理地址。例如,06EFh:1234h,表示段地址為06EFh,偏移量為1234h,物理地址為06EF0h + 1234h = 08124h。在計算物理地址時如果發生上溢出,8086處理器捨棄進位。例如,FFFFh:0010h所對應的物理地址為00000h.

實模式: 是 段地址+偏移量 的方式,得到物理地址,進而定址。

保護模式: 不允許通過段暫存器取值得到段的起始地址,而是把虛擬地址轉進一個 MMU 的硬體,經過額外的轉換和檢查,進而得到一個物理地址。

段機制拋開了實際物理記憶體的大小,從抽象層面提供給開發人員更大的線性空間進行程式開發。但物理記憶體如果不足時的情況仍需解決。

它通過將 物理記憶體空間 和 線性地址空間 分成若干相等的頁。(一般都為4KB)。這樣整個程式就不需要連續存放在物理記憶體中,更可以按需把頁面調進記憶體,而不需要把整個線性地址空間載入到記憶體中。正如你將會看到的,這種機制十分巧妙又實用。