段頁式存儲管理方式詳解

分段存儲方式

引入目的:

滿足用戶在編程和使用.上的習慣和需求

方便編程:爲滿足用戶作業的邏輯關係,將數據和指令分段存儲,
        其地址由段名和段內偏移量共同組成
信息共享
信息保護(以信息的邏輯單位爲基礎)
動態增長:保證使用過程中對內存的動態需求
動態鏈接:運行時動態加載需要的目標程序段

在這裏插入圖片描述

基本原理

分段

分段地址中的邏輯地址爲:| 段號 | 段內地址 |
每個段都是從0開始編址,並採用一段連續的地址空間,段長由相應的邏輯信息組的長度決定(各段段長不同)。每個段即包含了一部分地址空間,又標識了段與段之間的邏輯關係。

段表

分段存儲管理系統爲每個段分配一個連續的分區,進程的各個段可離散地裝入內存的不同位置,用一張段映射表(段表)記錄每段在內存的起始地址(基址)和段的長度。在配置了段表後,執行中的進程可通過邏輯地址中的段號來查詢段表,找到段的對應內存區。
段表表項的結構爲:| 段長 | 基址 |

地址變換機構

段表寄存器:存放段表基址和段表長度TL
地址變換過程:

a、邏輯地址中的段號s與TL比較,若s>TL,越界
中斷;反之,根據段表基址和段號所指示的段表
項找到所需段在內存中的基址

b、邏輯地址中的段內偏移d和上一步找到的段長
SL相比較,若d>SL,越界中斷;反之,將d與
段基址相加得到數據物理地址

在這裏插入圖片描述
例:eg:設某程序中有5個段,段號分別爲0-4,段表如下,求:

界限 基址
0 1000 1400
1 400 6300
2 400 4300
3 1100 3200
4 1000 4700

1)段2字節53的物理地址?
2)段3字節852的物理地址?
3)段0字節1222的物理地址?
answer:

  1. 4300+53=4353
  2. 3200+852=4052
  3. 1222>1000,越界中斷!

信息保護

分段有助於實現將段與對其對應的保護機制相關聯。
現代OS中,指令不可自我修改,故指令段只能定義爲只讀或只執行,內存映射硬件會檢查段表項中的保護位,以防止對內存的非法訪問(對只讀
段的寫將代碼段視爲數據等)。
數據則放在特定數組中,當需要訪問數據時會對數組下標進行檢測,超界時會產生越界中斷。

信息共享

在每個進程的段表中對多進程共享的可重入代碼設置一個段表項,當需要使用這部分代碼時,應保證在執行時不會修改它,每個進程的私有數據和局部變量必須使用獨立的段保存且不提供共享。
可重入代碼(純代碼) :允許多個進程同時訪問的代碼,且爲保證每個進程所執行的代碼完全相同,決不允許執行過程中修改代碼。
分頁系統信息共享:使用可重入代碼時,各進程的部分邏輯頁面將被映射到可重入代碼使用的各幀中,但其私有數據和局部變量所使用的幀則各不相同,且所有這些頁面和幀的對照關係需要存入頁表(長度可能會極大)。
分段系統信息共享:使用可重入代碼時,只需在段表中爲其設置一個段表項,並將執行時用到的部分數據copy到局部數據區,用來支持對執行時不可避免的代碼修改的支持即可。
在這裏插入圖片描述

分頁與分段的主要區別:

➢段是信息的邏輯單位,它是根據用戶的需要劃分的,因此段對用戶是可見的;頁是信息的物理單位,是爲了管理主存的方便而劃分的,對用戶是透明的。
➢頁的大小固定不變,由系統決定。段的大小是不固定的,它由其完成的功能決定。
➢段式向用戶提供的是二維地址空間,頁式向用戶提供的是一~維地址空間,其頁號和頁內偏移是機器硬件的功能。
➢由於段是信息的邏輯單位,因此便於存貯保護和信息的共享,頁的保護和共享受到限制。

段頁式存儲管理方式

引入原因:

分頁和分段管理方式各有其優缺點,分頁系統能有效提高內存的利
用率,而分段則能更好地滿足用戶的需要,因此可以將兩者結合成一種新
的存儲管理方式系統稱爲“段頁式系統”。

基本原理

結合分段和分貝思想,先將用戶程序分成若干段並分別賦予段名,再將這些段分爲若干頁
地址結構:由段號、段內頁號和頁內地址三項共同構成地址

段號(S) 段內頁號(P) 頁內地址(W)

段表與頁表

系統需要配置段表和頁表。
在這裏插入圖片描述

地址變換機構

本系統中使用段表寄存器存放段表基址和段表長度TL
在這裏插入圖片描述
CPU提供的邏輯地址中的段號S首先和段表長度TL比較,若未越界則根據S和段表基址找到相應段表項中紀錄的該段所在頁表基址,接着使用段內頁號P獲得對應頁面的頁表項位置,從中找到幀號b,最後拼接上頁內地址W得到
數據的物理地址。
該過程需要三次訪問內存,爲提高執行速度,可以增加一個快表,訪問數據時利用段號和頁號檢索它,若可以命中,直接取出物理幀號;否則,進行上述三次內存訪問過程獲得數據。
在這裏插入圖片描述
例:設有一頁式存儲管理系統向用戶提供的邏輯地址空間最大爲16頁,每頁2048字節,內存共有8個物理幀,試問邏輯地址至少應爲多少位?內存空間
有多大?

答:每頁的2048字節需要11位二進制位標識頁內位移部分地址;
邏輯空間最大爲16頁,頁號地址需要4個二進制位,
故邏輯地址至少需要15位由於內存共有8個物理幀,
而在頁式管理系統中的頁面大小與幀等大,因此內存空間爲16K

例:在一個採用段頁式存儲管理的系統中,頁的大小爲1KB。某個正在執行的作業情況如下:
(1)請給出將邏輯地址(2,3500)轉換成物理地址的過程;
(2)計算出上述邏輯地址對應的物理地址的值。
在這裏插入圖片描述
( 1 )①邏輯地址中的段號 2 跟段表控制寄存器中的段表長 3 進行比較,由於 2<3 ,故段號沒有越界;②根據段表控制寄存器中的段表起始地址加上段號 2 ,找到段表中對應於第 2 段的段表項,從而得到第 2 段的頁表長度和頁表起始地址;③根據段內偏移 3500 得到段內頁號爲 3 ,頁內偏移爲 428 ;④把段內頁號 3 和段表項中的頁表長度 5 進行比較,得知頁號沒越界;⑤頁表起始地址加上頁號得到對應的頁表項,從而得到第 2 段的第 3 頁的物理塊號 30 ;⑥物理塊號 30 和塊內偏移 428 拼接成物理地址 31148 。

( 2 )邏輯地址 (2,3500) 對應的物理地址爲十進制數 31148 ,十六進制 79AC 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章