記憶體管理 記憶體管理概述
目錄
https://blog.csdn.net/weixin_45792450/article/details/109314765
記憶體管理的認識
儲存器的發展方向是高速、大容量和小體積,即儲存器嘗試更高讀寫速度,更大儲存容量,更小物理體積。
在計算機中,常見的儲存器有:暫存器,快取,記憶體,硬碟,一般硬碟之類的輔助儲存器又稱外存。
在平均讀寫速度上,有:暫存器>快取>記憶體>外存
在單位容量價格上,有:外存<記憶體<快取<暫存器
CPU處理器只能直接訪問記憶體,而不能訪問外存,一般情況記憶體相對外存在容量上是相當稀缺的,如果由程式設計師或者使用者去指定記憶體如何使用,極其容易引起記憶體分配的混亂和浪費,因此作業系統必要的記憶體管理是至關重要的。
記憶體管理的功能
記憶體空間分配與回收
由作業系統完成儲存空間的分配和管理,讓程式設計師擺脫儲存分配的麻煩,提高程式設計效率,使用了諸多的資料結構和高效演算法。
邏輯與實體地址轉換
往往程式中使用的是邏輯地址,因為程式在記憶體的起始地址在未分配空間之前是未知的,由此需要作業系統實現邏輯與實體地址的轉換
記憶體空間的容量擴充
記憶體空間是稀缺的,但由於程式中使用的是邏輯地址,故可用虛擬儲存技術在邏輯上,擴充記憶體的容量
程式記憶體空間的保護
多個程式在記憶體中執行,必須保證相互之間不能發生衝突,相互干擾,相互破壞。而使用者程式也不能超越限制對作業系統軟體的記憶體空間進行肆意更改
記憶體保護的方法
記憶體保護的關鍵在於檢查程式是否有記憶體地址越界行為。
上下限暫存器
在CPU中設定上下限暫存器,用於分別存放作業在主存中的上限和下限地址,當CPU要訪問地址時,與這兩個暫存器的值進行比較即可判斷是否越界,適合邏輯地址即對應相應實體地址的情形(如實體地址與邏輯地址事先就確定只差一個固定的偏移量)
界地址暫存器
界地址暫存器存有程式的最大邏輯地址(通過分配記憶體後由起始實體地址與分配空間大小計算得出),可通過邏輯地址是否大於該界地址暫存器的值比較是否發生越界,若不越界,加上重定位暫存器(存有程式的起始實體地址)的值即為實體地址。
程式調入記憶體的細節
程式從外存到記憶體,實現了外存中作業到記憶體中程式的轉變,大體經過編譯,連結,裝入三大過程。
編譯
編譯過程主要有編譯和彙編兩個階段。編譯階段主要將高階語言轉換為組合語言,彙編階段主要將組合語言翻譯成機器語言。
連結
由連結程式將編譯後形成的目標模組以及所需要的庫函式連結在一起,形成一個完整的裝入模組。連結主要在編譯時,載入時,執行時進行。連結若發生在編譯時,就是靜態編譯,程式執行前完全確定連結;而執行時連結,表示程式執行到需要的函式庫才連結對應物件。它們各有優劣,視具體情況具體應用。
裝入
由裝入程式將裝入模組裝入記憶體執行,此時會建立對應程式。裝入分為靜態重定位和動態重定位。涉及的主要問題是程式中的邏輯地址與實際記憶體的實體地址之間如何對映。靜態重定位在裝入時一次性完成邏輯地址與實體地址的對映關係,而動態重定位需要執行時動態確定邏輯地址與實體地址的對映關係。
相關文章
- 01記憶體管理-概述記憶體
- 自動共享記憶體管理 自動記憶體管理 手工記憶體管理記憶體
- 記憶體管理篇——實體記憶體的管理記憶體
- 【記憶體管理】記憶體佈局記憶體
- 記憶體管理記憶體
- 記憶體管理兩部曲之實體記憶體管理記憶體
- 作業系統記憶體管理概述作業系統記憶體
- 【作業系統】記憶體管理概述作業系統記憶體
- Go:記憶體管理與記憶體清理Go記憶體
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- Aerospike的bin記憶體管理--即列記憶體管理ROS記憶體
- 記憶體管理兩部曲之虛擬記憶體管理記憶體
- 【記憶體管理】Oracle AMM自動記憶體管理詳解記憶體Oracle
- Linux 記憶體管理:記憶體對映Linux記憶體
- 記憶體管理-swMemoryGlobal記憶體
- OC記憶體管理記憶體
- iOS 記憶體管理iOS記憶體
- JavaScript 記憶體管理JavaScript記憶體
- MySQL記憶體管理MySql記憶體
- Oracle 記憶體管理Oracle記憶體
- JavaScript記憶體管理JavaScript記憶體
- 2 Day DBA-管理Oracle例項-管理記憶體-修改記憶體設定-自動記憶體管理Oracle記憶體
- 【記憶體管理】Oracle如何使用ASMM自動共享記憶體管理記憶體OracleASM
- 2 Day DBA-管理Oracle例項-管理記憶體-關於記憶體管理Oracle記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- C語言-記憶體管理之一[記憶體分配]C語言記憶體
- C語言-記憶體管理之二[記憶體指令]C語言記憶體
- CF的記憶體管理。記憶體
- “理解”iOS記憶體管理iOS記憶體
- iOS 記憶體管理MRCiOS記憶體
- iOS 記憶體管理研究iOS記憶體
- HotSpot JVM 記憶體管理HotSpotJVM記憶體
- Flink記憶體管理記憶體
- Windows記憶體管理-分段Windows記憶體
- JavaScript的記憶體管理JavaScript記憶體
- Android記憶體管理Android記憶體
- JVM-記憶體管理JVM記憶體
- swoole記憶體管理分析記憶體