内存管理实验(2007)

内存管理实验(2007)

ID:44333307

大小:131.50 KB

页数:24页

时间:2019-10-20

内存管理实验(2007)_第1页
内存管理实验(2007)_第2页
内存管理实验(2007)_第3页
内存管理实验(2007)_第4页
内存管理实验(2007)_第5页
资源描述:

《内存管理实验(2007)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、内存管理实验1.功能介绍1-Setmemorysize(default=1024)2-Selectmemoryallocationalgorithm3-Newprocess4-Terminateaprocess5-Displaymemoryusage0-Exit2.主要数据结构-1内存空闲分区的描述/*描述每一个空闲块的数据结构*/structfree_block_type{intsize;intstart_addr;structfree_block_type*next;};/*指向内存中空闲块链表的首指针*/structfree_block_type*free_block;主要

2、数据结构-2描述已分配的内存块/*每个进程分配到的内存块的描述*/structallocated_block{intpid;intsize;intstart_addr;charprocess_name[PROCESS_NAME_LEN];structallocated_block*next;};/*进程分配内存块链表的首指针*/structallocated_block*allocated_block_head=NULL;主要数据结构–3常量定义#definePROCESS_NAME_LEN32/*进程名称的最大长度*/#defineMIN_SLICE10/*最小碎片的大小*/#

3、defineDEFAULT_MEM_SIZE1024/*默认内存的大小*/#defineDEFAULT_MEM_START0/*默认内存的起始位置*//*内存分配算法*/#defineMA_FF1#defineMA_BF2#defineMA_WF3intmem_size=DEFAULT_MEM_SIZE;/*内存大小*/intma_algorithm=MA_FF;/*当前分配算法*/staticintpid=0;/*初始pid*/intflag=0;/*设置内存大小标志*/3.主要模块介绍main()函数main(){charchoice;pid=0;free_block=ini

4、t_free_block(mem_size);//初始化空闲区for(;;){display_menu();//显示菜单fflush(stdin);choice=getchar();//获取用户输入switch(choice){case‘1’:set_mem_size();break;//设置内存大小case‘2’:set_algorithm();flag=1;break;//设置分配算法case‘3’:new_process();flag=1;break;//创建新进程case‘4’:kill_process();flag=1;break;//删除进程case‘5’:displ

5、ay_mem_usage();flag=1;break;//显示内存使用case‘0’:do_exit();exit(0);//释放链表并退出default:break;}}}init_free_block(intmem_size);/*初始化空闲块,默认为一块,可以指定大小及起始地址*/structfree_block_type*init_free_block(intmem_size){structfree_block_type*fb;fb=(structfree_block_type*)malloc(sizeof(structfree_block_type));if(fb==

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

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

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

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

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