• 大小: 146KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签:

资源简介

模拟段式存储管理的分配与回收,包括输入给定的内存大小,进程的个数,每个进程的段数及段大小;当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关内存空间使用的情况。内含word文档。希望计算机学院的同学下载后不要照抄照搬,在这里发布只是能给你一个启发,希望对你有好处。

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include

struct segment                          //定义结构体段segment
{
long capacity; //该段的长度
long physicaddr; //物理地址
long realaddr; //该段实际地址
};
struct segmentTable //定义结构体段表segmentTable
{
segment segments[10];               //段表中每个段的属性
char tableName[50]; //段表名
int Isdiaoyong; //是否被调度到内存
int num; //该进程包含的段的数目
long total; //该进程所占用的存储空间
};

segmentTable segmentTables[10];         //最多可有十个段表
long memSize=0; //内存大小
int segmentTablenum=0; //当前段表数即进程数
long kongbai=0;
long baseaddr=0;

void chuangjian()                      //创建进程的函数
{
cout< printf(“请输入要创建的进程名:“);
cin>>segmentTables[segmentTablenum+1].tableName;
printf(“请输入该进程的段数:“);
cin>>segmentTables[segmentTablenum+1].num;
int paddr=0;
for(int j=1;j<=segmentTables[segmentTablenum+1].num;j++)
{
cout<<“请输入该进程第“< cin>>segmentTables[segmentTablenum+1].segments[j].capacity ;
segmentTables[segmentTablenum+1].segments[j].physicaddr=paddr;
paddr=paddr+segmentTables[segmentTablenum+1].segments[j].capacity;
}
cout< segmentTables[segmentTablenum+1].Isdiaoyong=0;//创建进程后进程并没有被调用
segmentTables[segmentTablenum+1].total=paddr;
segmentTablenum++;
}


void xianshi(int i)                   //显示进程信息的函数
{
cout< cout<<“名字:“< cout<<“该进程所占用的存储空间:“< if(segmentTables[i].Isdiaoyong==0)
cout<<“进程状态:未调用“< else
cout<<“进程状态:已调用“< cout<<“____________________________________________“< cout<<“段 号    物理始址    内存始址    长度“< for(int j=1;j<=segmentTables[i].num;j++)
{             //每个进程即段表中对应的段从1开始
cout< if(segmentTables[i].Isdiaoyong==0)
cout< else 
cout< cout< }
cout<<“____________________________________________“<}

void diaodu()               //调度进程的函数
{
cout< cout<<“输入要调度的进程:p“;
int n;
cin>>n;
if(n<=0||n>segmentTablenum)//调度的进程要是创建好的
{
cout<<“请求的段表不存在!“< cout<<“请重新“;
diaodu();
}
else if(segmentTables[n].Isdiaoyong==1)
cout<<“操作失败,该进程已经被调入到内存!“< else if(segmentTables[n].total>memSize-kongbai)
cout<<“内存空间不足,无法调度!“< else
{
for(int j=1;j<=segmentTables[n].num;j++)
{
segmentTables[n].segments[j].realaddr=segmentTables[n].segments[j].physicaddr+kongbai;
}
kongbai=kongbai+segmentTables[n].total;
segmentTables[n].Isdiaoyong =1;     //进程调度完成
cout<<“调度后的结果是:“< xianshi(n);       //进程调度后显示相关的信息
}
}

int main()
{
int p;
cout<<“       ****************************************************************“< cou

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4382  2010-01-20 19:58  模拟段式存储管理的分配与回收\模拟段式存储管理的分配与回收.txt

     文件     230912  2010-01-20 19:54  模拟段式存储管理的分配与回收\报告.doc

     文件       4382  2010-01-20 19:55  模拟段式存储管理的分配与回收\模拟段式存储管理的分配与回收.cpp

     目录          0  2010-01-20 20:39  模拟段式存储管理的分配与回收

----------- ---------  ---------- -----  ----

               239676                    4


评论

共有 条评论

相关资源