网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > 课程设计 > 正文

用分页管理,使用位示图实现主存的分配与回收

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
用分页管理,使用位示图实现主存的分配与回收一、实验目的:采用分页管理,使用位示图实现主存的分配与回收二、实验内容:主存是中央处理机能直接存取指令和数据的存储器。能否合理而有效地使用主存,在很大程度上将影响到整个计算机系统的性能。实现主存空间的分配与回收。三、试验环境:    VC++四、实验原理及试验步骤:(1)主存的分页管理是把主存分成大小相等的若干块,作业的信息按块的大小分成若干页。作业装入主存时,可把作业的信息按页分散在主存的若干块中。为了标识主存中哪些块空闲,哪些块占用,可用一张位示图指示。位示图是由若干主存单元构成。其中每一位与一个主存块对应。分别用0和1表示对应块是空闲还是占用。(2)假定某系统的主存被分成大小相等的64块,则位示图可用8个字节构成。再用一个变量记录当前可用的空闲块总数。如果已有第0、1、2、3、4、5、9、11、13、24、31共11块被占用,其位示图描述如图3-3所示。(3)当要装入一个作业时,根据作业对主存的需求量,先查记录当前空闲块数变量的值是否满足作业的需求量。若不满足,则给出分配不成功的信息,且作业等待;若满足,则查位示图,按作业需求量找出为零的一些位,且置上占用标志1,并从当前空闲块变量中减去本次分配的块数。按找到的位计算对应的块号。计算公式:块号=J*8+I。其中,J表示找到的字节号,I表示找到的位号。根据分配给作业的块号,为作业建立一张页表,格式如图3-4所示。       位号字节号      0   1   2   3   4   5   6   70       1   1   1   1   1   1   0   0页号 块号1 2 3  1       0   1   0   1   0   1   0   02       0   0   0   0   0   0   0   03       1   0   0   0   0   0   0   14       0   0   0   0   0   0   0   05       0   0   0   0   0   0   0   06       0   0   0   0   0   0   0   07       0   0   0   0   0   0   0   0     当前空闲块总数:53图3-3 主存某时刻的位示图(4)当一个作业执行结束时,释放主存。根据页表可知要释放的块号和块数。由块号计算其在位示图中的位置,将对应位的标志置0,以此表示该块已空闲。之后,再将释放的块数累加到当前空闲块变量中。由块号计算字节号和位号的公式如下:字节号=int(块号/8)    位号=mod(块号/8)(5)设计和实现主存分配和回收的程序五、实验代码: #include#include#includeusing namespace std;#define N 8     //将主存分为大小相等的NxN块#define LENGTH 8 //主存每块大小
int MAP[N][N];//位示图int FREE=0;     //当前空闲的块数int NUMBER;   //分割后文件的块数www.lwfree.cnstruct FileTest{ string FileName;    //装入的文件名 int FileSize;       //装入的文件大小 int FilePageNumber; //页号 int FileKuaiNumber[40]; //块号};struct FileTest file;void Filecin()//文件输入{  cout<<"请输入要装入文件的文件名:"; cin>>file.FileName; cout<<"请输入要装入文件的大小:"; cin>>file.FileSize; cout<<"文件名:"<}void map_state()//输出位示图状态{  cout<<"当前主存位示图状态如下(1表示占用,0表示空闲):"< 
采用分页管理,使用位示图实现主存的分配与回收  }  cout<0||(file.FileSize/LENGTH)<8){NUMBER=NUMBER+1;}//计算输入的文件分割后的块数FNUMBER=NUMBER;   for(int i=0;i0)       {               MAP[i][j]=1;        FNUMBER--;         file.FileKuaiNumber[k]=i*8+j;                     k++;       }    }      }   map_state();   PageTable();  }  else  {   cout<<"申请空间大于系统所剩空间!"<}void PageTable()//页表{ cout<<"页表状态如下表:"<>backfilename;  cout<<"需要回收的作业的作业名:"<>a;   if(a=='s')   {   Filecin();   map_work();   }   if(a=='h')   {    back();   }   goto L;
} 六、实验总结 在输入位示图状态时,两个循环即将结束的时候要初始化位示图,防止重复显示。按找到的位计算对应的块号。计算公式:块号=J*8+I。其中,J表示找到的字节号,I表示找到的位号。由块号计算字节号和位号的公式如下:字节号=int(块号/8)    位号=mod(块号/8),所以,判断主存是否能够分配即为:if(file.FileSize<=FREE*8) 否则将显示申请空间大于系统所剩空间!420
  • 上一篇资讯: 山东省FEEEP协调度研究与
  • 下一篇资讯: 无线货架自动控制系统
  • 相关资讯

    网学推荐

    原创论文

    文章排行榜

    设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 1280 x 720 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师