查段表

查段表

在分段式存儲管理系統中,每個進程或程式都有一個或多個邏輯段,為使程式或稱進程能正常運行,亦即,能從物理記憶體中找出每個邏輯段所對應的位置,在系統中為每個進程建立一張段映射表,簡稱段表。查段表是指進程需要訪問程式段的記憶體地址時,通過查閱段表中段長和基址來確定訪問是否越界。

基本介紹

  • 中文名:查段表
  • 外文名:segment table look-up
  • 學科:計算機
  • 作用:訪問是否越界
  • 有關術語:段表
  • 發生時間:訪問記憶體物理地址
簡介,分段,分段存儲管理,

簡介

為了實現從進程的邏輯地址物理地址的變換功能,在系統中設定了段表暫存器,用於存放段表始址和段表長度TL。在進行地址變換時,系統將邏輯地址中的段號與段表長度TL 進行比較。若 S>TL,表示段號太大,是訪問越界,於是產生越界中斷信號;若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在記憶體的起始地址,然後,再檢查段內地址 d 是否超過該段的段長 SL。若超過,即 d>SL,同樣發出越界中斷信號;若未越界,則將該段的基址 d 與段內地址相加,即可得到要訪問的記憶體物理地址,這個過程可以稱做查段表。每個段在表中占有一個表項, 其中記錄了該段在記憶體中的起始地址(又稱為 “基址” )和段的長度。

分段

在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程式段 MAIN、子程式段 X、數據段 D 及棧段 S 等,如圖所示。每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從 0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由於是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。分段地址中的地址具有如下結構:
分段分段
在該地址結構中,允許一個作業最長有 64 K 個段,每個段的最大長度為 64 KB。分段方式已得到許多編譯程式的支持,編譯程式能自動地根據源程式的情況而產生若干個段。例如,Pascal 編譯程式可以為全局變數、用於存儲相應參數及返回地址的過程調用棧、每個過程或函式的代碼部分、每個過程或函式的局部變數等等,分別建立各自的段。類似地,Fortran 編譯程式可以為公共塊(Common block)建立單獨的段,也可以為數組分配一個單獨的段。裝入程式將裝入所有這些段,並為每個段賦予一個段號。

分段存儲管理

分段存儲管理的基本原理是:按程式的邏輯結構,以段為單位劃分,各個段的長度因程式而異。為了說明邏輯段的各種屬性,系統為每一個段建立一個段表(駐留在記憶體),記錄段的若干信息,如段號、段起點、段長度和段裝入情況等。CPU通過訪問段表,判斷該段是否已調入主存,並完成邏輯地址與物理地址之間的轉換。
邏輯地址由段號S和段內地址W組成,段號S相當於邏輯段的段名,它表示該邏輯段的起始地址。在進行地址轉換時,作業系統用S檢索段表,段表中記錄的信息1表明該段已調入主存,b是S段裝入主存的起始地址,因此該邏輯地址對應的物理地址為b+W。在分段存儲管理方式中,由於段的分界與程式的自然分界相對應,所以具有邏輯獨立性,易於程式的編譯、管理、修改和保護,也便於多道程式共享。但是,因為段的長度參差不齊,起點和終點不定,給主存空間分配帶來了麻煩,容易在段間留下不能利用的“零頭”,造成浪費。

相關詞條

熱門詞條

聯絡我們