軟考(軟件設計師)--操作系統基礎知識之存儲管理(二)

一、基本分段式存儲管理的實現

段表:
爲使程序正常運行,須在系統中爲每個進程建立一張段映射表,簡稱“段表”/每個段在表中佔有一個表項。
段表結構:段號;段在內存中的其實地址(基址);段長。
段表可以存放在寄存器中,但更多的使存放在內存中。
段表用於實現從邏輯段到物理內存區域的映射。

地址變換機構:
在系統中設置段表寄存器,用於存放段表始址和段表長度,以實現從進程的邏輯地址到物理地址的變換。
當段表存放在內存中時,每訪問一個數據,都需訪問兩次內存,降低了計算機的速率。
解決方法:設置聯想寄存器,用於保存最近常用的段表項。

分頁和分段的主要區別:
相似點:採用離散分配方式,通過地址映射機構實現地址變換。
不同點:

  • 頁是信息的物理單位,分頁是爲了滿足系統的需求;段時信息的邏輯段位,含有意義相對完整的信息,是爲了滿足用戶的需求。
  • 頁的大小固定且有系統確定,由系統把邏輯地址分爲頁號和頁內地址,由機器硬件實現;段的長度不固定,取決於用戶程序,編譯程序對源程序編譯時根據信息的性質劃分。
  • 分頁的作業地址空間是一維的;分段的作業地址空間是二維的。

二、段頁式存儲管理

分段和分頁存儲管理方式各有優點。把兩者結合成一種新的存儲管理方式–段頁式存儲管理方式,具有兩者的長處。
基本原理:
先將用戶車程序分成若干段,再把每個段分成若干頁,併爲每個段賦予一個段名。
基本段頁式存儲管理:把作業的所有段裝入內存方可運行。
請求段頁式存儲管理:沒必要把整個作業裝入內存,可把作業的幾段或幾頁裝入內存即可運行。
段頁式系統地址結構:段號;段內頁號;頁內地址。
在這裏插入圖片描述
在段頁式系統中,爲了獲得一條指令或數據,需訪問三次內存:
第一次:訪問內存中的段表,取得頁表始址
第二次:訪問內存中的頁表,取得該頁所在的物理塊號,將塊號與業內地址形成物理地址
第三次:根據第二次所得的地址,取出指令或數據
缺點:訪存次數增加兩倍
解決方法:增設高速緩存寄存器。

三、頁面置換算法

  1. 最佳置換算法
  2. 先進先出置換算法
  3. 最近醉酒未使用(LRU)算法

最佳置換算法:
一種理想化的算法,具有最好的性能,但難於實現。先進先出置換算法最直觀,但可能性最差,故應用極少。
其所選擇的被淘汰頁面,將式以後永不再用,或許式在最長(未來)時間不再被訪問的頁面。
優點:保證獲得最低的缺頁率
缺點:無法預知一個進程在內存的若干個頁面,哪個在未來最長時間內不再被訪問。
(可以用來評價其它算法好壞)

先進先出置換算法
總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。
算法實現簡單,只需把一個進程已調入內存的頁面,按先後次序鏈接成一個隊列,並設置一個指針(替換指針),使它總是指向最老的頁面。
算法與進程的實際運行規律不相適應,因爲進程中的某些頁面經常被訪問,但先進先出置換算法不能保證這些頁面不被淘汰。

Belady現象
如果對一個進程未分配它所要求的全部頁面,有時就會出現分配的頁面數增多但缺頁率反而提高的異常現象。發生在FIFO算法。

最近醉酒未使用(LRU)算法:
根據頁面調入內存後的使用情況進行決策。由於無法預測各頁面將來的使用情況,只能利用“最近的過去”作爲“最近的將來”的進士,因此,LRU置換算法使選擇最近最久未使用的頁面語義淘汰。
該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間T,當需要淘汰一個頁面時,選擇現有也買你中其T值最大的,即最近最久未使用的頁面予以淘汰。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章