分段和分頁

2021-07-10 20:52:06 字數 4900 閱讀 1112

一. 分頁儲存管理

1.基本思想

使用者程式的位址空間被劃分成若干固定大小的區域,稱為「頁」,相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配。

2. 分頁儲存管理的位址機構

15  12  

11  0

頁號p 

頁內位移量w

頁號4位,每個作業最多2的4次方=16頁,表示頁號從0000~1111(24-1),頁內位移量的位數表示頁的大小,若頁內位移量12位,則2的12次方=4k,頁的大小為4k,頁內位址從000000000000~111111111111

若給定乙個邏輯位址為a,頁面大小為l,則

頁號p=int[a/l],頁內位址w=a  mod  l

3. 頁表

分頁系統中,允許將程序的每一頁離散地儲存在記憶體的任一物理塊中,為了能在記憶體中找到每個頁面對應的物理塊,系統為每個程序建立一張頁面對映表,簡稱頁表。頁表的作用是實現從頁號到物理塊號的位址對映。

頁表:頁號 物理塊號 訪問控制

0  2 

1  15(f)

2  14(e)

3  1 

4. 位址變換

(1) 程式執行時,從pcb中取出頁表始址和頁表長度(4),裝入頁表暫存器ptr。

(2)由分頁位址變換機構將邏輯位址自動分成頁號和頁內位址。

例:11406d=0010|110010001110b=2c8eh

頁號為2,位移量為c8eh=3214d

或11406  div  4096=2

11406  mod  4096=3214

(3) 將頁號與頁表長度進行比較(2<4),若頁號大於或等於頁表長度,則表示本次訪問的位址已超越程序的位址空間,產生越界中斷。

(4)將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。

(5)取出頁描述子得到該頁的物理塊號。 2 

14(e)

(6) 對該頁的訪問控制進行檢查。

(7)將物理塊號送入實體地址暫存器中,再將有效位址暫存器中的頁內位址直接送入實體地址暫存器的塊內位址欄位中,拼接得到實際的實體地址。

例:0010|110010001101b

1110|110010001101b=ec8eh=60558d

或 14*4096+3214=60558d

5. 具有快表的位址變換機構

分頁系統中,cpu每次要訪問乙個資料,都要兩次訪問記憶體(訪問頁表、訪問實際實體地址)。為提高位址變換速度,增設乙個具有並行查詢能力的特殊高速緩衝儲存器,稱為「聯想儲存器」或「快表」,存放當前訪問的頁表項。

二.分段儲存管理

1.基本思想

將使用者程式位址空間分成若干個大小不等的段,每段可以定義一組相對完整的邏輯資訊。儲存分配時,以段為單位,段與段在記憶體中可以不相鄰接,也實現了離散分配。

2. 分段儲存方式的引入

方便程式設計

分段共享

分段保護

動態鏈結

動態增長

3. 分段位址結構

作業的位址空間被劃分為若干個段,每個段定義了一組邏輯資訊。例程式段、資料段等。每個段都從0開始編址,並採用一段連續的位址空間。

段的長度由相應的邏輯資訊組的長度決定,因而各段長度不等。整個作業的位址空間是二維的。

15  12  

11  0

段號 段內位移量

段號4位,每個作業最多24=16段,表示段號從0000~1111(24-1);段內位移量12位,212=4k,表示每段的段內位址最大為4k(各段長度不同),從000000000000~111111111111

4. 段表

段號 段長 起始位址 訪問控制

0  1k 

4096 

1  4k 

17500 

2  2k 

8192 

5. 位址變換

(1). 程式執行時,從pcb中取出段表始址和段表長度(3),裝入段表暫存器。

(2). 由分段位址變換機構將邏輯位址自動分成段號和段內位址。

例:7310d=0001|110010001110b=1c8eh

段號為1,位移量為c8eh=3214d

