段界

段界

在分段式存儲管理系統中,每個進程或程式都有一個或多個邏輯段,為使程式或稱進程能正常運行,亦即,能從物理記憶體中找出每個邏輯段所對應的位置,在系統中為每個進程建立一張段映射表,簡稱段表。段界是指進程或程式一個邏輯段的界限。可以用段長欄位來判斷訪問的地址是否越出段界。

基本介紹

  • 中文名:段界
  • 外文名:segment bound
  • 學科:計算機
  • 定義:進程或程式一個邏輯段的界限
  • 有關術語:段表
  • 領域:存儲器管理
簡介,分段,共享段表,概述,共享段的分配與回收,越界檢查,分段存儲管理方式的引入,方便編程,信息共享,信息保護,動態增長,動態連結,

簡介

段界是指進程或程式一個邏輯段的界限。段界確定一個段的界限,可以動態變化。段界的基本作用是使各個分段成為一個獨立實體,方便編程和信息共享。在請求分段存儲管理方式中,段界是分段保護和共享段表的基礎。

分段

在分段存儲管理方式中,作業的地址空間被劃分為若干個段,每個段定義了一組邏輯信息。例如,有主程式段 MAIN、子程式段 X、數據段 D 及棧段 S 等,如圖 4-17 所示。每個段都有自己的名字。為了實現簡單起見,通常可用一個段號來代替段名,每個段都從 0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,因而各段長度不等。整個作業的地址空間由於是分成多個段,因而是二維的,亦即,其邏輯地址由段號(段名)和段內地址所組成。

共享段表

概述

為了實現分段共享,可在系統中配置一張共享段表,所有各共享段都在共享段表中占有一表項。表項中記錄了共享段的段號、段長、記憶體始址、存在位等信息,並記錄了共享此分段的每個進程的情況。共享段表如圖 4-34 所示。其中各項說明如下。
段界
(1) 共享進程計數 count。非共享段僅為一個進程所需要。當進程不再需要該段時,可立即釋放該段,並由系統回收該段所占用的空間。而共享段是為多個進程所需要的,當某進程不再需要而釋放它時,系統並不回收該段所占記憶體區,僅當所有共享該段的進程全都不再需要它時,才由系統回收該段所占記憶體區。為了記錄有多少個進程需要共享該分段,特設定了一個整型變數 count。
(2) 存取控制欄位。對於一個共享段,應給不同的進程以不同的存取許可權。例如,對於檔案主,通常允許他讀和寫;而對其它進程,則可能只允許讀,甚至只允許執行。
(3) 段號。對於一個共享段,不同的進程可以各用不同的段號去共享該段。

共享段的分配與回收

1)共享段的分配
由於共享段是供多個進程所共享的,因此,對共享段的記憶體分配方法與非共享段的記憶體分配方法有所不同。在為共享段分配記憶體時,對第一個請求使用該共享段的進程,由系統為該共享段分配一物理區,再把共享段調入該區,同時將該區的始址填入請求進程的段表的相應項中,還須在共享段表中增加一表項,填寫有關數據,把 count 置為 1;之後,當又有其它進程需要調用該共享段時,由於該共享段已被調入記憶體,故此時無須再為該段分配記憶體,而只需在調用進程的段表中增加一表項,填寫該共享段的物理地址;在共享段的段表中,填上調用進程的進程名、存取控制等,再執行 count :=count+1 操作,以表明有兩個進程共享該段。
2) 共享段的回收
當共享此段的某進程不再需要該段時,應將該段釋放,包括撤消在該進程段表中共享段所對應的表項,以及執行 count :=count-1 操作。若結果為 0,則須由系統回收該共享段的物理記憶體,以及取消在共享段表中該段所對應的表項,表明此時已沒有進程使用該段;否則(減 1 結果不為 0),只是取消調用者進程在共享段表中的有關記錄。

越界檢查

在段表暫存器中放有段表長度信息;同樣,在段表中也為每個段設定有段長欄位。在進行存儲訪問時,首先將邏輯地址空間的段號與段表長度進行比較,如果段號等於或大於段表長度,將發出地址越界中斷信號;其次,還要檢查段內地址是否等於或大於段長,若大於段長,將產生地址越界中斷信號,從而保證了每個進程只能在自己的地址空間內運行。

分段存儲管理方式的引入

引入分段存儲管理方式,主要是為了滿足用戶和程式設計師的下述一系列需要:

方便編程

通常,用戶把自己的作業按照邏輯關係劃分為若干個段,每個段都是從 0 開始編址,並有自己的名字和長度。因此,希望要訪問的邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的。例如,下述的兩條指令便是使用段名和段內地址:
LOAD 1,[A] |〈D〉 ;
STORE 1,[B] |〈C〉 ;
其中,前一條指令的含義是將分段 A 中 D 單元內的值讀入暫存器 1;後一條指令的含義是將暫存器 1 的內容存入 B 分段的 C 單元中。

信息共享

在實現對程式和數據的共享時,是以信息的邏輯單位為基礎的。比如,共享某個例程和函式。分頁系統中的“頁”只是存放信息的物理單位(塊),並無完整的意義,不便於實現共享;然而段卻是信息的邏輯單位。由此可知,為了實現段的共享,希望存儲管理能與用戶程式分段的組織方式相適應。

信息保護

信息保護同樣是對信息的邏輯單位進行保護,因此,分段管理方式能更有效和方便地實現信息保護功能。

動態增長

在實際套用中,往往有些段,特別是數據段,在使用過程中會不斷地增長,而事先又無法確切地知道數據段會增長到多大。前述的其它幾種存儲管理方式,都難以應付這種動態增長的情況,而分段存儲管理方式卻能較好地解決這一問題。

動態連結

動態連結是指在作業運行之前,並不把幾個目標程式段連結起來。要運行時,先將主程式所對應的目標程式裝入記憶體並啟動運行, 當運行過程中又需要調用某段時, 才將該段(目標程式)調入記憶體並進行連結。可見,動態連結也要求以段作為管理的單位。

相關詞條

熱門詞條

聯絡我們