1. 程式人生 > >儲存管理之分配演算法

儲存管理之分配演算法

作業系統之儲存管理
分配演算法:
1.最佳適應法
最佳適應演算法要求空閒區按大小遞增的次序排列.在進行記憶體分配時,從空閒分割槽表首開始順序查詢,直到找到第一個能滿足其大小要求的空閒區為止,如果該空閒區大於請求表中的請求長度,則將剩餘空閒區留在可用表中(如果相鄰有空閒區,則與之和並),然後修改相關表的表項.按這種方式為作業分配記憶體,就能把既滿足要求又與作業大小接近的空閒分割槽分配給作業.如果空閒區大於該作業的大小,則與首次適應演算法相同,將剩餘空閒區仍留在空閒分割槽表中.
最佳適應演算法的特點是:若存在與作業大小一致的空閒分割槽,則它必然被選中;若不存在與作業大小一致的空閒分割槽,則只劃分比作業稍大的空閒分割槽,從而保留了大的空閒區.但空閒區一般不可能正好和作業申請的記憶體空間大小一樣,因而將其分割成兩部分時,往往使剩下的空閒區非常小,從而在儲存器中留下許多難以利用的小空閒區(也被稱為碎片).
2.首次適應法
要求把記憶體中的可用分割槽單獨組成可用分割槽表或可用分割槽自由鏈,按起始地址遞增的次序排列.查詢的方法是每次按遞增的次序向後找,一旦找到大於或等於所要求記憶體長度的分割槽,則結束查詢,從找到的分割槽中劃分所要求的記憶體大小分配給使用者,把剩餘的部分進行合併(如果有相鄰的空閒區存在的話),並修改可用區中的相應表項.
該演算法的特點是利用記憶體低地址部分的空閒分割槽,從而保留了高地址部分的大空閒區.但由於低地址部分不斷地被劃分,致使低地址端留下許多難以利用的很小的空閒分割槽,而每次查詢有都是從低地址部分開始,這無疑增加了查詢可用空閒分割槽的開銷.
3.迴圈適應法
為程序分配記憶體空間時,不是每次從空閒分割槽表首開始查詢,而是從上次找到的空閒分割槽的下一個空閒分割槽開始查詢,直到找到第一個能滿足其大小要求的空閒分割槽為止.然後按照作業大小,從該分區劃出一塊記憶體空間分配給請求者,餘下的空閒分割槽仍留在空閒分割槽表中.
該演算法的特點是使儲存空間的利用更加均衡,分配的速度會快一些,碎片也可能會少一些,不至於使小的空閒區集中儲存在儲存區的一端,但會導致缺乏大的空閒分割槽.
4.最壞適應法
最壞適應演算法要求按空閒區大小,從大到小遞減順序組成空閒區表或自由鏈.尋找的方法是當用戶作業或程序申請一個空閒區時,選擇能滿足要求的最大空閒區分配,先檢查空閒區可用表或自由鏈的第一個空閒區的大小是否大於或等於所要求的記憶體長度,若滿足,則分配相應的儲存空間給使用者,然後修改和調整空閒區可用表或自由鏈,否則分配失敗.

相關推薦

儲存管理分配演算法

作業系統之儲存管理 分配演算法: 1.最佳適應法 最佳適應演算法要求空閒區按大小遞增的次序排列.在進行記憶體分配時,從空閒分割槽表首開始順序查詢,直到找到第一個能滿足其大小要求的空閒區為止,如果該空閒區大於請求表中的請求長度,則將剩餘空閒區留在可用表中

作業系統-1-儲存管理LFU頁面置換演算法(leetcode460)

LFU快取 題目:請你為 最不經常使用(LFU)快取演算法設計並實現資料結構。它應該支援以下操作:get 和 put。    get(key) - 如果鍵存在於快取中,則獲取鍵的值(總是正數),否則返回 -1。    put(key, value) - 如果鍵不存在,請

5.3. 虛擬儲存管理------頁面置換演算法

程序執行過程中,訪問的頁面不在記憶體,調入時記憶體已無空閒空間,需要將記憶體中的一頁程式或資料調到外存。 頁面置換演算法(page replacement algorithms):選擇換出哪些頁面的演算法,其好壞直接影響系統的效能。 應具有較低的缺頁率: &nbs

Linux儲存管理磁碟加密

 《Linux_管理系統儲存》這篇文章講解了如何劃分分割槽,通過這篇文章可以瞭解到儲存裝置要能被使用必須掛載到目錄下。我們可以理解為U盤必須插在電腦上才能寫入內容。只要裝置可以被使用,任何人都可以將該裝置掛載後進行操作,所以為了安全起見,可以對磁碟進行加密,只有

儲存管理頁式、段式、段頁式儲存

首先看一下“基本的儲存分配方式”種類:        1.  離散分配方式的出現 由於連續分配方式會形成許多記憶體碎片,雖可通過“緊湊”功能將碎片合併,但會付出很大開銷。於是出現離散分配方式

作業系統儲存管理頁式儲存管理深入淺出

用分割槽方式管理的儲存器,每道程式總是要求佔用主存的一個或幾個連續儲存區域,作業或程序的大小仍受到分割槽大小或記憶體可用空間的限制,因此,有時為了接納一個新的作業而往往要移動已在主存的資訊。這不僅不方便,而且開銷不小。採用分頁儲存器既可免去移動資訊的工作,又可儘

