内存管理实验解读.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统 内存管理 1. 功能介绍 1 - Set memory size (default=1024) 2 - Select memory allocation algorithm 3 - New process 4 - Terminate a process 5 - Display memory usage 0 - Exit 2. 主要数据结构 -1 内存空闲分区的描述 /*描述每一个空闲块的数据结构*/ struct free_block_type{ int size; int start_addr; struct free_block_type *next; }; /*指向内存中空闲块链表的首指针*/ struct free_block_type *free_block; 2. 主要数据结构 - 2 描述已分配的内存块 /*每个进程分配到的内存块的描述*/ 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; 2.主要数据结构 – 3 常量定义 #define PROCESS_NAME_LEN 32 /*进程名长度*/ #define MIN_SLICE 10 /*最小碎片的大小*/ #define DEFAULT_MEM_SIZE 1024 /*内存大小*/ #define DEFAULT_MEM_START 0 /*起始位置*/ /* 内存分配算法 */ #define MA_FF 1 #define MA_BF 2 #define MA_WF 3 int mem_size=DEFAULT_MEM_SIZE; /*内存大小*/ int ma_algorithm = MA_FF; /*当前分配算法*/ static int pid = 0; /*初始pid*/ int flag = 0; /*设置内存大小标志*/ 3. 主要模块介绍 main()函数 main(){ char choice; pid=0; free_block = init_free_block(mem_size); //初始化空闲区 while(1) { 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’: display_mem_usage(); flag=1; break; //显示内存使用 case ‘0’: do_exit(); exit(0); /释放链表并退出 default: break; } } } init_free_block(int mem_size); /*初始化空闲块,默认为一块,可以指定大小及起始地址*/ 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;

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档