一、段式存儲管理
1、分段
進程的地址空間:按照程序自身的邏輯關系划分為若干個段,每個段都有一個段名(在低級語言中,程序員使用段名來編程),每段從0開始編址。
內存分配規則:以段為單位進行分配,每個段在內存中占連續空間,但各段之間可以不相鄰。
分段系統的邏輯地址結構由段號(段名)和段內地址(段內偏移量)所組成。
2、段表
每一個程序設置一個段表,放在內存,屬於進程的現場信息
3、地址變換
4、段的保護
越界中斷處理
進程在執行過程中,有時需要擴大分段,如數據段。由於要訪問的地址超出原有的段長,所以發越界中斷。操作系統處理中斷時 ,首先判斷該段的“擴充位”,如可擴充,則增加段的長度;否則按出錯處理
缺段中斷處理
檢查內存中是否有足夠的空閑空間
①若有,則裝入該段,修改有關數據結構,中斷返回
②若沒有,檢查內存中空閑區的總和是否滿足要求,是則應采用緊縮技術,轉 ① ;否則,淘汰一(些)段,轉①
5、段的動態連接
為何要進行段的動態鏈接?
大型程序由若干程序段,若干數據段組成
進程的某些程序段在進程運行期間可能根本不用
互斥執行的程序段沒有必要同時駐留內存
有些程序段執行一次后不再用到
靜態鏈接花費時間,浪費空間
在一個程序運行開始時,只將主程序段裝配好並調入主存。其它各段的裝配是在主程序段運行過程中逐步進行的。每當需要調用一個新段時,再將這個新段裝配好,並與主程序段連接。
頁式存儲管理:難以完成動態鏈接,其邏輯地址是一維的
6、信息的保護與共享
這里主要與頁式存儲管理進行一下對比。
分段比分頁更容易實現信息的共享和保護。
純代碼舉例:比如,有一個代碼段只是簡單的輸出“Hello World!”。
7、頁式系統與段式系統的對比
補充:
段長是可變的,頁的大小是固定的。
分段存儲:段內地址W字段溢出將產生越界中斷。
分頁存儲:段內地址W字段溢出會自動加入到頁號中。
8、總結
二、段頁式存儲管理
1、分頁、分段的有缺點分析
2、基本思想
用戶程序划分:按段式划分(對用戶來講,按段的邏輯關系進行划分;對系統講,按頁划分每一段)
邏輯地址:
內存划分:按頁式存儲管理方案
內存分配:以頁為單位進行分配
3、邏輯地址結構
4、段表頁表
5、地址轉換
6、評價
優點:
保留了分段和請求分頁存儲管理的全部優點
提供了虛存空間,能更有效利用主存
缺點:
增加了硬件成本
系統復雜度較大
7、總結