资源简介
模拟段式存储管理的分配与回收,包括输入给定的内存大小,进程的个数,每个进程的段数及段大小;当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后有关内存空间使用的情况。内含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
- 上一篇:山东大学操作系统实验1-8
- 下一篇:小烦内存搜索dll
评论
共有 条评论