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