複製鏈接
請複製以下鏈接發送給好友

段式存儲管理

鎖定
段式管理(segmentation),是指把一個程序分成若干個段(segment)進行存儲,每個段都是一個邏輯實體(logical entity),程序員需要知道並使用它。它的產生是與程序的模塊化直接有關的。段式管理是通過段表進行的,它包括段號或段名、段起點、裝入位、段的長度等。此外還需要主存佔用區域表、主存可用區域表。
中文名
段式存儲管理
外文名
segmentation
進行手段
段表
產    生
與程序的模塊化直接有關
優    點
可以充分實現共享和保護

段式存儲管理原理

為了進行段式管理,每道程序在系統中都有一個段(映象)表來存放該道程序各段裝入主存的狀況信息。段表中的每一項(對應表中的每一行)描述該道程序一個段的基本狀況,由若干個字段提供。段名字段用於存放段的名稱,段名一般是有其邏輯意義的,也可以轉換成用段號指明。由於段號從0開始順序編號,正好與段表中的行號對應,如2段必是段表中的第3行,這樣,段表中就可不設段號(名)字段。裝入位字段用來指示該段是否已經調入主存,“1”表示已裝入,“0”表示未裝入。在程序的執行過程中,各段的裝入位隨該段是否活躍而動態變化。當裝入位為“1”時,地址字段用於表示該段裝入主存中起始(絕對)地址,當裝入位為“0”時,則無效(有時機器用它表示該段在輔存中的起始地址)。段長字段指明該段的大小,一般以字數或字節數為單位,取決於所用的編址方式。段長字段是用來判斷所訪問的地址是否越出段界的界限保護檢查用的。訪問方式字段用來標記該段允許的訪問方式,如只讀、可寫、只能執行等,以提供段的訪問方式保護。除此之外,段表中還可以根據需要設置其它的字段。段表本身也是一個段,一般常駐在主存中,也可以存在輔存中,需要時再調入主存。假設系統在主存中最多可同時有N道程序,可設N個段表基址寄存器。對應於每道程序,由基號(程序號)指明使用哪個段表基址寄存器。段表基址寄存器中的段表基址字段指向該道程序的段表在主存中的起始地址。段表長度字段指明該道程序所用段表的行數,即程序的段數。

段式存儲管理執行命令

由系統賦給某道程序(用户、進程)一個基號,並在調入調出過程中對有關段表基址寄存器和段表的內容進行記錄和修改,所以這些都不用用户程序員來管。某道活躍的程序在執行過程中產生的指令或操作數地址只要與基號組合成系統的程序地址,即可通過查表自動轉換成主存的物理地址。分段方法能使大程序分模塊編制,從而可以多個程序員並行編程,縮短編程時間,在執行或編譯過程中對不斷變化的可變長段也便於處理。各個段的修改、增添並不影響其它各段的編制,各用户以段的連接形成的程序空間可以與主存的實際容量無關。分段還便於幾道程序共用已在主存內的程序和數據,如編譯程序、各種子程序、各種數據和裝入程序等。不必在主存中重複存儲,只需把它們按段存儲,並在幾道程序的段表中有公用段的名稱及同樣的基址值即可。由於各段是按其邏輯特點組合的,容易以段為單位實現存儲保護。例如,可以安排成常數段只能讀不能寫;操作數段只能讀或寫,不能作為指令執行;子程序段只能執行,不能修改;有的過程段只能執行,不能讀也不能寫,如此等等。一旦違反規定就中斷,這對發現程序設計錯誤和非法使用是很有用的。段式管理的虛擬存儲器由於各個段的長度完全取決於段自身,段在主存中的起點也會是隨意的,這就給高效地調入段分配主存區域帶來困難。

段式存儲管理進行管理

為了進行段式管理,除了系統需要為每道程序分別設置段映象表外,還得由操作系統為整個主存系統建立一個實主存管理表,它包括佔用區域表和可用區域表兩部分。佔用區域表的每一項(行)用來指明主存中哪些區域已被佔用,被哪道程序的哪個段佔用以及該段在主存的起點和長度。此外,還可以設置諸如該段是否進入主存後被改寫過的字段,以便該段由主存中釋放時,決定是否還要將其寫回到輔存中原先的位置來減少輔助操作。可用區域表的每一項(行)則指明每一個未被佔用的基地址和區域大小。當一個段從輔存裝入主存時,操作系統就在佔用區域表中增加一項,並修改可用區域表。而當一個段從主存中退出時,就將其在佔用區域表的項(行)移入可用區域表中,並進行有關它是否可與其它可用區歸併的處理,修改可用區域表。當某道程序全部執行結束或者是被優先級更高的程序所取代時,也應將該道程序的全部段的項從佔用區域表移入可用區域表並作相應的處理。

段式存儲管理優缺點

在段式存儲管理中,每個段地址的説明為兩個量:一個段名和一個位移。在段內,是連續完整存放的。而在段與段之間是不一定連續編址的。段名和位移構成了一種二維編址。 段式管理是不連續分配內存技術中的一種。其最大特點在於他按照用户觀點,即按程序段、數據段等有明確邏輯含義的“段”,分配內存空間。克服了頁式的、硬性的、非邏輯劃分給保護和共享與支態伸縮帶來的不自然性。 段的最大好處是可以充分實現共享和保護,便於動態申請內存,管理和使用統一化,便於動態鏈接;其缺點是有碎片問題。