Linux記憶體總結(1)

2021-08-15 13:34:09 字數 1113 閱讀 2472

記憶體管理滿足的要求:

重定位是多道程式在記憶體中同時執行的基礎,有動態重定位與靜態重定位。

2.保護

在程序執行的過程中需要保護,避免受到其他程序的干涉。通過處理器的暫存器來實現保護。

3.共享

在保護的同時需要靈活性,允許多個程序訪問記憶體的同乙個部分。

4.邏輯組織

5.物理組織

下面介紹一下記憶體分割槽:

一、固定分割槽

第一種是分成固定的且相同的大小。

第二種是分成固定且不同的大小。

程式在執行的時候都要占用乙個固定大小的分割槽,這個分割槽一定要足夠容納程序的最小分割槽,比如3m的程序放在4m的記憶體中,就會產生1m的內部碎片。

二、動態分割槽

對於分割槽的長度和數目是可變的。

(1)對於請求表中的要求記憶體長度,分配程式從可用表或者自由鏈尋找出合適的空閒區。

(2)分配空閒空閒區之後,需要實時更新可用表和自由鏈。

(3)在記憶體釋放時,需要對相鄰的空閒區進行連線合併,並且更新可用表和自由鏈。

在a中有一塊64m的記憶體空間,其中作業系統佔8m,有自由空間58m,其中有三個程序分別佔10m,15m,25m,剩餘8m,當我們換出程序2,如圖b,再換入程序4,剩餘的8m空間無法讓程序4執行,所以程序4覆蓋程序2的空間,但是在程序4與程序3之間有5m的空間無法被利用,這些碎片被稱為外部碎片。

2、動態分割槽時的分配方法

(1)最先適應法:最先適應法要求可用表或自由鏈按照其實位址遞增的次序排列。特點是一旦找到大於或者等於所有要求記憶體長度的分割槽,則結束探索,然後在這個分割槽中劃出所要求大小的空間分配給使用者,並且把餘下的空間合併,更新可用表

(2)最佳適應法:按照空閒區的大小從小到大的次序排序,當使用者申請空間時,從頭開始查詢,當找到滿足的第乙個區時,停止查詢,然後跟最先適應法的處理方法相同。

(3)最壞適應法:按照空閒區的大小遞減次序排序。當使用者申請空間時,從第乙個空閒區開始匹配,如果第乙個空閒區的大小大於或等於所申請的空間大小,則按照以上的處理方法,否則分配失敗。

Linux記憶體管理1 記憶體定址

本文將主要以x86架構為例來介紹linux記憶體管理的記憶體定址。作業系統是橫跨軟體和硬體的橋梁,作業系統設計者必須在硬體相關 和硬體無關 之間劃分清晰的界限,以便作業系統很容易的移植到不同的平台 時代 處理器資料 匯流排寬度 是否有段 位址匯流排 寬度訪存 空間備註 石器時代 80808位無 16...

linux 記憶體定址總結

邏輯位址到實體地址的轉換過程 邏 輯位址經過記憶體控制單元 mmu 的分段單元硬體電路之後轉換成線性位址,線性位址經過分頁單元的硬體電路轉換成實體地址。在mp中,多個cpu通過記憶體 仲裁器對ram進行併發的訪問 每個ram有乙個仲裁器 在up中也是有記憶體仲裁器的,因為cpu和dma控制器要併發的...

linux 記憶體定址總結

邏輯位址到實體地址的轉換過程 邏 輯位址經過記憶體控制單元 mmu 的分段單元硬體電路之後轉換成線性位址,線性位址經過分頁單元的硬體電路轉換成實體地址。在mp中,多個cpu通過記憶體 仲裁器對ram進行併發的訪問 每個ram有乙個仲裁器 在up中也是有記憶體仲裁器的,因為cpu和dma控制器要併發的...