一篇看懂!操作系統(tǒng)一一段式存儲(chǔ)管理、 段頁式存儲(chǔ)管理!
一、段式存儲(chǔ)管理
1、分段
進(jìn)程的地址空間:按照程序自身的邏輯關(guān)系劃分為若干個(gè)段,每個(gè)段都有一個(gè)段名(在低級(jí)語言中,程序員使用段名來編程),每段從0開始編址。
內(nèi)存分配規(guī)則:以段為單位進(jìn)行分配,每個(gè)段在內(nèi)存中占連續(xù)空間,但各段之間可以不相鄰。

分段系統(tǒng)的邏輯地址結(jié)構(gòu)由段號(hào)(段名)和段內(nèi)地址(段內(nèi)偏移量)所組成。

2、段表

每一個(gè)程序設(shè)置一個(gè)段表,放在內(nèi)存,屬于進(jìn)程的現(xiàn)場(chǎng)信息
3、地址變換


4、段的保護(hù)
越界中斷處理
1.進(jìn)程在執(zhí)行過程中,有時(shí)需要擴(kuò)大分段,如數(shù)據(jù)段。由于要訪問的地址超出原有的段長,所以發(fā)越界中斷。操作系統(tǒng)處理中斷時(shí) ,首先判斷該段的“擴(kuò)充位”,如可擴(kuò)充,則增加段的長度;否則按出錯(cuò)處理
缺段中斷處理
檢查內(nèi)存中是否有足夠的空閑空間 ? ①若有,則裝入該段,修改有關(guān)數(shù)據(jù)結(jié)構(gòu),中斷返回 ? ②若沒有,檢查內(nèi)存中空閑區(qū)的總和是否滿足要求,是則應(yīng)采用緊縮技術(shù),轉(zhuǎn) ① ;否則,淘汰一(些)段,轉(zhuǎn)①
5、段的動(dòng)態(tài)連接
為何要進(jìn)行段的動(dòng)態(tài)鏈接?
大型程序由若干程序段,若干數(shù)據(jù)段組成
進(jìn)程的某些程序段在進(jìn)程運(yùn)行期間可能根本不用
互斥執(zhí)行的程序段沒有必要同時(shí)駐留內(nèi)存
有些程序段執(zhí)行一次后不再用到
靜態(tài)鏈接花費(fèi)時(shí)間,浪費(fèi)空間
在一個(gè)程序運(yùn)行開始時(shí),只將主程序段裝配好并調(diào)入主存。其它各段的裝配是在主程序段運(yùn)行過程中逐步進(jìn)行的。每當(dāng)需要調(diào)用一個(gè)新段時(shí),再將這個(gè)新段裝配好,并與主程序段連接。 頁式存儲(chǔ)管理:難以完成動(dòng)態(tài)鏈接,其邏輯地址是一維的
6、信息的保護(hù)與共享
這里主要與頁式存儲(chǔ)管理進(jìn)行一下對(duì)比。
分段比分頁更容易實(shí)現(xiàn)信息的共享和保護(hù)。

純代碼舉例:比如,有一個(gè)代碼段只是簡單的輸出“Hello World!”。

7、頁式系統(tǒng)與段式系統(tǒng)的對(duì)比

補(bǔ)充:
段長是可變的,頁的大小是固定的。
分段存儲(chǔ):段內(nèi)地址W字段溢出將產(chǎn)生越界中斷。
分頁存儲(chǔ):段內(nèi)地址W字段溢出會(huì)自動(dòng)加入到頁號(hào)中。
8、總結(jié)

二、段頁式存儲(chǔ)管理
1、分頁、分段的有缺點(diǎn)分析

2、基本思想
用戶程序劃分:按段式劃分(對(duì)用戶來講,按段的邏輯關(guān)系進(jìn)行劃分;對(duì)系統(tǒng)講,按頁劃分每一段)
邏輯地址:

內(nèi)存劃分:按頁式存儲(chǔ)管理方案
內(nèi)存分配:以頁為單位進(jìn)行分配

3、邏輯地址結(jié)構(gòu)

4、段表頁表

5、地址轉(zhuǎn)換

6、評(píng)價(jià)
優(yōu)點(diǎn):
保留了分段和請(qǐng)求分頁存儲(chǔ)管理的全部優(yōu)點(diǎn)
提供了虛存空間,能更有效利用主存
缺點(diǎn):
增加了硬件成本
系統(tǒng)復(fù)雜度較大
7、總結(jié)

