操作系統3-內存管理(段式存儲管理)

操作系統3-內存管理(段式存儲管理)

4 段式存儲管理

4.1 段式存儲的思想

頁式存儲僅僅考慮了程序的長度,可以使一個程序可以不連續地加載內存,但是沒有考慮程序的邏輯結構。一個程序在加載內存時,其不同部分的訪問權限是不一樣的。比如程序部分可以多個進程共享,無法修改。而數據部分可以修改,只能由一個進程獨佔。

  1. 分段

    在分段存儲管理方式中,段是一組邏輯信息組合。例如把作業按邏輯關係加以組織,劃分成若干段,並按這些段來劃分內存,這些段可以是主程序段MAIN,子程序段X、數據段D和堆棧段S等。加載內存時,段與段之間可以是不連續的。一個操作數的邏輯地址由段號s和段內偏移量w組成。

  2. 段表

    系統為每個進程建立了一張表,每個段都有一個表項。其中記錄了段號、段長、內存始址和存取控制。內存始址即該段在內存中的起始地址。

  3. 地址變換機構

    為了實現重定位,在系統中設置了段表寄存器,用於存放段表的起始地址和段表長度TL。段表存放在內存中。段表的地址變換與頁表的地址變換類似,在此略過。

4.2 段頁式存儲管理

段頁式存儲管理吸取了分頁式和分段式的優點,是現在應用比較廣泛的一種存儲方式。

段頁式存儲的基本思想:

  1. 採用分頁式存儲管理的方式將內存劃分為一些大小相等的物理塊。
  2. 邏輯空間採用分段式的方式按程序的邏輯關係把進程的地址空間分成若干邏輯段。
  3. 段內分頁。將每個邏輯段按頁式存儲管理的方式分為一些大小相等的邏輯頁,其大小等於內存塊大小。在每個段內,從0開始連續地編號。
  4. 邏輯結構地址。一個邏輯地址由段號s、段內頁號p和頁內地址d構成。
  5. 內存分配。內存以物理塊為單位分配給每個進程。
  6. 段表、頁表和段表地址寄存器。系統為每個進程或作業建立一個段表,在每一段內建立一個頁表。

你可能感兴趣的:(操作系統3-內存管理(段式存儲管理))