操做系統之分頁分段介紹

一.虛擬內存的由來 html


1.問題提出: 程序員

     當直接讓進程使用直接的物理內存時,當對物理內存操做時會出現混亂。好比進程A裝在0-30的物理內層,在29處是一條ADD指令。而進程B裝在30-40處第一條指令爲JMP 29.沒有使用虛擬內存的話,進程B將直接跳到進程A從而使二者程序都破壞掉。
算法

2.解決辦法: 編程

    有兩種解決這個問題:一種經過基址寄存器和界線寄存器造成地址空間,經過交換技術解決內存超載。另一種就是基於分頁的虛擬地址技術。 緩存

     1)交換技術:把一個進程完整調入內存運行一段時間,而後把他存回磁盤,空閒進程主要存儲在磁盤上。缺點:當進程空間大於內存時,不能使用。 url

     2)虛擬內存:把一個進程的一部分調入內存中運行,當內存沒有空閒空間時,將新的覆蓋舊的頁,同時將舊 是寫入磁盤。虛擬內存主要使用分頁存儲管理模式。 spa


二.  分頁存儲管理 操作系統

實際上存儲在物理內存上(磁盤上),運行時一頁一頁讀取; .net

1.基本思想 orm

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

1)      等份內存

    頁式存儲管理將內存空間劃分紅等長的若干物理塊,成爲物理頁面也成爲物理塊,每一個物理塊的大小通常取2的整數冪。內存的全部物理塊從0開始編號,稱做物理頁號。

2) 邏輯地址

     系統將程序的邏輯空間按照一樣大小也劃分紅若干頁面,稱爲邏輯頁面也稱爲頁。程序的各個邏輯頁面從0開始依次編號,稱做邏輯頁號或相對頁號。每一個頁面內從0開始編址,稱爲頁內地址。程序中的邏輯地址由兩部分組成:頁號P和頁內位移量W。

在執行一個程序以前,內存管理器須要的準備工做:

1) 肯定程序的頁數

2) 在主存中留出足夠的空閒頁面

3) 將程序的全部頁面載入主存裏。(靜態的分頁,頁面無需連續)

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


    頁號x位,每一個做業最多2的x次方頁,頁內位移量的位數表示頁的大小,若頁內位移量y位,則2的y次方,即頁的大小,頁內地址從000000000000開始到2的y次方

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

頁號P=INT[A/L],頁內地址W=A  MOD  L

3.內存分配

    相鄰的頁面在內存中不必定相鄰,即分配給程序的內存塊之間不必定連續。對程序地址空間的分頁是系統自動進行的,即對用戶是透明的。因爲頁面尺寸爲2的整數次冪,故相對地址中的高位部分即爲頁號,低位部分爲頁內地址。

4. 頁表

      分頁系統中,容許將進程的每一頁離散地存儲在內存的任一物理塊中,爲了能在內存中找到每一個頁面對應的物理塊,系統爲每一個進程創建一張頁表,用於記錄進程邏輯頁面與內存物理頁面之間的對應關係。頁表的做用是實現從頁號到物理塊號的地址映射,地址空間有多少頁,該頁表裏就登記多少行,且按邏輯頁的順序排列,形如:


5. 地址變換(MMu)

      頁式虛擬存儲系統的邏輯地址是由頁號和頁內地址兩部分組成,地址變換過程如圖7-3所示。假定頁面的大小爲4K,圖7-3中所示的十進制邏輯地址8203通過地址變換後,造成的物理地址a應爲十進制。 
             

頁號: 8203/4096 = 2;頁內偏移:8203%4096= 11;物理地址:物理塊號*頁面大小+ 頁內偏移= 28683。

6. 具備快表的地址變換機構

     分頁系統中,CPU每次要存取一個數據,都要兩次訪問內存(訪問頁表、訪問實際物理地址)。爲提升地址變換速度,增設一個具備並行查詢能力的特殊高速緩衝存儲器,稱爲「聯想存儲器」或「快表」,存放當前訪問的頁表項。

7.頁面的共享與保護

    當多個不一樣進程中須要有相同頁面信息時,能夠在主存中只保留一個副本,只要讓這些進程各自的有關項中指向內存同一塊號便可。同時在頁表中設置相應的「存取權限」,對不一樣進程的訪問權限進行各類必要的限制。

8.頁面置換:

     當進程在物理內存中運行時,調用到不在物理內存中的虛擬頁面時,MMU注意到該頁面沒有被映射到物理內存,因而cpu陷入到操做系統,這個陷阱稱爲缺頁中斷,操做系統找到一個不多使用的頁框且把他的內容寫入磁盤備份。隨後把須要訪問的虛擬頁面讀到剛纔回收的頁框中,修改映射關係,而後從新啓動引發陷阱的指令。

主要的頁面置換算法有:


三.分段存儲管理

1.基本思想

      頁面是主存物理空間中劃分出來的等長的固定區域。分頁方式的優勢是頁長固定,於是便於構造頁表、易於管理,且不存在外碎片。但分頁方式的缺點是頁長與程序的邏輯大小不相關。例如,某個時刻一個子程序可能有一部分在主存中,另外一部分則在輔存中。這不利於編程時的獨立性,並給換入換出處理、存儲保護和存儲共享等操做形成麻煩。

      另外一種劃分可尋址的存儲空間的方法稱爲分段。段是按照程序的天然分界劃分的長度能夠動態改變的區域。一般,程序員把子程序、操做數和常數等不一樣類型的數據劃分到不一樣的段中(寫c程序時會用到),而且每一個程序能夠有多個相同類型的段。

     段表自己也是一個段,能夠存在輔存中,但通常是駐留在主存中。

