linux内存管理实验报告.doc

linux内存管理实验报告.doc

ID:56907406

大小:120.00 KB

页数:13页

时间:2020-07-23

linux内存管理实验报告.doc_第1页
linux内存管理实验报告.doc_第2页
linux内存管理实验报告.doc_第3页
linux内存管理实验报告.doc_第4页
linux内存管理实验报告.doc_第5页
资源描述:

《linux内存管理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统实验报告院别:XXXXXX班级:XXXXXX学号:XXXXXX姓名:稻草人实验题目:内存管理实验一、实验目的1、通过本次试验体会操作系统中内存的分配模式;2、掌握内存分配的方法(FF,BF,WF);3、学会进程的建立,当一个进程被终止时内存是如何处理被释放块,并当内存不满足进程申请时是如何使用内存紧凑;4、掌握内存回收过程及实现方法;5、学会进行内存的申请释放和管理;二、实验内容附源代码:/*宏定义*/#include#include#include

2、#definePROCESS_NAME_LEN32/*进程名称的最大长度*/#defineMIN_SLICE10/*最小碎片的大小*/#defineDEFAULT_MEM_SIZE1024/*默认内存的大小*/#defineDEFAULT_MEM_START0/*默认内存的起始位置*//*内存分配算法*/#defineMA_FF1#defineMA_BF2#defineMA_WF3intmem_size=DEFAULT_MEM_SIZE;/*内存大小*/intma_algorithm=MA_FF;/*当前分配算法*/in

3、tflag=0;/*设置内存大小标志*/staticintpid=0;/*初始pid*/intalgorithm;/*描述每一个空闲块的数据结构*/structfree_block_type{intsize;intstart_addr;structfree_block_type*next;};/*指向内存中空闲块链表的首指针*/structfree_block_type*free_block;/*每个进程分配到的内存块的描述*/structallocated_block{intpid;intsize;intstart_a

4、ddr;charprocess_name[PROCESS_NAME_LEN];structallocated_block*next;};/*进程分配内存块链表的首指针*/structallocated_block*allocated_block_head=NULL;structallocated_block*find_process(intid){structallocated_block*p;p=allocated_block_head;while(p!=NULL){if(p->pid==id)returnp;}ret

5、urnNULL;}voidswap(int*p,int*q){inttemp;temp=*p;*p=*q;*q=temp;return;}voiddo_exit(){exit(0);}/*初始化空闲块,默认为一块,可以指定大小及起始地址*/structfree_block_type*init_free_block(intmem_size){structfree_block_type*fb;fb=(structfree_block_type*)malloc(sizeof(structfree_block_type));if

6、(fb==NULL){printf("Nomem");returnNULL;}fb->size=mem_size;fb->start_addr=DEFAULT_MEM_START;fb->next=NULL;returnfb;}/*显示菜单*/display_menu(){printf("");printf("1-Setmemorysize(default=%d)",DEFAULT_MEM_SIZE);printf("2-Selectmemoryallocationalgorithm");printf("

7、3-Newprocess");printf("4-Terminateaprocess");printf("5-Displaymemoryusage");printf("0-Exit");}/*设置内存的大小*/set_mem_size(){intsize;if(flag!=0){//防止重复设置printf("Cannotsetmemorysizeagain");return0;}printf("Totalmemorysize=");scanf("%d",&size);if(size>0){mem_s

8、ize=size;free_block->size=mem_size;}flag=1;return1;}/*按FF算法重新整理内存空闲块链表*/rearrange_FF(){structfree_block_type*tmp,*work;printf("RearrangefreeblocksforFF");tmp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。