13章习题讲解、练习题、内存实验(西安邮电学院).ppt

13章习题讲解、练习题、内存实验(西安邮电学院).ppt

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
25、在请求分页系统中的调页策略有____,它是以预测为基础;另一种是_____,由于较易实现,故目前用得较多。 27、为实现段的共享,系统中应设置一张共享段表,其中包含__、___各___等数据项。 主要功能 1.创建进程时,为进程分配内存。 2.撤销进程时,回收进程所占用的内存 3.打印某一时刻内存的使用情况。 4.动态改变内存的大小。 //为了使系统更完善,可根据自己的情况补充其它功能。 内存空闲分区的描述 /*描述空闲分区的数据结构*/ struct free_area_type{ int size; int start_addr; struct free_area_type *next; }; /*指向内存中空闲分区链表的首指针*/ struct free_area_type *free_area; 空闲分区的大小 空闲分区的起始地址 用于形成空闲分区链 描述已分配的内存块 /*分配给进程的分区的描述*/ struct allocated_area{ int pid; int size; int start_addr; struct allocated_area *next; }; /*进程分配内存块链表的首指针*/ struct allocated_area *allocated_area = NULL; 进程标识符 分区的大小 分区的起始地址 常量定义 #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; /*设置内存大小标志*/ init_free_block(int mem_size) /*初始化空闲块,默认为一块,可以指定大小及起始地址*/ struct free_block_type* init_free_block(int mem_size){ struct free_block_type *fb; 利用malloc函数配描述空闲分区所需的结构体空间; if(fb==NULL){ printf(No mem\n); return NULL; } fb-size = mem_size; fb-start_addr = DEFAULT_MEM_START; fb-next = NULL; return fb; } set_mem_size(); /*设置内存的大小*/ set_mem_size(){ int size; 根据标志flag判断是否已经设置过内存大小,如果已经设置,返回; } printf(Total memory size =); scanf(%d, size); if(size0) { 根据size值设置内存的大小 } flag=1; /*表示刚才已经设置过*/ return 1; } set_algorithm() /* 设置当前的分配算法 */ set_algorithm(){ int algorithm; printf(\t1 - First Fit\n); printf(\t2 - Best Fit \n); printf(\t3 - Worst Fit \n); scanf(%d, algorithm); if(algorithm=1 algorithm =3) ma_algorithm=algorithm; //按指定算法重新排列空闲区链表 rearrange(ma_algorithm); } rearrange_BF() /*按BF算法重新整理内存空闲块链表*/ rearrange_BF(){ //请

文档评论(0)

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

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

1亿VIP精品文档

相关文档