天天看點

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

作業系統14————存儲器管理之分頁存儲

一.目錄

文章目錄

  • 作業系統14————存儲器管理之分頁存儲
      • 一.目錄
      • 二.分段存儲管理方式的引入
      • 三.分段系統的基本原理
        • 1.分段
        • 2.段表
        • 3.位址變化機構
        • 4.分段和分頁的主要差別
      • 四.資訊共享
        • 1.分頁系統中對程式和資料的共享
        • 2.分段系統中對程式和資料的共享
      • 五.段頁式存儲管理方式
        • 1.基本原理
        • 2.位址變化過程
      • 六.參考資料

二.分段存儲管理方式的引入

為什麼引入分段存儲管理方式,有兩方面原因:

  • 通常的程式都可以分為若幹個段,每個段大多都是一個相對獨立的邏輯機關。
  • 實作和滿足資訊共享,資訊保護,動态連結以及資訊的動态增長等需求,也都是以段為基本機關的。

三.分段系統的基本原理

1.分段

在分段存儲管理方式中,作業的位址空間被劃分為若幹個段,每個段定義了一組邏輯資訊。例如,有主程式段MAIN、子程式段X、資料段D及棧段S等,通常,用段号代替段名。每個段都從0開始編址,并采用一段連續的位址空間。

段的長度由相應的邏輯資訊組的長度決定,是以每個短對長度并不相等。

分段位址中位址具有的結構:

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

2.段表

類似與分頁系統,分段系統中段也是離散的分布在記憶體中,是以需也要為每個程序建立一個段映射表,簡稱段表。

每個段在表中占有一個表項,其中記錄了該段在記憶體空間的起始位址(基址)和段的長度。如下圖:

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

3.位址變化機構

為了實作程序從邏輯位址到實體位址的變換功能,在系統中設定了段表寄存器,用于存放段表始址和段表長度TL。

在進行位址變換時:

  • 系統将邏輯位址中的段号與段表長度TL進行比較。若S>TL,表示段号太大,是通路越界,于是産生越界中斷信号。
  • 若未越界,則根據段表的始址和該段的段号,計算出該段對應段表項的位置,從中讀出該段在記憶體的起始位址。
  • 再檢查段内位址d是否超過該段的段長SL。若超過,即d>SL,同樣發出越界中斷信号。
  • 若未越界,則将該段的基址d與段内位址相加,即可得到要通路的記憶體實體位址。
    作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

4.分段和分頁的主要差別

相似:

  • 兩者都采用了離散配置設定方式
  • 都是通過位址映射機構來實作位址變化

差別:

  • 頁是資訊的實體機關,分頁僅僅是為了系統管理的需求,完全是系統的行為,對使用者是不可見的。段是資訊的邏輯機關,它通常是一組意義完整的資訊,目的是更好的滿足使用者的需求。
  • 頁的大小固定且有系統決定,段的大小不定。
  • 分頁的使用者程式位址空間是一維的。分段系統中,使用者的位址空間是二維的。

四.資訊共享

分段系統的一個突出優點,是易于實作段的共享,即允許若幹個程序共享一個或者多個分段。

1.分頁系統中對程式和資料的共享

在分頁系統中,雖然也能實作對程式和資料的共享,但遠不如分段系統來得友善。例如多使用者系統中,多個程序執行一個文本編譯程式,該程式有160kb的代碼和40kb的資料區。代碼區可以共享。假設每個頁面的大小為4kb,那麼160kb的代碼将占用40個頁面,資料區占用10個頁面。為了實作代碼的共享,是以程序的40個代碼頁表項的實體塊号是21#60#。程序10個資料頁表項的實體塊号分别是61#70#,71#~80#…如下圖:

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

2.分段系統中對程式和資料的共享

在分段系統中,無論該段有多長,隻需為該段設定一個段表項。這就使分段系統實作共享變得很容易,還是一上面的文本編輯器程式為例。下圖就是分段程式共享文本編輯器的示意圖:

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

五.段頁式存儲管理方式

分頁系統以頁面作為記憶體配置設定的基本機關,能夠有效提高記憶體的使用率,而分段系統以段作為記憶體配置設定的基本機關,它能夠更好的滿足使用者多方面的需求。而段頁式系統這很好的集兩者之長。

1.基本原理

段頁式系統的基本原理是分段和分頁原理的結合,即先将使用者程式分為若幹段,再把系統分為若幹頁,為每一個段配置設定一個段明。

段頁位址結構包括三部分:段号,段内頁号,頁内位址

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

段表的内容和分段系統不同,它還包括頁表大小和頁内始址,下圖就是利用段表進行從邏輯位址到實體位址的轉變:

作業系統14————存儲器管理之分段存儲&段頁存儲作業系統14————存儲器管理之分頁存儲

2.位址變化過程

在段頁式系統中,為了便于實作位址變換,須配置一個段表寄存器,其中存放段表始址和段長TL。

進行位址變換時

  • 利用段号S,将它與段長TL進行比較。
  • 若S < TL,表示未越界,于是利用段表始址和段号來求出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址
  • 利用邏輯位址中的段内頁号P來獲得對應頁的頁表項位置,從中讀出該頁所在的實體塊号b,
  • 再利用塊号b和頁内位址來構成實體位址。
作業系統14————存儲器管理之分段存儲&amp;段頁存儲作業系統14————存儲器管理之分頁存儲

在段頁式系統中,為了擷取一條指令,需進行三次記憶體通路,即通路段表,通路頁表,通路實體塊号。為了提高運作速度,在其中增加一個高速緩沖寄存器。每次通路位址時,現在高速緩存器中查找,如果有,可直接找到實體塊。若未找到,在使用原來的三次通路,之後将該實體塊存入高速緩存器中。

六.參考資料

《作業系統 第四版》

繼續閱讀