分頁存儲器將主存劃分紅多個大小相等的頁架,受頁架尺寸限制,程序的邏輯地址也天然分紅頁,不一樣的頁能夠放在不一樣頁架中,不須要連續,頁表用於維繫進程的主存完整性算法
頁式存儲管理的邏輯地址由兩部分組成,頁號和單元號,邏輯地址形式:頁號,單元號編程
頁式存儲管理的物理地址也有兩部分組成:頁架號和單元號,物理地址形式:頁架號,單元號數據結構
地址轉換能夠經過查頁表完成性能
可用一張位示圖來記錄主存分配狀況,創建進程頁表維護主存邏輯完整性大數據
頁式存儲管理可以實現多個進程共享程序和數據,數據共享:不一樣進程可使用不一樣頁號共享數據頁,程序共享:不一樣進程必須使用相同頁號共享代碼頁,共享代碼頁中的(JMP <頁內地址> )指令,使用不一樣頁號是作不到 操作系統
頁表放在主存:每次地址轉換必須訪問兩次主存,1.按頁號讀出頁表中的相應頁架號2.按計算出來的絕對地址進行讀寫,下降了存取速度,解決辦法:利用Cache存放部分頁表設計
爲提升地址轉換速度,設置一個專用的高速存儲器,用來存放頁表的一部分,快表:存放在高速存儲器中的頁表部分,快表表項:頁號,頁架號,這種高速存儲器是聯想存儲器,即按照內容尋址,而非按照地址訪問3d
採用快表後,能夠加快地址轉換速度,假定主存訪問時間爲200毫微秒,快表訪問時間爲40毫微秒,查快表的命中率是90%,平均地址轉換代價爲(200+40)*90%+(200+200)*10%=256
毫微秒比兩次訪問主存的時間(400毫微秒)降低了36%指針
按邏輯地址中的頁號查快表,若該頁已在快表中,則由頁架號和單元號造成絕對地址,若該頁不在快表中,則再查主存頁表造成絕對地址,同時將該頁登記到快表中,當快表填滿後,又要登記新頁時,則需在快表中按必定策略淘汰一箇舊登記項code
進程表中登記了每一個進程的頁表,進程表中登記了每一個進程的頁表,進程佔有處理器運行時,其頁表起始地址和長度送入頁表控制寄存器
把進程所有頁面裝入虛擬存儲器,執行時先把部分頁面裝入實際內存,而後,根據執行行爲,動態調入不在主存的頁,同時進行必要的頁面調出,現代OS的主流存儲管理技術,首次只把進程第一頁信息裝入主存,稱爲請求頁式存儲管理
須要擴充頁表項,指出:每頁的虛擬地址、實際地址,主存駐留標誌、寫回標誌、保護標誌、引用標誌、可移動標誌
CPU處理地址:若頁駐留,則得到塊號造成絕對地址,若頁不在內存,則CPU發出缺頁中斷
OS處理缺頁中斷:如有空閒頁架,則根據輔存地址調入頁,更新頁表與快表等,若無空閒頁架,則決定淘汰頁,調出已修改頁,調入頁,更新頁表與快表
當主存空間已滿而又須要裝入新頁時,頁式虛擬存儲管理必須按照必定的算法把已在主存的一些頁調出去,選擇淘汰頁的工做稱爲頁面調度,選擇淘汰頁的算法稱爲頁面調度算法,頁面調度算法設計不當,會出現(剛被淘汰的頁面當即又要調入,並如此反覆),這種現象稱爲抖動或顛簸
假定進程P共n頁,系統分配頁架數m個,P運行中成功訪問次數爲S,不成功訪問次數爲F,總訪問次數A=S+F,缺頁中斷率定義爲:f=F/A,缺頁中斷率是衡量存儲管理性能和用戶編程水平的重要依據
分配給進程的頁架數:可用頁架數越多,則缺頁中斷率就越低,頁面的大小:頁面尺寸越大,則缺頁中斷率就越低,,用戶的程序編制方法:在大數據量狀況下,對缺頁中斷率也有很大影響
用戶編程的例子
理想的調度算法是:當要調入新頁面時,首先淘汰之後再也不訪問的頁,而後選擇距如今最長時間後再訪問的頁,該算法由Belady提出,稱Belady算法,又稱最佳算法(OPT),OPT只可模擬,不可實現
老是淘汰最早調入主存的那一頁,或者說主存駐留時間最長的那一頁(常駐的除外),模擬的是程序執行的順序性,有必定合理性
淘汰最近一段時間較久未被訪問的那一頁,即那些剛被使用過的頁面,可能立刻還要被使用到,模擬了程序執行的局部屬性,既考慮了循環性又兼顧了順序性,嚴格實現的代價大(須要維持特殊隊列)
每頁建一個引用標誌,供硬件使用,設置一個時間間隔中斷:中斷時頁引用標誌置0,地址轉換時,頁引用標誌置1,,淘汰頁面時,從頁引用標誌爲0的頁中間隨機選擇,時間間隔多長是個難點
淘汰最近一段時間內訪問次數較少的頁面,對OPT的模擬性比LRU更好,基於時間間隔中斷,並給每一頁設置一個計數器,時間間隔中斷髮生後,全部計數器清0,每訪問頁1次就給計數器加1,選擇計數值最小的頁面淘汰
採用循環隊列機制構造頁面隊列,造成了一個相似於鐘錶面的環形表,隊列指針則至關於鐘錶面上的錶針,指向可能要淘汰的頁面使用頁引用標誌位
頁面調入主存時,其引用標誌位置1,訪問主存頁面時,其引用標誌位置1,淘汰頁面時,從指針當前指向的頁面開始掃描循環隊列,把所遇到的引用標誌位是1的頁面的引用標誌位清0,並跳過,把所遇到的引用標誌位是0的頁面淘汰,指針推動一步
頁表及相關硬件機制在地址轉換、存儲保護、虛擬地址訪問中發揮了關鍵做用,爲頁式存儲管理設置專門硬件機構,內存管理單元MMU:CPU管理虛擬/物理存儲器的控制線路,把虛擬地址映射爲物理地址,並提供存儲保護,必要時肯定淘汰頁面,反置頁表IPT:MMU用的數據結構
針對內存中的每一個頁架創建一個頁表,按照塊號排序,表項包含:正在訪問該頁框的進程標識、頁號及特徵位,和哈希鏈指針等,用來完成內存頁架到訪問進程頁號的對應,即物理地址到邏輯地址的轉換
MMU經過哈希表把進程標識和虛頁號轉換成一個哈希值,指向IPT的一個表目,MMU遍歷哈希鏈找到所需進程的虛頁號,該項的索引就是頁架號,經過拼接位移即可生成物理地址,若遍歷整個反置頁表中未能找到匹配頁表項,說明該頁不在內存,產生缺頁中斷,請求操做系統調入
每一個程序可由若干段組成,每一段均可以從「0」開始編址,段內的地址是連續的,分段存儲器的邏輯地址由兩部分組成,段號:單元號
段式存儲管理基於可變分區存儲管理實現,一個進程要佔用多個分區,硬件須要增長一組用戶可見的段地址寄存器(代碼段、數據段、堆棧段,附加段),供地址轉換使用,存儲管理須要增長設置一個段表,每一個段佔用一個段表項,包括:段始址、段限長,以及存儲保護、可移動、可擴充等標誌位
經過不一樣進程段表中的項指向同一個段基址來實現,對共享段的信息必須進行保護,如規定只能讀出不能寫入,不知足保護條件則產生保護中斷
把進程的全部分段都存放在輔存中,進程運行時先把當前須要的一段或幾段裝入主存,在執行過程當中訪問到不在主存的段時再把它們動態裝入,段式虛擬存儲管理中段的調進調出是由OS自動實現的,對用戶透明,與段覆蓋技術不一樣,它是用戶控制的主存擴充技術,OS不感知
段式存儲管理能夠基於頁式存儲管理實現,每一段沒必要佔據連續的存儲空間,可存放在不連續的主存頁架中,可以擴充爲段頁式虛擬存儲管理,裝入部分段,或者裝入段中部分頁面