計算機操做系統 - 內存管理

計算機操做系統 - 內存管理

內存管理

分頁系統地址映射緩存

內存管理單元(MMU)管理着地址空間和物理內存的轉換,其中的**頁表(Page table)存儲着頁(程序地址空間)頁框(物理內存空間)**的映射表。markdown

一個虛擬地址分紅兩個部分,一部分存儲頁面號,一部分存儲偏移量。oop

下圖的頁表存放着 16 個頁,這 16 個頁須要用 4 個比特位來進行索引定位。例如對於虛擬地址(0010 000000000100),前 4 位是存儲頁面號 2,讀取表項內容爲(110 1),頁表項最後一位表示是否存在於內存中,1 表示存在。後 12 位存儲偏移量。這個頁對應的頁框的地址爲 (110 000000000100)。性能

2.一、虛擬內存管理

虛擬內存管理包括:虛擬內存概念、請求分頁管理方式、頁面置換算法、頁面分配策略、工做集和抖動。spa

2.1.一、虛擬內存概念

mp.weixin.qq.com/s?__biz=MzA…操作系統

虛擬內存是一種存儲模式,經過這種模式能讓咱們有種感受,即:咱們的內存自己可以處理遠比內存大的多的數據或者文件。code

虛擬內存可以處理比自己更大的數據的原理其實很是簡單,你能夠簡單理解爲按需加載,在操做系統裏面這種方式有個專有的稱呼:Demand Paging,這是虛擬內存管理的一種最多見的策略。

能這麼作的緣由是存儲在磁盤上的文件,在底層都會按照固定大小的page進行劃分,咱們在使用cpu處理磁盤上的文件的時候,並非一下會把整個文件都載入內存,而是當用到這部分數據的時候纔會去加載,也就是說一個page被拷貝進主內存的觸發機制是:

  • 這塊數據須要被加載

  • 當發生操做系統發起缺頁信號時

也就是說在虛擬內存裏面,咱們能夠開闢一個固定大小的區域用來處理相關的數據,在加載數據時,若是這個區域沒有滿,就直接讀滿,若是滿了以後,系統要讀取新的page時,會發現這個page不在虛擬內存裏面,就會發起一個缺頁信號,爲了讀取新的數據進入內存,咱們能夠釋放掉前面已經處理過的數據,而後加載新的page替代被淘汰數據的page佔的位置,被淘汰page的處理,咱們能夠直接丟棄,也能夠將其再次保存在磁盤上存儲,防止未來還須要讀取。

2.1.二、頁面置換算法

前面提到,若是在內存裏面申請的固定空間滿了,會淘汰一部分page而後替換爲新的page,這裏面的這個算法很是關鍵,算法的好壞決定了內存要和磁盤發生swap的次數,這個次數直接直接影響了程序的性能。

緩存驅逐(過時)算法經常使用的策略有三種,分別是:

github.com/CyC2018/CS-…

2.1.2.一、先進先出策略

FIFO:First In First Out

2.1.2.二、最不常常使用策略

LFU:Least Frequently Used

2.1.2.三、最近最少使用策略

LRU:Least Recently Used

2.二、物理內存管理

包括程序裝入等概念、交換技術、連續分配管理方式和非連續分配管理方式(分頁、分段、段頁式)。

2.2.一、分段
相關文章
相關標籤/搜索