位址空間:邏輯位址的集合。
主存空間:實體地址的集合。
實體地址=邏輯基址*16+偏移量
位址變換:將邏輯位址轉換為實體地址。又稱位址對映、重定位。
位址變換分為兩類:
靜態位址變換
動態位址變換
靜態位址變換:又稱靜態位址重定位,位址變換在程式裝入時一次完成,以後不再改變。
特點:不需硬體支援,但程式執行時不能在記憶體移動,程式需要連續儲存空間,難以共享。
靜態位址變換示意圖
動態位址變換:又稱動態重定位,在程式執行過程中,每次訪問記憶體之前將要訪問程式位址轉換成記憶體位址。
特點:需要硬體支援,不需連續空間,可以實現虛擬儲存。
動態位址變換示意圖
7.2 分割槽儲存管理
分割槽儲存管理是多道程式系統中採用的一種最簡單的方法。它把系統的記憶體劃分為若干大小不等的區域,作業系統佔乙個區域,其他區域由併發程序共享,每個程序佔乙個區域。
分割槽儲存管理分為:
固定分割槽
動態分割槽
1. 固定分割槽儲存管理
固定分割槽儲存管理方法將記憶體空間劃分為若干個固定大小的分割槽,每個分割槽中可以裝入一道程式。分割槽的位置及大小在執行期間不能改變。
為了便於管理記憶體,系統需要建立一張分割槽使用表,其中記錄系統中的分割槽數目、分割槽大小、分割槽起始位址及狀態。
分割槽使用表例
固定分割槽的記憶體分配
分割槽分配:當有使用者程式要裝入時,由記憶體分配程式檢索分割槽使用表,從中找出乙個能滿足要求的空閒分割槽分配給該程式,然後修改分割槽說明表中相應表項的狀態;若找不到大小足夠的分割槽,則拒絕分配記憶體。
分割槽**:當程式執行完畢不再需要記憶體資源時,釋放程式占用的分割槽,管理程式只需將對應分割槽的狀態置為未分配即可。
特點:最早的多道程式儲存管理方式,不能充分利用記憶體,存在記憶體碎片。
關於動態分配方案的分析:
通常我們將已分配給使用者是用的一段連續的記憶體空間稱為「占用塊」,將未分配給任何使用者的一段連續的記憶體空間稱為「可利用空間塊」或者「空閒塊」,我們在這裡的描述將使用「占用塊」和「空閒塊」這兩個概念。
整個記憶體區在沒有任何使用者進入和執行的情況下只有乙個空閒塊,即整個可供使用者「請求」使用的使用者記憶體區域。隨著不斷的有使用者請求進入系統,並依次獲得系統為其分配的記憶體,使得整個記憶體區域逐漸被分割成兩大部分:低位址區域包含若干占用塊;高低址區域是空閒記憶體區域。經過一段時間後,有的使用者執行結束,它們所占用的記憶體區釋放後轉變為乙個個空閒塊,這就使整個記憶體區域呈現出占用塊和空閒塊交錯相隔的狀態。而此時,如果再有新的使用者「請求」到達,那麼,系統如何為這個「請求」進行記憶體分配呢?
在肯定動態儲存管理的前提下,我們可以採取兩種方案解決這個問題,一種解決方案是系統繼續把高位址的空閒塊分配給使用者,而不理會低位址區域是否有結束執行的使用者釋放的記憶體塊,直到剩餘的高位址區域的空閒塊不能滿足新的使用者「請求」,分配操作無法再進行下去時,才去**結束執行的使用者釋放的記憶體塊,並重新組織記憶體,進而完成記憶體分配。另一種解決方案是一旦有使用者釋放記憶體,就將這塊記憶體**,並重新組織記憶體。每當有新的使用者「請求」到達,系統都從低位址處開始為其找出乙個合適的空閒塊予以分配。
後面我們只討論第二種方案,這種方案的實現要求系統建立一張記錄所有空閒塊的「可利用空間表」,其形式不拘,可以是「目錄表」,也可以採用「鍊錶」的形式。
2. 動態分割槽儲存管理
動態分割槽儲存管理又稱為可變分割槽儲存管理,這種儲存管理方法的實現思想是根據作業大小動態地建立分割槽,並使分割槽的大小正好適應作業的需要。因此系統中分割槽的大小是可變的,分割槽的數目也是可變的。
動態分割槽中的資料結構
在動態分割槽中常用的資料結構有:
空閒分割槽表。用乙個空閒分割槽表來登記系統中的空閒分割槽。其表項類似於固定分割槽。
空閒分割槽鏈。將記憶體中的空閒分割槽以鍊錶方式鏈結起來,構成空閒分割槽鏈。
空閒分割槽表示意圖
空閒分割槽鏈示意圖
分割槽分配演算法
目前常用的分割槽分配演算法有以下幾種:
首次適應演算法
迴圈首次適應演算法
最佳適應演算法
最壞適應演算法
首次適應演算法
首次 適應演算法又稱最先適應演算法,該演算法要求空閒分割槽按位址遞增的次序排列。
首次適應演算法分配時從表頭指標開始查詢可利用空間表,將找到的第乙個大小不小於「請求」的空閒塊的一部分分配給使用者。可利用空間表本身既不按節點的初始位址有序,也不按節點的大小有序。使用者釋放記憶體,**時只是將空閒塊插入在鍊錶的表頭即可,此演算法比較節省時間。
在進行記憶體分配時,從空閒分割槽表(或空閒分割槽鏈)首開始順序查詢,直到找到第乙個能滿足其大小要求的空閒分割槽為止。
然後,再按照作業大小,從該分割槽中劃出一塊記憶體空間分配給請求者,餘下的空閒分割槽仍然留在空閒分割槽表(或空閒分割槽鏈)中。
首次適應演算法的特點
特點:優先利用記憶體低位址端,高位址端有大空閒區,但低位址端有許多小空閒分割槽時會增加查詢開銷。
迴圈首次適應演算法
迴圈首次適應演算法又稱下次適應演算法,它是首次適應演算法的變形。
該演算法是首次適應演算法的變種。在分配記憶體空間時,不再每次從表頭(鏈首)開始查詢,而是從上次找到空閒區的下乙個空閒開始查詢,直到找到第乙個能滿足要求的的空閒區為止,並從中劃出一塊與請求大小相等的記憶體空間分配給作業。該演算法能使記憶體中的空閒區分布得較均勻。
該演算法在為程序分配記憶體空間時,從上次找到的空閒分割槽的下乙個空閒分割槽開始查詢,直到找到第乙個能滿足其大小要求的空閒分割槽為止。
然後,再按照作業大小,從該分割槽中劃出一塊記憶體空間分配給請求者,餘下的空閒分割槽仍然留在空閒分割槽表(或空閒分割槽鏈)中。
迴圈首次適應演算法的特點
特點:使儲存空間的利用更加均衡,但會使系統缺乏大的空閒分割槽。
最佳適應演算法
最佳適應演算法要求空閒分割槽按容量大小遞增的次序排列。
最佳適應演算法將可利用空間表中乙個大小不小於「請求」且最接近「請求」的空閒塊的一部分分配給使用者。分配與**都需要對可利用空間表從頭至尾查詢一遍。為了避免每次分配都要查詢整個鍊錶,通常要求節點從大到小排序,由此只需找到第乙個足夠大的空閒塊即可予以分配。但**時,必須把**的空閒塊放置在符合大小順序關係的鍊錶位置。在分配時容易產生太小而無法利用的記憶體碎片,同時這種做法也保留了那些很大的記憶體塊以備響應將來發生的記憶體量較大的使用者「請求」,從而使整個鍊錶逐漸趨向於節點大小差別甚遠的狀態。這種分配演算法適合請求分配記憶體大小範圍較廣的系統,此演算法比較費時間。
在進行記憶體分配時,從空閒分割槽表(或空閒分割槽鏈)首開始順序查詢,直到找到第乙個能滿足其大小要求的空閒分割槽為止。
如果該空閒分割槽大於作業的大小,則從該分割槽中劃出一塊記憶體空間分配給請求者,將剩餘空閒區仍然留在空閒分割槽表(或空閒分割槽鏈)中。
最佳適應演算法的特點
按最佳適應演算法為作業分配記憶體,就能把既滿足作業要求又與作業大小最接近的空閒分割槽分配給作業。
特點:保留了大的空閒區。但分割後的剩餘空閒區很小。
最壞適應演算法
最壞適應演算法要求空閒分割槽按容量大小遞減的次序排列。
最差適應演算法將可利用空間表中乙個大小不小於「請求」且是鍊錶中最大的空閒塊的一部分分配給使用者。要求節點從大到小排序。分配時不需查詢,**時要查詢,以便插入到適當位置。這種演算法將使鍊錶的節點大小逐漸趨於均勻,適合請求分配記憶體大小範圍較窄的系統,此演算法最費時間。
在進行記憶體分配時,先檢查空閒分割槽表(或空閒分割槽鏈)中的第乙個空閒分割槽,若第乙個空閒分割槽小於作業要求的大小,則分配失敗;
否則從該空閒分割槽中劃出與作業大小相等的一塊記憶體空間分配給請求者,餘下的空閒分割槽仍然留在空閒分割槽表(或空閒分割槽鏈)中。
最壞適應演算法的特點
特點:剩下的空閒區比較小,但當大作業到來時,其儲存空間的申請往往得不到滿足。
如何衡量分配演算法的好壞
對於某乙個作業序列來說,若某種分配演算法能將該作業序列中所有作業安置完畢,則稱該分配演算法對這一作業序列合適,否則稱為不合適。
3 4 儲存器的基本概念
返回目錄 計算機組成原理筆記目錄 2019 王道考研 3.4 儲存器的基本概念 1.儲存器的分類 1.從層次的角度來分 1.高速緩衝儲存器 cache 2.主儲存器 主存 記憶體 主存和cache可以直接與cpu交換資訊 3.輔助儲存器 輔存 外存 2.從儲存器使用材料的不同來分 1.磁表面儲存器 ...
基本分頁儲存管理的基本概念
基本分頁儲存管理的思想 把記憶體分為乙個個相等的小分割槽,再按照分割槽大小把程序拆分成乙個個小部分 將記憶體空間分為乙個個大小相等的分割槽 比如 每個分割槽4kb 每個分割槽就是乙個 頁框 或稱 頁幀 記憶體塊 物理塊 每個頁框有乙個編號,即 頁框號 或者 記憶體塊號 頁幀號 物理塊號 頁框號從0開...
儲存的基本概念
1.磁碟分割槽的基本概念 另行參考 硬碟的分割槽由主分割槽 擴充套件分割槽和邏輯分割槽組成 主分割槽 包括擴充套件分割槽 的最大個數是四個,主分割槽 包含擴充套件分割槽 的個數是由硬碟的主引導記錄mbr master boot recorder 決定的,mbr存放啟動管理程式 grub,lilo,n...