將用戶程序地址空間分紅若干個大小不等的段,每段能夠定義一組相對完整的邏輯信息。存儲分配時,以段爲單位,段與段在內存中能夠不相鄰接,也實現了離散分配。

2. 分段地址結構

      做業的地址空間被劃分爲若干個段,每一個段定義了一組邏輯信息。例程序段、數據段等。每一個段都從0開始編址,並採用一段連續的地址空間。段的長度由相應的邏輯信息組的長度決定,於是各段長度不等。整個做業的地址空間是二維的。

       在段式虛擬存儲系統中,虛擬地址由段號和段內地址組成,虛擬地址到實存地址的變換經過段表來實現。每一個程序設置一個段表,段表的每個表項對應一個段,每一個表項至少包括三個字段:有效位(指明該段是否已經調入主存)、段起址(該段在實存中的首地址)和段長(記錄該段的實際長度)。

3. 地址變換

      針對每個虛擬地址,存儲管理部件首先以段號S爲索引訪問段表的第S個表項。若該表項的有效位爲1,則將虛擬地址的段內地址D與該表項的段長字段比較;若段內地址較大則說明地址越界,將產生地址越界中斷;不然,將該表項的段起址與段內地址相加,求得主存實地址並訪存。若是該表項的有效位爲0,則產生缺頁中斷,從輔存中調入該頁,並修改段表。段式虛擬存儲器虛實地址變換過程如圖所示。



絕對地址=根據段號找到段表中的起始地址+段內地址 (若是段內地址超過限長則產生「地址越界」程序性中斷事件達到存儲保護)

4. 分段存儲方式的優缺點

     分頁對程序員而言是不可見的,而分段一般對程序員而言是可見的,於是分段爲組織程序和數據提供了方便。與頁式虛擬存儲器相比,段式虛擬存儲器有許多優勢:

(1)    段的邏輯獨立性使其易於編譯、管理、修改和保護,也便於多道程序共享。

(2)    段長能夠根據須要動態改變,容許自由調度,以便有效利用主存空間。

(3)    方便編程,分段共享,分段保護,動態連接,動態增加

 由於段的長度不固定,段式虛擬存儲器也有一些缺點:

(1)    主存空間分配比較麻煩。

(2)    容易在段間留下許多碎片,形成存儲空間利用率下降。

(3)    因爲段長不必定是2的整數次冪,於是不能簡單地像分頁方式那樣用虛擬地址和實存地址的最低若干二進制位做爲段內地址,並與段號進行直接拼接,必須用加法操做經過段起址與段內地址的求和運算獲得物理地址。所以,段式存儲管理比頁式存儲管理方式須要更多的硬件支持。



四.段頁式存儲

1.  段頁式存儲管理的基本思想

   段頁式存儲組織是分段式和分頁式結合的存儲組織方法,這樣可充分利用分段管理和分頁管理的優勢。

   (1) 用分段方法來分配和管理虛擬存儲器。程序的地址空間按邏輯單位分紅基本獨立的段,而每一段有本身的段名,再把每段分紅固定大小的若干頁。

     (2) 用分頁方法來分配和管理實存。即把整個主存分紅與上述頁大小相等的存儲塊,可裝入做業的任何一頁。程序對內存的調入或調出是按頁進行的。但它又可按段實現共享和保護。

                            地址空間圖

      (3)    邏輯地址結構。一個邏輯地址用三個參數表示:段號S;頁號P;頁內地址d。

                         邏輯地址結構

 (4)段表、頁表、段表地址寄存器。爲了進行地址轉換,系統爲每一個做業創建一個段表,而且要爲該做業段表中的每個段創建一個頁表。系統中有一個段表地址寄存器來指出做業的段表起始地址和段表長度。

2.地址變換過程

   一個邏輯地址爲:基地址x、段號s、頁號p和頁內地址d,求物理地址:(((x)+s)+p)*2^(11)+d


                                   

                                               

在段頁式系統中,爲了便於實現地址變換,須配置一個段表寄存器,其中存放段表始址和段表長TL。

    1) 進行地址變換時,首先利用段號S,將它與段表長TL進行比較。若S<TL,表示未越界

   2) 因而利用段表始址和段號來求出該段所對應的段表項在段表中的位置,從中獲得該段的頁表始址

   3) 利用邏輯地址中的段內頁號P來得到對應頁的頁表項位置,從中讀出該頁所在的物理塊號b

   4) 再利用塊號b和頁內地址來構成物理地址

       上圖示出了段頁式系統中的地址變換機構。在段頁式系統中,爲了得到一條指令或數據,須三次訪問內存。第一次訪問是訪問內存中的段表,從中取得頁表始址;第二次訪問是訪問內存中的頁表,從中取出該頁所在的物理塊號,並將該塊號與頁內地址一塊兒造成指令或數據的物理地址;第三次訪問纔是真正從第二次訪問所得的地址中,取出指令或數據。

顯然,這使訪問內存的次數增長了近兩倍。爲了提升執行速度,在地址變換機構中增設一個高速緩衝寄存器。每次訪問它時,都須同時利用段號和頁號去檢索高速緩存,若找到匹配的表項,即可從中獲得相應頁的物理塊號,用來與頁內地址一塊兒造成物理地址;若未找到匹配表項,則仍須再三次訪問內存。


3.段頁式存儲管理的優缺點

 優勢

   (1) 它提供了大量的虛擬存儲空間。

   (2) 能有效地利用主存,爲組織多道程序運行提供了方便。

缺點:

   (1) 增長了硬件成本、系統的複雜性和管理上的開消。

   (2) 存在着系統發生抖動的危險。

   (3) 存在着內碎片。

   (4) 還有各類表格要佔用主存空間。

 段頁式存儲管理技術對當前的大、中型計算機系統來講,算是最通用、最靈活的一種方案。

相關文章
相關標籤/搜索