下载此文档

实验三-存储管理实验.pdf


文档分类:IT计算机 | 页数:约26页 举报非法文档有奖
1/26
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/26 下载此文档
文档列表 文档介绍
实验三-存储管理实验.pdf实验三 存储管理实验
一. 目的要求:
1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚
存管理的各种页面淘汰算法。
2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。
二.实验内容:
1、设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过
程。
可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区
的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根
据分区的分配和回收情况修改该表。

算法描述:
本算法将内存的用户区分成大小相等的四个的分区,设一张分区说明表用来
记录分区,其中分区的表项有分区的大小、起始地址和分区的状态,当系统为某
个作业分配主存空间时,根据所需要的内存容量,在分区表中找到一个足够大的
空闲分区分配给它,然后将此作业装入内存。如果找不到足够大的空闲分区,则
这个作业暂时无法分配内存空间,系统将调度另一个作业。当一个作业运行结束
时,系统将回收改作业所占据的分区并将该分区改为空闲。
算法原程序
#include ""
#include ""
#include <>
#include <>
#define PCB_NUM 5 //模拟进程数量
#define INT 800//内存分区数量
struct MemInf
{
int addr; //分区起始地址
int size; //分区大小
int state; //0 表示空闲,>0 时表示已分配,存储的是进程 ID
};
struct PCB
{
int pcbID; //进程 ID
int size; //进程大小
int RunState; //运行状态,0 表示就绪,1 表示已分配内存正运行,2 表示运行结束且
退出内存
int TolTime; //总需要运行时间
int RunTime; //已运行时间
} pcbList[PCB_NUM];
void menu() //菜单
{
int m;
system("cls");

printf("\n\n\t\t*********************************************\t\t\n")
;
printf("\t\t\t\t 固定分区存储程序演示\n");

printf("\t\t*********************************************\t\t\n");
printf("\n\t\t\.");
printf("\n\t\t\.");
scanf("%d",&m);
switch(m)
{
case 1:
break;
case 0:
system ("cls");
menu ();
break;
default:
system ("cls");
break;
}
}
void paixu(struct MemInf* ComMem,int n)
{
int i,j,t;
for(j=0; j<n-1; j++)
for(i=0; i<n-j-1; i++)
if(ComMem[i].size>ComMem[i+1].size)
{
t = ComMem[i].size;
ComMem [i].size=ComMem[i+1].size;
ComMem [i+1].size=t;
}
}
void paixu2()
{
int i,j,t;
for(j=0; j<4; j++)
for(i=0; i<4-j; i++)
if(pcbList[i].size>pcbList[i+1].size)
{
t = pcbList[i].size;

实验三-存储管理实验 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数26
  • 收藏数0 收藏
  • 顶次数0
  • 上传人shanhu
  • 文件大小825 KB
  • 时间2021-08-11