基本硬件(基地址與界限地址)算法
地址綁定(編譯時、加載時、 運行時)數組
邏輯地址空間與物理地址空間spa
動態加載操作系統
動態連接與共享庫(與靜態庫對比)線程
維護着一個可運行進程就緒隊列,進行內存與磁盤間線程的載入與存出。3d
內存分區之可變分區的思想,將內存分紅一個個孔(hole),使用一張表維護hole的使用狀況。blog
存在碎片問題(分爲外碎片與內碎片)隊列
外部碎片大,解決思路有 緊縮 與 分頁、分段(運行物理地址不連續的策略)進程
將內存分爲不一樣長度的段,維護分段硬件支持段表內存
<段名稱s,段偏移d>
物理內存分爲固定大小的塊,稱爲幀。邏輯內存也分爲一樣大小的塊,稱爲頁。
<頁碼p,頁偏移> 與對應的頁表
TLB 帶Hash頁表--轉換表緩衝區
保護機制與共享頁
分層頁表
哈希頁表(數組+鏈表)
倒置頁表
使用虛擬內存來邏輯內存容量--分配出去但未使用的內存空間,經過僞分配實現擴容。
概念:僅在須要時,才加載頁面。
調頁程序--惰性變換器實現
通常缺頁錯誤的處理很簡單:
缺頁處理的時間花費主要體如今:處理缺頁中斷、讀入頁面、從新啓動進程
當用戶進程在執行時,可能發生缺頁錯誤。操做系統肯定所須要頁面的磁盤位置,可是卻發現內存上沒有空閒的幀。全部內存都在使用。此時,它會選擇交換出一個進程,以釋放它在全部幀並下降多道程序。
在沒有空閒幀的狀況下,那麼就要查找當前不在使用的一個幀,並釋放它,犧牲幀,他被換出到交換空間,並修改它的頁表。能夠看到當沒有空閒幀的狀況下,須要兩個頁面傳輸(一個傳入,一個傳出)。這種狀況世界加倍了缺頁錯誤處理時間,並增長了有效的訪問時間。 爲了減小置換的時間,系統提供了一個修改位,二者的關聯採用硬件。每當一個頁面內的任何字節被寫入時,它的頁面修改位會由硬件來設置,以表示該頁面被修改過。當要選擇一個頁面置換時,它會先看這個頁面或者幀有沒有被修改過,若是沒有修改過就不用將它換出,直接進行換入,將它的空間覆蓋。
近似LRU
基於計數
搭配上頁面緩衝算法--最近被淘汰的頁面被放置在高速磁盤區,減小淘汰錯誤頁面下次換回的代價
分配算法--平均與比例
全局分配與局部分配(區別,是否面向全部進程的內存暑假頁)
頻繁發生頁面置換