段式虛擬存儲器中的段是按程序的邏輯結構劃分的。本文將來介紹一下什么是段式存儲器管理,段式與頁式存儲器管理的區別又在哪,還有段頁式存儲器管理的工作原理。如果對頁式存儲管理方式不清楚的建議先弄懂頁式存儲管理方式(參考:深入理解操作系統之——分頁式存儲管理)
段式存儲器管理
段的劃分是具有邏輯意義的,例如:主程序段、數據段、堆棧段、子程序段等;
每個段都是從 0 開始的獨立邏輯地址空間;
而且各個段的長度因程序而不同。
虛擬地址
段式存儲器管理將虛擬地址分為兩部分:段號和段內地址。與頁式中虛擬地址不同的是,段內地址的位數不是固定的,段號與段內地址的劃分不是簡單地將一個二進制地址進行高低位的切割得到的。
段表
段表則包括了段長和段基址
地址變換過程
①進程訪問某個邏輯地址時,先取得段號
②若段號大于段表長度,越界錯誤
③查段表得到段開始地址和段長度
④若段內地址大于段長度,越界錯誤
⑤通過段開始地址和段內地址得到物理地址
⑥根據物理地址讀取數據
地址變換過程圖解:
計算例子
通過具體例子來算算就很好理解了。
例:某系統采用分段式存儲管理,在一個進程中,它的段表如下所示,求邏輯地址為(2,89)對應的物理地址(所有數據都是十進制)
解答:
根據邏輯地址(2,89)可以知道,段號為 2,段內地址為 89
根據段號 2 查段表可知,段號為 2 的段的段長為 380,段基址為 340
由段基址 340 和段內地址 89 相加可得實際的物理地址為 429
分頁與分段的區別
頁是信息的物理單位,滿足系統空間管理需要。分頁實現離散分配方式,以消減內存的外零頭, 提高內存的利用率;
段是信息的邏輯單位,滿足用戶需要
頁的大小固定,由系統決定;
段的長度不固定, 由用戶決定
分頁的作業地址空間是一維的(虛擬地址由一個數表示);
分段的作業地址空間則是二維的(虛擬地址有兩個數(段號和段內地址)表示)
段頁式
段頁式存儲器管理則是將段式與頁式結合,優缺點互補。
段面向用戶程序需要,段長度不固定;段需要連續分配空間,存在連續分配的缺點,例如易產生碎片;
結合段式和頁式兩者管理優點,既能節省內存空間,提高內存分配效率;又能兼顧用戶程序需要。
實現機制
先將用戶程序劃分為多個有邏輯意義的段,再將段劃分為多個頁
段頁式管理需要設置段表和頁表
每個段都對應一張頁表,因此段表存放了每張頁表的開始地址和頁表長度
段頁式存儲器管理方式地址結構
段頁式存儲器管理方式地址映射
段頁式的地址變換過程
①進程訪問某個邏輯地址時,先取得段號
②段號大于段表長度,越界錯誤
③查段表,得到頁表開始地址
④在頁表內,根據段內頁號查物理塊號
⑤頁內地址直接對應塊內地址
⑥通過物理塊號和塊內地址得到物理地址
⑦根據物理地址讀取數據
地址變換過程圖解:
編輯:hfy
-
存儲器
+關注
關注
38文章
7514瀏覽量
164036 -
存儲管理
+關注
關注
0文章
31瀏覽量
9193
發布評論請先 登錄
相關推薦
評論