下载此文档

0967010127王佳方存储器管理.doc


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/15 下载此文档
文档列表 文档介绍
,通过对存储器管理这一章的学习,了解到采用什么样的存储管理方式(连续分配方式或离散分配方式)才能对内存有最大的利用,同时要求掌握在虚拟技术,通过从逻辑上对内存容量扩充。,采取固定分区分配算法为程序分配一组连续的固定的内存用户空间,使作业并发运行。,。,前者可分配第四个分区后者不可不分配。:空闲分区表,空闲分区链,按照首次适应算法为进程分配内存时,空闲分区链以地址递增的次序连接,从空闲分区链的链首查找,直至找到一个大小能满足要求的空闲分区,然后再按照作业的大小,从该分区划出一块空间分配给请求者,若从链首到链尾都找不到一个能满足要求的分区,则此次内存分配失败,返回。3.(基于离散分配方式),当进程要访问的页面不在内存而需把它们调入内存,但内存业务空闲空间时,可利用虚拟技术把页面按照某种算法置换出来。按照先进先出页面置换算法,先把一个进程已调入内存的页面,按照先后次序连接成一个队列,并设置也个总是指向最老页面的替换指针,利用这个指针找到最先进入内存的页面并置换出来。实验步骤1打开Microsoftvisualc++,按要求输入进程名和到达时间等。#include<>#include<>#include<>structNode{intnum;intsize;intaddr;intstate;//状态值为1是表示已分配,值为0表示未分配structNode*next;};voidsetnull(structNode**p){*p=NULL;}//x为分区号,y为分区大小,z为分区起址,t为分区状态,i为插入的位置voidinsert(structNode**p,intx,inty,intz,intt,inti){intj=1;structNode*s,*q;s=(structNode*)malloc(sizeof(structNode));/*建立要插入的结点s*/s->num=x;s->size=y;s->addr=z;s->state=t;s->next=NULL;q=*p;if(i==1)/*插入的结点作为头结点*/{s->next=q;*p=s;}else{while(j<i-1&&q->next!=NULL)/*查找第i-1个结点*/{q=q->next;j++;}if(j==i-1)/*找到了第i-1个结点,由q指向它*/{s->next=q->next;/*将结点s插入到q结点之后*/q->next=s;}elseprintf("位置参数不正确!\n");}}intlocate(structNode**p,inty){intn=0;structNode*q=*p;while(q!=NULL)/*查找num域大于x且未分配的第一个结点*/{if(q->size<y){q=q->next;n++;}else{if(q->state!=0){q=q->next;n++;}elsebreak;}}if(q==NULL)/*未找到num域大于x的结点*/return(-1);else/*找到num域大于x的结点*/return(n+1);}voiddel(structNode**p,inti){intj=1;structNode*q=*p,*t;if(i==1)/*删除链表的头结点*/{t=q;*p=q->next;}else{while(j<i-1&&q->next!=NULL)/*查找第i-1个结点*/{q=q->next;j++;}if(q->next!=NULL&&j==i-1)/*找到第i-1个结点,由q指向它*/{t=q->next;/*t指向要删除的结点*/q->next=t->next;/*将q之后的结点删除*/}elseprintf("位置参数不正确!\n");}if(t!=NULL)/*在t不为空时释放该结点*/free(t);}voiddisplay(structNode**p){structNode*q;q=*p;printf("分区表显示:");if(q==NULL)/*表为空时*/printf("表

0967010127王佳方存储器管理 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数15
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wc69885
  • 文件大小0 KB
  • 时间2016-02-24