Linux系统内存管理实验报告,linux内存管理实验报告[精品].doc

该实验报告详细介绍了操作系统中内存管理的实践,包括内存分配模式(FF, BF, WF)、进程建立、内存释放和紧凑处理。学生通过编写代码实现内存分配算法,并展示了如何设置内存大小、选择分配算法、创建新进程、终止进程以及查看内存使用情况。实验旨在加深对内存管理的理解。
摘要由CSDN通过智能技术生成

linux内存管理实验报告[精品]

操作系统实验报告

院别:XXXXXX

班级:XXXXXX

学号:XXXXXX

姓名:稻草人

实验题目:内存管理实验

实验目的

通过本次试验体会操作系统中内存的分配模式;

掌握内存分配的方法(FF,BF,WF);

学会进程的建立,当一个进程被终止时内存是如何处理被释放块,并当内存不满足进程申请时是如何使用内存紧凑;

掌握内存回收过程及实现方法;

学会进行内存的申请释放和管理;

实验内容

附源代码:

/*宏定义*/

/* 内存分配算法 */

#define MA_FF 1

#define MA_BF 2

#define MA_WF 3

int mem_size=DEFAULT_MEM_SIZE; /*内存大小*/

int ma_algorithm = MA_FF; /*当前分配算法*/

int flag = 0; /*设置内存大小标志*/

static int pid = 0; /*初始pid*/

int algorithm;

/*描述每一个空闲块的数据结构*/

struct free_block_type{

int size;

int start_addr;

struct free_block_type *next;

};

/*指向内存中空闲块链表的首指针*/

struct free_block_type *free_block;

/*每个进程分配到的内存块的描述*/

struct allocated_block{

int pid;

int size;

int start_addr;

char process_name[PROCESS_NAME_LEN];

struct allocated_block *next;

};

/*进程分配内存块链表的首指针*/

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);

}

/*初始化空闲块,默认为一块,可以指定大小及起始地址*/

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");

}

/*设置内存的大小*/

set_mem_size(){

int size;

if(flag!=0){ //防止重复设置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值