記憶體管理 記憶體管理概述

坐上蝸牛去地球發表於2020-11-03

目錄

https://blog.csdn.net/weixin_45792450/article/details/109314765


記憶體管理的認識

儲存器的發展方向是高速、大容量和小體積,即儲存器嘗試更高讀寫速度更大儲存容量更小物理體積

在計算機中,常見的儲存器有:暫存器快取記憶體硬碟,一般硬碟之類的輔助儲存器又稱外存

在平均讀寫速度上,有:暫存器>快取>記憶體>外存

在單位容量價格上,有:外存<記憶體<快取<暫存器

CPU處理器只能直接訪問記憶體,而不能訪問外存,一般情況記憶體相對外存在容量上是相當稀缺的,如果由程式設計師或者使用者去指定記憶體如何使用,極其容易引起記憶體分配的混亂和浪費,因此作業系統必要的記憶體管理是至關重要的。


記憶體管理的功能

記憶體空間分配與回收

由作業系統完成儲存空間的分配和管理,讓程式設計師擺脫儲存分配的麻煩,提高程式設計效率,使用了諸多的資料結構和高效演算法。

邏輯與實體地址轉換

往往程式中使用的是邏輯地址,因為程式在記憶體的起始地址在未分配空間之前是未知的,由此需要作業系統實現邏輯與實體地址的轉換

記憶體空間的容量擴充

記憶體空間是稀缺的,但由於程式中使用的是邏輯地址,故可用虛擬儲存技術在邏輯上,擴充記憶體的容量

程式記憶體空間的保護

多個程式在記憶體中執行,必須保證相互之間不能發生衝突,相互干擾,相互破壞。而使用者程式也不能超越限制對作業系統軟體的記憶體空間進行肆意更改


記憶體保護的方法

記憶體保護的關鍵在於檢查程式是否有記憶體地址越界行為。

上下限暫存器

在CPU中設定上下限暫存器,用於分別存放作業在主存中的上限和下限地址,當CPU要訪問地址時,與這兩個暫存器的值進行比較即可判斷是否越界,適合邏輯地址即對應相應實體地址的情形(如實體地址與邏輯地址事先就確定只差一個固定的偏移量)

界地址暫存器

界地址暫存器存有程式的最大邏輯地址(通過分配記憶體後由起始實體地址與分配空間大小計算得出),可通過邏輯地址是否大於該界地址暫存器的值比較是否發生越界,若不越界,加上重定位暫存器(存有程式的起始實體地址)的值即為實體地址。


程式調入記憶體的細節

程式從外存到記憶體,實現了外存中作業到記憶體中程式的轉變,大體經過編譯連結裝入三大過程。

編譯

編譯過程主要有編譯彙編兩個階段。編譯階段主要將高階語言轉換為組合語言,彙編階段主要將組合語言翻譯成機器語言。

連結

由連結程式將編譯後形成的目標模組以及所需要的庫函式連結在一起,形成一個完整的裝入模組。連結主要在編譯時載入時執行時進行。連結若發生在編譯時,就是靜態編譯,程式執行前完全確定連結;而執行時連結,表示程式執行到需要的函式庫才連結對應物件。它們各有優劣,視具體情況具體應用。

裝入

由裝入程式將裝入模組裝入記憶體執行,此時會建立對應程式。裝入分為靜態重定位動態重定位。涉及的主要問題是程式中的邏輯地址與實際記憶體的實體地址之間如何對映。靜態重定位在裝入時一次性完成邏輯地址與實體地址的對映關係,而動態重定位需要執行時動態確定邏輯地址與實體地址的對映關係。

相關文章