用c語言實現採用首次適應演算法的動態分割槽分配過程和**過程。
其中,空閒分割槽通過空閒分割槽鏈(表)來管理;在進行記憶體分配時,系統優先使用空閒區低端的空間,要求每次分配和**後顯示出空閒記憶體分割槽鏈的情況。
#include
#include
#include
#define free 0
#define busy 1
#define max_length 640
typedef
struct freearea//空閒區的結構體
freearea;
typedef
struct dunode//首尾不互連的雙向鍊錶結點
dunode,
*dulinklist;
dulinklist m_rid;
dulinklist m_last;
void
init()
//空閒區佇列初始化
intfirst_fit
(int id,
int size)
//首次適應演算法
if(p->data.isused==free && p->data.size==size)
//請求大小剛好滿足
if(p->data.isused==free && p->data.size>size)
//空閒區比所需記憶體大,則需要將多的記憶體作**處理
p=p->next;
}return0;
}void
alloc()
//分配記憶體
void
freenode()
//釋放記憶體if(
!p->next->data.isused && p->prior->data.isused)
//與後乙個空閒區相鄰,則合併
else
p->next = p->next->next;}if
(!p->prior->data.isused &&
!p->next->data.isused)
//前後的空閒區均為空
else
p->prior->next = p->next->next;
}printf
("釋放記憶體成功!\n");
break;}
p = p->next;if(
!p)printf
("記憶體中沒有該需要釋放記憶體的作業!");
}}void
show()
}int
main()
}}
最佳適應演算法 C語言實現
用c語言實現採用最佳適應演算法的動態分割槽分配過程和 過程。其中,空閒分割槽通過空閒分割槽鏈 表 來管理 在進行記憶體分配時,系統優先使用空閒區低端的空間,要求每次分配和 後顯示出空閒記憶體分割槽鏈的情況。include include include define free 0 define bu...
首次適應演算法 FF 和迴圈首次適應演算法 NF
原文 ff和nf演算法都是基於順序搜尋的動態分割槽分配演算法,在記憶體中檢索一塊分割槽分配給作業。如果空間大小合適則分配,如果找不到空間則等待。ff演算法按位址遞增從頭掃瞄空閒分割槽,如果找到空閒分割槽大小 作業大小則分配。如果掃瞄完空閒分割槽表都沒有找到分割槽,則分配失敗。nf演算法和ff演算法類...
c語言實現磁碟排程演算法 C語言實現洗牌演算法
首先看一道題目 有乙個大小為100的陣列,裡面的元素是從 1 到 100,隨機從陣列中選擇50個不重複數。用math.random 100,就可以拿到乙個 0 到 99 的隨機數,是不是重複50次就可以了?當然不是,假如,第一次隨機到5,第二次如果再一次隨機到5的話,要求是選擇不重複的數,所以要選出...