linux内存管理实验malloc,linux内存管理实验报告.doc
linux內(nèi)存管理實(shí)驗(yàn)報(bào)告
操作系統(tǒng)實(shí)驗(yàn)報(bào)告
院別:XXXXXX
班級(jí):XXXXXX
學(xué)號(hào):XXXXXX
姓名:稻草人
實(shí)驗(yàn)題目:內(nèi)存管理實(shí)驗(yàn)
實(shí)驗(yàn)?zāi)康?/p>
通過本次試驗(yàn)體會(huì)操作系統(tǒng)中內(nèi)存的分配模式;
掌握內(nèi)存分配的方法(FF,BF,WF);
學(xué)會(huì)進(jìn)程的建立,當(dāng)一個(gè)進(jìn)程被終止時(shí)內(nèi)存是如何處理被釋放塊,并當(dāng)內(nèi)存不滿足進(jìn)程申請(qǐng)時(shí)是如何使用內(nèi)存緊湊;
掌握內(nèi)存回收過程及實(shí)現(xiàn)方法;
學(xué)會(huì)進(jìn)行內(nèi)存的申請(qǐng)釋放和管理;
實(shí)驗(yàn)內(nèi)容
附源代碼:
/*宏定義*/
/* 內(nèi)存分配算法 */
#define MA_FF 1
#define MA_BF 2
#define MA_WF 3
int mem_size=DEFAULT_MEM_SIZE; /*內(nèi)存大小*/
int ma_algorithm = MA_FF; /*當(dāng)前分配算法*/
int flag = 0; /*設(shè)置內(nèi)存大小標(biāo)志*/
static int pid = 0; /*初始pid*/
int algorithm;
/*描述每一個(gè)空閑塊的數(shù)據(jù)結(jié)構(gòu)*/
struct free_block_type{
int size;
int start_addr;
struct free_block_type *next;
};
/*指向內(nèi)存中空閑塊鏈表的首指針*/
struct free_block_type *free_block;
/*每個(gè)進(jìn)程分配到的內(nèi)存塊的描述*/
struct allocated_block{
int pid;
int size;
int start_addr;
char process_name[PROCESS_NAME_LEN];
struct allocated_block *next;
};
/*進(jìn)程分配內(nèi)存塊鏈表的首指針*/
struct allocated_block *allocated_block_head = NULL;
struct allocated_block *find_process(int id)
{
struct allocated_block *p;
p=allocated_block_head;
while(p!=NULL)
{
if (p->pid==id)
return p;
}
return NULL;
}
void swap(int *p,int *q)
{
int temp;
temp = *p;
*p = *q;
*q = temp;
return;
}
void do_exit()
{
exit(0);
}
/*初始化空閑塊,默認(rèn)為一塊,可以指定大小及起始地址*/
struct free_block_type* init_free_block(int mem_size){
struct free_block_type *fb;
fb=(struct free_block_type *)malloc(sizeof(struct free_block_type));
if(fb==NULL){
printf("No mem\n");
return NULL;
}
fb->size = mem_size;
fb->start_addr = DEFAULT_MEM_START;
fb->next = NULL;
return fb;
}
/*顯示菜單*/
display_menu(){
printf("\n");
printf("1 - Set memory size (default=%d)\n", DEFAULT_MEM_SIZE);
printf("2 - Select memory allocation algorithm\n");
printf("3 - New process \n");
printf("4 - Terminate a process \n");
printf("5 - Display memory usage \n");
printf("0 - Exit\n");
}
/*設(shè)置內(nèi)存的大小*/
set_mem_size(){
int size;
if(flag!=0){ //防止重復(fù)設(shè)置
總結(jié)
以上是生活随笔為你收集整理的linux内存管理实验malloc,linux内存管理实验报告.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耳垂有硬块怎么治疗
- 下一篇: 孩子散瞳后视力提高了是什么原因?