作業系統之記憶體對映

2021-10-09 15:23:27 字數 960 閱讀 1203

記憶體管理的發展歷程

dos時代-同一時間只能有乙個程序在執行(也有一些特殊演算法可以支援多程序)

windows9x-多個程序裝入記憶體,會產生兩個問題1:記憶體不夠用2:相互打擾   如下圖所示

1.分頁(記憶體不夠用),記憶體中分成固定大小的頁框(4k),把程式(硬碟上)分成4k大小的塊,用到哪一塊,載入哪一塊,載入的過程中,如果記憶體已經滿了,會把不常用的一塊放到swap分割槽,把最新的一塊載入進來。這個就是著名的lru演算法。

2.虛擬記憶體(解決相互打擾問題)

1.dos win31... 記憶體相互乾掉

2.為了保證程序互不影響---讓程序工作在虛擬空間,程式中用到的空間位址不再是直接的實體地址,而是虛擬的位址,這樣,a進行永遠不可能訪問到b程序的空間。

3.虛擬空間多大呢?定址空間---64位系統2^64,比物理空間大很多。單位是byte

4.站在虛擬的角度,程序是獨享整個系統+cpu

6.線性位址通過os + mmu(硬體 memory management unit)---實體地址

3.缺頁中斷:

1.需要用到的頁面記憶體中沒有,產生缺頁中斷,由核心處理並載入 

採用的演算法是colored pointer

gc 資訊記錄在指標上,不是記錄在頭部,好處:immediate memory use

42位指標  定址空間4t  jdk13 -> 16t  目前為止最大16t  2^44

cpu如何區分乙個立即數和一條指令

作業系統記憶體對映

簡單地說可訪問記憶體總數是由cpu 北橋 記憶體控制器 主機板佈線 如果js偷工減料的話 的位址匯流排寬度和作業系統來決定的。奔騰以後的cpu至少有36條位址匯流排,所以奔騰以上的32位cpu至少在64g是沒問題的 但由於暫存器是32位的,所以可線性訪問的只有4g,其他的需要通過頁面切換 pae 才...

作業系統之記憶體管理

記憶體管理的功能有 1 空間分配與 2 位址轉換 3 空間擴充 4 儲存保護 將資料與程式裝入記憶體分以下步驟 1 編譯成模組 2 鏈結模組 分靜態 裝入時動態 執行時動態鏈結 3 將模組裝入記憶體 分絕對裝入 可重定位裝入 執行時動態裝入 邏輯位址與實體地址 訪問資料時是使用實體地址獲取資料,多個...

作業系統之記憶體管理

位址對映和重定位是乙個概念 適應於請求段的記憶體分配方法是最佳適應和可變分割槽 可重入 reentrant code 又稱為 純 purecode 是一種允許多個程序同時訪問的 為使各個程序所執行的 完全相同,絕對不允許可重入 在執行中有任何改變。目的 擴充主存容量 最基本的特徵 多次性 最主要的技...