最優適應演算法
【問題描述】編寫程式,採用最優適應演算法實現可變分割槽儲存管理方式的主存分配及**。設計具體包括:首先構造主存空間分配表,然後完成主存空間的分配和**;最後編寫主函式對所做工作進行測試。
【提示】動態構造主存空間分配表,包括已佔分割槽表和空閒區表。根據申請,實施記憶體分配,並返回分配所得記憶體首址;分配完後,調整空閒區表(即扣除分配部分),並顯示調整後的空閒區表;若分配失敗,返回分配失敗資訊。**空間時,按記憶體**的四種情況從鍵盤接收**區域的記憶體首址與大小,調整空閒區表(與前、後空閒區相連則合併再插入該項),並顯示調整後的空閒區表。
程式**如下:
//記憶體管理----最優適應分配演算法
#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 它...