作業系統儲存管理分段儲存

需求 從固定分割槽到動態分割槽,從分割槽方式到分頁方式發展提高了主存空間利用率。 而分段儲存管理的引入,則滿足使用者(程式設計師)程式設計和使用上的要求,這些要求其它各種儲存管理技術難以滿足。 需求解析: 在分頁儲存管理中,經連結編輯處理得到了一維

作業系統儲存管理分段式與段頁式虛擬儲存系統

分段式虛擬儲存系統 分段式虛擬儲存系統把作業的所有分段的副本都存放在輔助儲存器中,當作業被排程投入執行時,首先把當前需要的一段或幾段裝入主存,在執行過程中訪問到不在主存的段時再把它們裝入。因此,在段表中必須說明哪些段已在主存,存放在什麼位置,段長是多少。哪些段

軟考(四)——儲存管理頁式儲存

       之前在總結作業系統這部分知識點的時候,發現儲存這部分的東西比較有意思,所以想把它單拿出來整理下,以便之後的學習,其實很簡單,下面我們來看下它是有多簡單的呢? 儲存管理        作業

儲存管理分頁儲存管理方式C語言模擬(實驗五)

       分頁儲存管理方式,將程式劃分為若干個大小固定的區域(頁),也把實體記憶體劃分為大小和頁相等的塊,通過頁表完成頁到塊的對映。 分頁儲存管理之C語言模擬: #include <stdio.h> #include <string.h> #i

儲存管理頁式、段式、段頁式儲存 以及 優缺點

記憶體管理方式主要分為:頁式管理、段式管理和段頁式管理。 頁式管理的基本原理是將各程序的虛擬空間劃分為若干個長度相等的頁。把記憶體空間按頁的大小劃分為片或者頁面,然後把頁式虛擬地址與記憶體地址建立一一對應的頁表,並用相應的硬體地址轉換機構來解決離散地址變換問題。頁式管理採用

記憶體管理程序分配記憶體的策略和分配演算法涉及的問題

在為多個程序分配記憶體空間時,由於記憶體的大小固定,所以如何分?分多少?量不夠?等問題都會影響到記憶體的利用效率 涉及三個問題: 1)最小物理塊的確定,一個程序有多個頁組成,在記憶體中完全儲存有可能需要很多個塊,但是在CPU中一次執行一條指令,所以停留在記憶體中的很多頁面都

儲存管理技術--連續分配

簡單儲存管理技術:早期的作業系統,只支援單程序,為了實現簡單。在執行程式之前,作業系統必須將待執行的程式全部裝入記憶體。 虛擬儲存技術:現代作業系統,支援多程序併發執行,允許程序裝入部分程式即可以開始執行。其餘部分保留在外存。當執行所需的部分不在記憶體時,中斷程序執行,使之阻塞等待,直到相

C儲存類、連結和記憶體管理--動態分配記憶體及型別限定詞

文章目錄 儲存類說明符 儲存類和函式 動態分配記憶體 `malloc`函式 `free`函式 `calloc`函式 動態分配記憶體的缺點 C型別限定關鍵字

第4章 儲存器管理 連續分配儲存管理方式

一,連續分配儲存管理方式 1,連續分配方式 為一個使用者程式分配一個連續的記憶體空間 (1)單一連續分配 記憶體分為系統區和使用者區兩部分: 系統區:僅提供給OS使用,通常放在記憶體低址部分 使用者區:除系統區以外的全部記憶體空間,提供給使用者使用。 最簡單的一種儲存管

2.7 Linux儲存管理-物理頁面分配

程序需要的連續的頁面,通過alloc_pages來完成 該函式在mm/numa.c和mm/page_alloc.h中都有定義 NUMA和UMA分配記憶體的函式是不併存的,根據CONFIG_DISCONTIGMEM的勾選與否選擇其中一個

【TensorFlow原始碼系列】【三】node分配演算法placement algorithm

一個graph中各種不同特徵的node,tf需要依據一定的規則將不同的node放在不同的device上,這點對於分散式或者單機多卡比較重要。tf在node的分配演算法上有placer和costmodel(代價模型);這裡簡單分析一下placer演算法。代價模型是依據運算元對裝置的要求、裝置的情況等,

作業系統第四章學習筆記 (2)儲存器管理 連續分配儲存管理方式

連續分配方式:為一個使用者程式分配一個連續的記憶體空間 :單一連續分配                 記憶體分為系統區和使用者區兩部分:        

作業系統虛擬儲存管理

  虛擬儲存器 邏輯上擴充記憶體 1. 虛擬儲存器的基本概念    所謂“虛擬儲存器”,是指具有請求調入功能和置換功能,能從邏輯上對記憶體容量加以擴充的一種儲存器系統。          (1) 虛擬儲存管理下 &nbs

Java記憶體管理用什麼方式回收垃圾、管理記憶體呢?垃圾回收演算法有哪些?

文章目錄 1. 什麼是垃圾? 2. 標記-清理(Marked-Sweep) 3. 標記-整理(Marked-Compact) 4. 複製(Copying) 6. Java分代回收機制 6.1 新生代-複製 回收機制