(轉)分頁和分段的區別

轉自:http://blog.csdn.net/wangrunmin/article/details/7967293程序員

一. 分頁存儲管理算法

1.基本思想編程

    用戶程序的地址空間被劃分紅若干固定大小的區域,稱爲「頁」,相應地,內存空間分紅若干個物理塊,頁和塊的大小相等。可將用戶程序的任一頁放在內存的任一塊中,實現了離散分配。函數

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

15          12         11                  0操作系統

     頁號P                 頁內位移量W.net

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

若給定一個邏輯地址爲A,頁面大小爲L,則blog

頁號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)將物理塊號送入物理地址寄存器中,再將有效地址寄存器中的頁內地址直接送入物理地址寄存器的塊內地址字段中,拼接獲得實際的物理地址。

   
5、在網上找到了一個比較形象的比喻,挺不錯的,呵呵,列出來以下:
 
打個比方,好比說你去聽課,帶了一個紙質筆記本作筆記。筆記本有100張紙,課程有語文、數學、英語三門,對於這個筆記本的使用,爲了便於之後複習方便,你能夠有兩種選擇。

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

第二種是,你從第二張紙開始作筆記,各類課的筆記是連在一塊兒的:第2張紙是數學,第3張是語文,第4張英語……最後呢,你在第一張紙作了一個目錄,記錄着語文筆記在第三、七、1四、15張紙……,數學筆記在第二、六、八、九、11……,英語筆記在第四、五、12……。這就是分頁管理,第一張紙叫頁表。你要複習哪一門課,就到頁表裏查尋相關的紙的編號,而後翻到那一頁去複習
 
 
再粘貼一個帖子:
 
分頁概念:邏輯空間 分頁,物理空間分塊,頁與塊一樣大,頁連續塊離散,用頁號查頁表,由硬件作轉換,頁面 內存塊大小通常選爲2的若干次冪(便於管理)
頁表做用:實現從頁號到物理地址的映射

請求 分頁的基本思想
1.請求 分頁= 分頁+請求
2.請求 分頁提供虛擬存儲器
3.頁表項中的狀態位指示該頁面是否在內存,若不在,則產生一個 缺頁中斷

頁面置換:把一個頁面從內存調換到磁盤的對換區中
抖動:在具備虛存的計算機中,因爲頻繁的調頁活動使訪問磁盤的次數過多而引發的系統效率下降的一種現象
頁面走向:

經常使用的頁面置換算法:
先進先出法:(置換次數比較多)
最佳置換法(OPT):選擇未來再也不使用或在最遠的未來才被訪問的頁調換出去(不便於實現)
最近最少使用置換法(LRU):當須要置換一頁時,選擇在最近一段時間裏最久沒有使用過的頁面予以淘汰
最近未使用置換法(NUR):是LRU算法的近似方法,選擇在最近一段時間裏未被訪問過的頁面予以淘汰

段式管理的基本思想是: 把程序按內容或過程(函數)關係分紅段,每一個段有本身的名字(編號)。一個做業或進程的虛擬存儲空間都對應於一個由段號(段號:段內偏移)構成的二維地址,編譯程序在編譯連接過程當中就直接造成這樣的二維地址形式。段式管理以段爲單位分配內存,而後經過地址變換將段式虛擬地址轉換成實際的內存物理地址。 頁式管理同樣,段式管理也採用只把那些常常訪問的段駐留內存,而把那些未來一段時間不被訪問的段放入外存,待須要時自動調入的方法實現虛擬存儲器。 段式管理把一個進程的虛擬地址空間設計成二維結構,即段號(段號:段內偏移)的形式。前面己經談到,與頁式管理編譯程序產生一維連續地址不一樣,段式管理系統中的編譯程序編譯造成多個段及段的名字或編號,各個段號之間無順序關係。與頁式管理頁長度相同不同,段的長度是不一樣的,每一個段定義一組邏輯上完整的程序或數據。例如,在DOS操做系統中,一個程序內部被分爲了正文段、數據段、堆棧段等。每一個段是一個首地址爲O並連續的一維線性空間
相關文章
相關標籤/搜索