(3). 將段號與段表長度進行比較(1<3),若段號大於或等於段表長度,則表示本次訪問的位址已超越程序的位址空間,產生越界中斷。

(4). 將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。

(5). 取出段描述子得到該段的起始實體地址。1 

4k 17500

(6). 檢查段內位移量是否超出該段的段長(3214<4k),若超過,產生越界中斷。

(7). 對該段的訪問控制進行檢查。

(8). 將該段基址和段內位址相加,得到實際的實體地址。

例:0001|110010001101b

起始位址17500d+段內位址3214d=20714d

三.分頁與分段的主要區別

分頁和分段有許多相似之處,比如兩者都不要求作業連續存放.但在概念上兩者完全不同,主要表現在以下幾個方面:

(1)頁是資訊的物理單位,分頁是為了實現非連續分配,以便解決記憶體碎片問題,或者說分頁是由於系統管理的需要.段是資訊的邏輯單位,它含有一組意義相對完整的資訊,分段的目的是為了更好地實現共享,滿足使用者的需要.

(2)頁的大小固定,由系統確定,將邏輯位址劃分為頁號和頁內位址是由機器硬體實現的.而段的長度卻不固定,決定於使用者所編寫的程式,通常由編譯程式在對源程式進行編譯時根據資訊的性質來劃分.

(3)分頁的作業位址空間是一維的.分段的位址空間是二維的.

四.段頁式儲存管理

1.基本思想:

分頁系統能有效地提高記憶體的利用率,而分段系統能反映程式的邏輯結構,便於段的共享與保護,將分頁與分段兩種儲存方式結合起來,就形成了段頁式儲存管理方式。

在段頁式儲存管理系統中,作業的位址空間首先被分成若干個邏輯分段,每段都有自己的段號,然後再將每段分成若干個大小相等的頁。對於主存空間也分成大小相等的頁,主存的分配以頁為單位。

段頁式系統中,作業的位址結構包含三部分的內容:段號

頁號 頁內位移量

程式設計師按照分段系統的位址結構將位址分為段號與段內位移量,位址變換機構將段內位移量分解為頁號和頁內位移量。

為實現段頁式儲存管理,系統應為每個程序設定乙個段表,包括每段的段號,該段的頁表始址和頁表長度。每個段有自己的頁表,記錄段中的每一頁的頁號和存放在主存中的物理塊號。

2.位址變換的過程:

(1)程式執行時,從pcb中取出段表始址和段表長度,裝入段表暫存器。

(2)由位址變換機構將邏輯位址自動分成段號、頁號和頁內位址。

(3)將段號與段表長度進行比較,若段號大於或等於段表長度,則表示本次訪問的位址已超越程序的位址空間,產生越界中斷。

(4)將段表始址與段號和段表項長度的乘積相加,便得到該段表項在段表中的位置。

(5)取出段描述子得到該段的頁表始址和頁表長度。

(6)將頁號與頁表長度進行比較,若頁號大於或等於頁表長度,則表示本次訪問的位址已超越程序的位址空間,產生越界中斷。

(7)將頁表始址與頁號和頁表項長度的乘積相加,便得到該頁表項在頁表中的位置。

(8)取出頁描述子得到該頁的物理塊號。

(9)對該頁的訪問控制進行檢查。

(10)將物理塊號送入實體地址暫存器中,再將有效位址暫存器中的頁內位址直接送入實體地址暫存器的塊內位址欄位中,拼接得到實際的實體地址。

在網上找到了乙個比較形象的比喻,挺不錯的,呵呵,列出來如下:

打個比方,比如說你去聽課,帶了乙個紙質筆記本做筆記。筆記本有100張紙,課程有語文、數學、英語三門,對於這個筆記本的使用,為了便於以後複習方便,你可以有兩種選擇。

第一種是,你從本子的第一張紙開始用,並且事先在本子上做劃分:第2張到第30張紙記語文筆記,第31到60張紙記數學筆記,第61到100張紙記英語筆記,最後在第一張紙做個列表,記錄著三門筆記各自的範圍。這就是分段管理,第一張紙叫段表。

