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