標籤:

主存管理 | 段式存儲管理方式

什麼是段

分段是程序中自然劃分的一組邏輯意義完整的信息集合。

分段的例:代碼分段、數據分段、棧段頁。

程序地址空間

由若干個邏輯分段組成,每個分段有自己的名字,對於一個分段而言,它是一個連續的地址區。

段式地址結構

  • 程序地址構成(s, w)
  • s –– 段號
    • 根據段號可以確定唯一的段。在段內找相應的偏移量,就可以確定一個位置了。
  • w –– 段內位移
    • 與分頁系統的頁內偏移量具有不同的地方:
    • 分頁系統的頁內偏移量的位數決定了頁的大小。如12位的偏移量就是2^12=4KB。
    • 段內位移的位數不能來被用來推斷出段的大小。段是有編譯器編譯之後產生的,不能由在寫程序的時候和編譯的時候認為的控制其長度。段的長度由編譯結果來決定,不能規定其長度的確切值。但是其具有一個上限,根據段內位移的位數來決定的,如果是16位,則段的最大長度就是2^16=64KB。

段式地址變換

段式地址步驟

  • 取出程序地址(s,w);
  • s與總的段數量進行比較:如果只有5個段,則s不能超過4,否則越界。
  • 用s檢索段表;
  • 如w<0或w≥L則主存越界; (在段式存儲管理中總共有兩次越界檢查)
  • (B+w)即為所需主存地址

首先,根據段號去搜尋段表可以得到段長和基址兩部分的信息。將基址和偏移量相加就可以真正要訪問的主存的物理地址了。


推薦閱讀:

windows為何不收購everything等第三方優秀的工具集成在自己的系統當中以改進自己某方面系統功能的弱勢?
Linux性能分析工具
蘋果操作系統適用什麼人群?
操作系統 向內核邁進(四)
什麼是KMS

TAG:操作系統 |