第二種是,你從第二張紙開始做筆記,各種課的筆記是連在一起的:第2張紙是數學,第3張是語文,第4張英語……最後呢,你在第一張紙做了乙個目錄,記錄著語文筆記在第3、7、14、15張紙……,數學筆記在第2、6、8、9、11……,英語筆記在第4、5、12……。這就是分頁管理,第一張紙叫頁表。你要複習哪一門課,就到頁表裡查尋相關的紙的編號,然後翻到那一頁去複習

再貼上乙個帖子:

提供虛擬儲存器

3.頁表項中的狀態位指示該頁面是否在記憶體,若不在,則產生乙個缺頁中斷

頁面置換:把乙個頁面從記憶體調換到磁碟的對換區中

抖動:在具有虛存的計算機中,由於頻繁的調頁活動使訪問磁碟的次數過多而引起的系統效率降低的一種現象

頁面走向:

常用的頁面置換演算法:

先進先出法:(置換次數比較多)

最佳置換法(opt):選擇將來不再使用或在最遠的將來才被訪問的頁調換出去(不便於實現)

最近最少使用置換法(lru):當需要置換一頁時,選擇在最近一段時間裡最久沒有使用過的頁面予以淘汰

最近未使用置換法(nur):是lru演算法的近似方法,選擇在最近一段時間裡未被訪問過的頁面予以淘汰

段式管理的基本思想是:把程式按內容或過程(函式)關係分成段,每個段有自己的名字(編號)。乙個作業或程序的虛擬儲存空間都對應於乙個由段號(段號:段 內偏移)構成的二維位址,編譯程式在編譯鏈結過程中就直接形成這樣的二維位址形式。段式管理以段為單位分配記憶體,然後通過位址變換將段式虛擬位址轉換成實 際的記憶體實體地址。和頁式管理一樣,段式管理也採用只把那些經常訪問的段駐留記憶體,而把那些將來一段時間不被訪問的段放入外存,待需要時自動調入的方法實 現虛擬儲存器。

段式管理把乙個程序的虛擬位址空間設計成二維結構,即段號(段號:段內偏移)的形式。前面己經談到,與頁式管理編譯程式產生一 維連續位址不同,段式管理系統中的編譯程式編譯形成多個段及段的名字或編號,各個段號之間無順序關係。與頁式管理頁長度相同不一樣,段的長度是不同的,每 個段定義一組邏輯上完整的程式或資料。例如,在dos作業系統中,乙個程式內部被分為了正文段、資料段、堆疊段等。每個段是乙個首位址為o並連續的一維線 性空間。

說說分段和分頁

頁是資訊的物理單位,分頁是為實現離散分配方式,以消減記憶體的外零頭,提高記憶體的利用率 或者說,分頁僅僅是由於系統管理的需要,而不是使用者的需要。段是資訊的邏輯單位,它含有一組其意義相對完整的資訊。分段的目的是為了能更好的滿足使用者的需要。頁的大小固定且由系統確定,把邏輯位址劃分為頁號和頁內位址兩部...

分頁和分段詳解

1.基本思想 使用者程式的位址空間被劃分成若干固定大小的區域,稱為 頁 相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配。分頁儲存管理的位址機構 15 12 11 0 頁號p 頁內位移量w頁號4位,每個作業最多2的4次方 16頁,表示頁...

分段和分頁區別

分頁儲存管理 使用者程式的位址空間被劃分成若干固定大小的區域,稱為 頁 相應地,記憶體空間分成若干個物理塊,頁和塊的大小相等。可將使用者程式的任一頁放在記憶體的任一塊中,實現了離散分配。為了能在記憶體中找到每個頁面對應的物理塊,系統為每個程序建立一張頁表,用於記錄程序邏輯頁面與記憶體物理頁面之間的對...