天天看點

分頁與分段

一,分頁

    1,基本思想

     使用者程式的位址空間被劃分成若幹固定大小的區域,稱為“頁”,相應地,記憶體空間分成若幹個實體塊(稱為"幀"),頁和塊的大小相等。可将使用者程式的任一頁放在記憶體的任一塊中,實作了離散配置設定。

    2,位址結構

    頁号  -  頁内位移量

    頁号4位,每個作業最多2^4 = 16頁,表示頁号從0000~1111(2^4-1),頁内位移量的位數表示頁的大小,若頁内位移量的大小是12位則2^12=4k,即頁的大小為4k,頁内位址為000000000000~111111111111

    3,頁表

    分頁系統中允許将程序的每一頁離散的存儲在任一實體塊中,為了能在記憶體中找到每個頁對應的實體塊,,系統為每個頁面建立一張頁面映射表,即頁表。頁表的作用是實作從頁号到實體塊号的映射。

    4,塊表

    分頁系統中,CPU每次要存取一個資料,都要兩次通路記憶體(通路頁表、通路實際實體位址)。為提高位址變換速度,增設一個具有并行查詢能力的特殊高速緩沖存儲器,稱為“聯想存儲器”或“快表”,存放目前通路的頁表項。

二,分段

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

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

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

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

    3段表

段号 段長 起始位址 存取控制   

0     1K     4096    

1     4K     17500    

2     2K     8192  

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

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

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

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

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

段頁式存儲管理

1.基本思想:

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

在段頁式存儲管理系統中,作業的位址空間首先被分成若幹個邏輯分段,每段都有自己的段号,然後再将每段分成若幹個大小相等的頁。對于主存空間也分成大小相等的頁,主存的配置設定以頁為機關。

段頁式系統中,作業的位址結構包含三部分的内容:段号      頁号       頁内位移量

程式員按照分段系統的位址結構将位址分為段号與段内位移量,位址變換機構将段内位移量分解為頁号和頁内位移量。

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

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

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

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

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

請求分頁的基本思想

1.請求分頁=分頁+請求

2.請求分頁提供虛拟存儲器

3.頁表項中的狀态位訓示該頁面是否在記憶體,若不在,則産生一個缺頁中斷

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

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

頁面走向:

常用的頁面置換算法:

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

最佳置換法(OPT):選擇将來不再使用或在最遠的将來才被通路的頁調換出去(不便于實作)

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

最近未使用置換法(NUR):是LRU算法的近似方法,選擇在最近一段時間裡未被通路過的頁面予以淘汰

段式管理的基本思想是:把程式按内容或過程(函數)關系分成段,每個段有自己的名字(編号)。一個作業或程序的虛拟存儲空間都對應于一個由段号(段号:段内偏移)構成的二維位址,編譯程式在編譯連結過程中就直接形成這樣的二維位址形式。段式管理以段為機關配置設定記憶體,然後通過位址變換将段式虛拟位址轉換成實際的記憶體實體位址。和頁式管理一樣,段式管理也采用隻把那些經常通路的段駐留記憶體,而把那些将來一段時間不被通路的段放入外存,待需要時自動調入的方法實作虛拟存儲器。

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

本文轉自   Taxing祥   51CTO部落格,原文連結:http://blog.51cto.com/12118369/1964957

繼續閱讀