大話操作系統(tǒng)之基本分段存儲(chǔ)管理
個(gè)人認(rèn)為,學(xué)習(xí)操作系統(tǒng)一定要多看多記多整理,在這里我只是以自己的經(jīng)驗(yàn)給大家整理一下,希望大家可以自己學(xué)會(huì)整理,我們的作為參考好了。接下來開始正題吧。
在這之前,有想了解分頁的小伙伴可以戳這里:
一、分段存儲(chǔ)管理的引入
分頁管理的方法,提高內(nèi)存的利用率,但是對于對程序員是透明的;分段管理的方法,滿足了程序員在編程和使用上的要求,適應(yīng)軟件工程開發(fā)上的要求。
1.分段管理的引入主要有以下幾個(gè)特點(diǎn):
(1)方便編程按邏輯關(guān)系劃分段:有獨(dú)立的段名,各段的邏輯地址均從0開始。程序通過分段(segmentation)劃分為多個(gè)模塊,如代碼段、數(shù)據(jù)段、共享段。滿足了程序員在編程和使用上的要求
(2)分段共享:可以按段為單位來進(jìn)行共享;分頁不易于實(shí)現(xiàn)共享。(3)分段保護(hù):可以針對不同類型的段采取不同的保護(hù)措施(4)動(dòng)態(tài)鏈接:進(jìn)程開始運(yùn)行時(shí),只裝入主模塊,運(yùn)行中需要哪段再裝入、鏈接。(5)動(dòng)態(tài)增長:如數(shù)據(jù)段根據(jù)運(yùn)行需要可能會(huì)增大。
2.分段管理的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
(1)沒有內(nèi)碎片,外碎片可以通過內(nèi)存緊湊來消除。便于改變進(jìn)程占用空間的大小。
(2)分段管理按邏輯關(guān)系分段方便程序員利用編程
缺點(diǎn):基本分段管理要求進(jìn)程全部裝入內(nèi)存。
二、段式管理的數(shù)據(jù)結(jié)構(gòu)
1.各類型段表
進(jìn)程段表:每個(gè)進(jìn)程一張段表,描述組成進(jìn)程地址空間的各段在內(nèi)存的起始地址(段基址-base address)及段長。
系統(tǒng)段表:描述系統(tǒng)內(nèi)所有占用段的使用情況。
空閑段表:描述內(nèi)存中所有空閑段,可以結(jié)合到系統(tǒng)段表中。
2.邏輯地址結(jié)構(gòu)
邏輯地址由段號和段內(nèi)地址組成。
例:邏輯地址長32位,后16位代表段內(nèi)地址,每段64K,前16位代表段號,有64K個(gè)不同的邏輯段。邏輯段的***個(gè)數(shù)以及每個(gè)段的***長度由機(jī)器硬件決定,比如后半部分17,前15,則每個(gè)段***可達(dá)128K,不同段最多為32K
3.地址變換機(jī)構(gòu)
段式存儲(chǔ)管理,邏輯地址到物理地址的映射與頁式存儲(chǔ)管理類似。
首先邏輯地址分為段號與段內(nèi)地址。段號對應(yīng)一個(gè)段表(需要段表寄存器的越界中斷判斷),根據(jù)段表找段的段基址,將其與段內(nèi)地址結(jié)合,便得到物理地址。
三、分頁和分段的主要區(qū)別
(1)頁是物理單位,而段是邏輯單位。分頁是出于系統(tǒng)管理的需要,分段是出于用戶應(yīng)用的需要。因此,一條指令或一個(gè)操作數(shù)可能會(huì)跨越兩個(gè)頁的分界處,而不會(huì)跨越兩個(gè)段的分界處。
(2)頁大小是系統(tǒng)固定的,而段大小則通常不固定。
(3)地址空間:分頁是一維的,程序員只需用一個(gè)記憶符,即可表示一個(gè)地址;而分段是二維的,程序員在標(biāo)識一個(gè)地址時(shí),既要給出段名,又需給出段內(nèi)地址。
(4)通常段比頁大,因而段表比頁表短,可以縮短查找時(shí)間,提高訪問速度。
(5)分段比分頁系統(tǒng)更容易共享代碼。