1、實驗目的 了解動態分割槽分配方式中使用的資料結構和分配演算法,並進一步加深對動態分割槽 儲存管理方式及其實現過程的理解。
2、實驗內容
(1)用 c 語言分別實現採用首次適應演算法和最佳適應演算法的動態分割槽分配過程 alloc( )和**過程 free( )。其中,空閒分割槽通過空閒分割槽鏈來管理:在進行記憶體 分配時,系統優先使用空閒區低端的空間。
(2)假設初始狀態下,可用的記憶體空間為 640kb,並有下列的請求序列:
•作業 1 申請 130kb。
•作業 2 申請 60kb。
•作業 3 申請 100kb。
•作業 2 釋放 60kb。
•作業 4 申請 200kb。
•作業 3 釋放 100kb。
•作業 1 釋放 130kb。
•作業 5 申請 140kb。
•作業 6 申請 60kb。
•作業 7 申請 50kb
•作業 6 釋放 60kb。 請分別採用首次適應演算法和最佳適應演算法,對記憶體塊進行分配和**,要求每次 分配和**後顯示出空閒分割槽鏈的情況。
#include#include#define free 0//空閒狀態
#define busy 1//已用狀態
#define ok 1//完成
#define error 0//出錯
#define max_length 640//定義最大主存資訊
using namespace std;
typedef int status;
struct elemtype;
typedef struct dulnode*dulinklist;
dulinklist block_first=null;
dulinklist block_last=null;
status alloc(int);//記憶體分配函式
status free(int);// 記憶體**函式
status first_fit(int,int);//首次適應——位址從小到大
status best_fit(int,int);// 最佳適應——空閒區從小到大排列
void show();//檢視分配
status initblock();//開創帶頭節點的記憶體空間鍊錶
int main()else if(choice==2)else if(choice==0)else cout<<"輸入有誤,請重試!"block_first->next=block_last;
block_last->prior=block_first;
block_last->next=null;
block_last->data.id=0;
block_last->data.address=0;
block_last->data.size=max_length;
block_last->data.state=free;
return 0;
}status alloc(int ch)
p=p->next;
} return error;
}status best_fit(int id,int request)
p=p->next;
} while(p)
} p=p->next;
} if(q==null)
else }
status free(int id)
else
else if(p->next->data.state==free)
}break;
} p=p->next; }
return ok;
}void show()
}
OS 動態分割槽分配方式模擬
1.設計目的 了解動態分割槽分配中使用的資料結構和分配演算法,並進一步加深對動態分割槽儲存管理方式及其實現過程的理解。2.設計內容 1 用c語言實現採用首次適應演算法的動態分割槽分配過程alloc 和 過程free 其中,空閒分割槽通過空閒分割槽鍊錶來管理,在進行記憶體分配時,系統優先使用空閒區低端...
可變分割槽分配方案
當收回主存時,應檢查是否有與歸還區相鄰的空閒區,若有,則應合併成乙個空閒區。有上鄰空閒區 只修改上鄰空閒區長度 為收回的空閒區長度與原上鄰區長度之和 即可 有下鄰空閒區 改記錄這個下鄰空閒區記錄的位址為收回空閒區的位址,長度為下鄰空閒區的長度和收回空閒區的長度即可 既有上鄰又有下鄰空閒區 修改記錄上...
動態分割槽分配
一 實驗目的 1.通過這次實驗,加深對動態分割槽分配的理解,進一步掌握首次適應演算法和最佳適應演算法的理解。了 解動態分割槽分配方式中使用的資料結構和分配演算法,進一步加深對動態分割槽儲存管理方式及其實現 過程的理解。提高學生設計實驗 發現問題 分析問題和解決問題的能力。2.學會可變式分割槽管理的原...