記憶體管理 最優適應演算法

2021-05-14 09:28:03 字數 1001 閱讀 2623

最優適應演算法

【問題描述】編寫程式,採用最優適應演算法實現可變分割槽儲存管理方式的主存分配及**。設計具體包括:首先構造主存空間分配表,然後完成主存空間的分配和**;最後編寫主函式對所做工作進行測試。

【提示】動態構造主存空間分配表,包括已佔分割槽表和空閒區表。根據申請,實施記憶體分配,並返回分配所得記憶體首址;分配完後,調整空閒區表(即扣除分配部分),並顯示調整後的空閒區表;若分配失敗,返回分配失敗資訊。**空間時,按記憶體**的四種情況從鍵盤接收**區域的記憶體首址與大小,調整空閒區表(與前、後空閒區相連則合併再插入該項),並顯示調整後的空閒區表。

程式**如下:

//記憶體管理----最優適應分配演算法

#include

#include

#include

#include

#define memsize  1024  //定義記憶體大小

#define membassaddr 0  //定義記憶體起始位址

using namespace std;

struct freepartion//空閒分割槽結構定義

;struct usedpartion//已分配的記憶體分割槽結構定義;

listfreetable;//空閒分割槽表

listusedtable;//已分配分割槽表

void allocatemem(string &jobname,int &joblen)//採用最優適應分配演算法為作業jobname分配joblen大小的空間

else if(itfreetmp->partionlenpartionlen>=joblen)

else

cout<<"為作業"<::iterator itused=usedtable.begin();

list::iterator itfree=freetable.begin();

freepartion free;

while(itused!=usedtable.end())

作業系統 記憶體管理 最佳適應演算法

include include include include include using namespace std struct node node p,s 15 int piece 記錄當前系統中有幾塊空閒區 void priority sort node s,int size void di...

記憶體管理演算法

buddy演算法的優缺點 1 儘管夥伴記憶體演算法在記憶體碎片問題上已經做的相當出色,但是該演算法中,乙個很小的塊往往會阻礙乙個大塊的合併,乙個系統中,對記憶體塊的分配,大小是隨機的,一片記憶體中僅乙個小的記憶體塊沒有釋放,旁邊兩個大的就不能合併。2 演算法中有一定的浪費現象,夥伴演算法是按2的冪次...

首次適應演算法 最佳適應演算法和最差適應演算法

首次適應演算法 first fit 從空閒分割槽表的第乙個表目起查詢該錶,把最先能夠滿足要求的空閒區分配給作業,這種方法的目的在於減少查詢時間。最佳適應演算法 best fit 從全部空閒區中找出能滿足作業要求的,且大小最小的空閒分割槽,這種方法能使碎片盡量小。最差適應演算法 worst fit 它...