#define _crt_secure_no_warnings
#include#include#include#define process_num 100 //隨機生成的程序數量
#define similize_time 10000 //**時長
#define total_size 1024 //儲存大小
#define process_max_size 200 //程序占用最大記憶體大小
#define process_max_time 1000 //程序占用的最長時間
#define error_address total_size+1 //無效位址
typedef struct process process;
typedef struct memlist memlist;
struct process ;
struct memlist ;
process* undo;
memlist free_head; //儲存沒有被占用的記憶體塊,鍊錶形式
memlist using_head; //儲存正在占用的記憶體塊,鍊錶形式
void random_process();
void similize_process();
void sim_free();
unsigned int sim_alloc(process a);
memlist*best_fit(unsigned int size);
memlist*worst_fit(unsigned int size);
int main()
void random_process()
k = undo_size;
while (k >= 0 && k >= j)
undo[j] = tmp;
undo_size = undo_size + 1;
} while (i < process_num)
if (fp) fclose(fp);
return;
}void similize_process()
break;
}else
i++;
}} printf("%d\n", sim_time);
test_p = free_head.next;
use = 0;
while (test_p != null)
if (total_size - use > max_use)
max_use = total_size - use;
} fprintf(fp, "total deny time %d\ntotal accept time %d\nuse max %dmb", deny_time, accept_time, max_use);
fclose(fp);
system("pause");
return;
}void sim_free()
if (p_f->next != null && p_u_insert->addr + p_u_insert->size == p_f->next->addr)
}else if (p_f != &free_head&&p_f->addr + p_f->size == p_u_insert->addr)
else
tmp = p_u; //刪除usinglist中的當前節點,防止重複釋放
p_u = p_u->next;
free(tmp);
p_u_back->next = p_u;
} else }}
unsigned int sim_alloc(process a)
tmp = &using_head;
while (tmp->next != null && tmp->next->addr < p_u->addr)
p_u->next = tmp->next;
tmp->next = p_u;
return p_u->addr;
} else
}/*以下為兩個確定應該使用哪乙個記憶體塊的選擇演算法*/
memlist*best_fit(unsigned int size)
p_f = p_f->next;
} return result;
}memlist*worst_fit(unsigned int size)
p_f = p_f->next;
} return result;
}/*test program 測試是否正確生成了隨機程序列*/
//int main()
基於JAVA的記憶體管理模擬
一 需求分析 為了更好地理解作業系統記憶體分配和管理的過程和機制,決定通過程式設計模擬作業系統記憶體分配的過程,以更好的理解作業系統記憶體分配過程中的具體執行流程。題目描述如下 編寫乙個程式,包括兩個執行緒,乙個執行緒用於模擬記憶體分配活動,另乙個用於跟蹤第乙個執行緒的記憶體行為,要求兩個執行緒之間...
基於JAVA的記憶體管理模擬
一 需求分析 為了更好地理解作業系統記憶體分配和管理的過程和機制,決定通過程式設計模擬作業系統記憶體分配的過程,以更好的理解作業系統記憶體分配過程中的具體執行流程。題目描述如下 編寫乙個程式,包括兩個執行緒,乙個執行緒用於模擬記憶體分配活動,另乙個用於跟蹤第乙個執行緒的記憶體行為,要求兩個執行緒之間...
動態記憶體管理 模擬實現memcpy,memmove
memcpy 和memmove 都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,原型分別如下 void memcpy void dst,const void src,size t count void memmove void dst,const void sr...