资源简介

题 目: 模拟设计段式存储管理中地址转换 初始条件: 1.预备内容:阅读操作系统的内存管理章节内容,理解段式存储管理的思想及相应的分配主存的过程。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.实现段式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形:指定内存的大小,进程的个数,每个进程的段数及段大小; 能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。 2.设计报告内容应说明: ⑴ 课程设计目的与功能; ⑵ 需求分析,数据结构或模块说明(功能与框图); ⑶ 源程序的主要部分; ⑷ 测试用例,运行结果与运行情况分析; ⑸ 自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他的其他方法(如果有,简要说明该方法); v)对实验题的评价和改进意见,请你推荐设计题目。 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。

资源截图

代码片段和文件信息

#include 
#include“stdlib.h“
#include “string.h“
#include“stdio.h“
#include 
using namespace std;
struct duan
{
long capacity;//该段的长度
long addr;//起始逻辑地址
long realaddr;//该段实际起始地址
};
struct duanbiao
{
duan duans[10];
char processname[20]; // 进程的名字
int Isdiaoyong;     //是否被调用
int num;            //段的数目
long total;         //该进程的总占用量
};

long neicun=0;
int duanbiaonum=0;   //段表的数目
long zhanyong=0;    // 占用的内存
long baseaddr=0;    
duanbiao duanbiaos[10];

void show1(int );
void show();


void diaodu()
{
cout<<“您要调度的进程是:p“;
int n;
cin>>n;
if(n>duanbiaonum)
cout<<“段表不存在!“< else if(duanbiaos[n-1].Isdiaoyong==1)
cout<<“操作错误,该进程已经被调入到内存!“< else if(duanbiaos[n-1].total>neicun-zhanyong)
cout<<“内存空间不足,调度不成功!“< else
{

cout<<“下面对进程“< for(int j=0;j {
cout<<“正在进行第“< duanbiaos[n-1].duans[j].realaddr=duanbiaos[n-1].duans[j].addr+zhanyong;
cout<<“第“<
}
zhanyong=zhanyong+duanbiaos[n-1].total;
duanbiaos[n-1].Isdiaoyong =1;
cout<<“调度后的结果是:“< show1(n-1);
}
}

void zhuanhuan()
{
     int nij;
cout<<“请输入进程:p“;
cin>>n;
    if(n>duanbiaonum)
cout<<“进程不存在或没被调度!“< else if(duanbiaos[n-1].Isdiaoyong==1)
  {
  cout<<“请输入段号:“<   cin>>i;
  cout<<“输入偏移地址:“<   cin>>j;
  if(i>duanbiaos[n-1].num)  
  {
  cout<<“段号超出范围“<   }
  else if(j>duanbiaos[n-1].duans[i-1].capacity) 
  {
  cout<<“段内偏移地址超出范围“<   }
  else
  {
cout<<“转换后的地址为“<     cout<   }
}
else cout<<“该进程没有调入内存“<}


void apply()
{
printf(“请输入进程的名字:“);
cin>>duanbiaos[duanbiaonum].processname;
printf(“请输入该进程的段数:“);
cin>>duanbiaos[duanbiaonum].num;
int paddr=0;
for(int j=0;j {
cout<<“进程第“< cin>>duanbiaos[duanbiaonum].duans[j].capacity ;
duanbiaos[duanbiaonum].duans[j].addr=paddr;
paddr=paddr+duanbiaos[duanbiaonum].duans[j].capacity;

}
duanbiaos[duanbiaonum].Isdiaoyong=0;
duanbiaos[duanbiaonum].total=paddr;
duanbiaonum++;
}


void show1(int i)
{
cout<<“进程p“< cout<<“名字:“< cout<<“该进程所占用的存储空间:“< if(duanbiaos[i].Isdiaoyong==0)
cout<<“进程状态:未调用“< else
cout<<“进程状态:已调用“< cout<<“____________________________________________“< cout<<“段 号    始址    内存始址    大小“< for(int j=0;j {
cout<<“ “< if(duanbiaos[i].Isdiaoyong==0)
cout<<“            “;
else 
cout< cout< }
cout<<“___________________________________________

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

     文件      46080  2010-01-28 10:53  地址转换\Debug\地址转换.exe

     文件     403552  2010-01-28 10:53  地址转换\Debug\地址转换.ilk

     文件     584704  2010-01-28 10:53  地址转换\Debug\地址转换.pdb

     文件      10338  2010-01-28 10:53  地址转换\地址转换\Debug\BuildLog.htm

     文件         67  2010-01-28 10:53  地址转换\地址转换\Debug\mt.dep

     文件      74752  2011-01-20 09:58  地址转换\地址转换\Debug\vc60.idb

     文件     110592  2011-01-20 09:52  地址转换\地址转换\Debug\vc60.pdb

     文件     166912  2010-01-28 10:53  地址转换\地址转换\Debug\vc90.idb

     文件     208896  2010-01-28 10:53  地址转换\地址转换\Debug\vc90.pdb

     文件     557136  2011-01-20 09:52  地址转换\地址转换\Debug\地址.exe

     文件     800704  2011-01-20 09:52  地址转换\地址转换\Debug\地址.ilk

     文件     273068  2011-01-20 09:52  地址转换\地址转换\Debug\地址.obj

    I.A....   2026012  2011-01-15 21:30  地址转换\地址转换\Debug\地址.pch

     文件    1106944  2011-01-20 09:52  地址转换\地址转换\Debug\地址.pdb

     文件        663  2010-01-28 10:53  地址转换\地址转换\Debug\地址转换.exe.embed.manifest

     文件        728  2010-01-28 10:53  地址转换\地址转换\Debug\地址转换.exe.embed.manifest.res

     文件        621  2010-01-28 10:53  地址转换\地址转换\Debug\地址转换.exe.intermediate.manifest

     文件       4063  2011-01-19 15:02  地址转换\地址转换\地址.cpp

     文件       3379  2011-01-20 09:52  地址转换\地址转换\地址.dsp

     文件        533  2011-01-20 09:59  地址转换\地址转换\地址.dsw

     文件      41984  2011-01-20 09:59  地址转换\地址转换\地址.ncb

     文件      48640  2011-01-20 09:59  地址转换\地址转换\地址.opt

     文件        744  2011-01-20 09:52  地址转换\地址转换\地址.plg

     文件       3918  2010-01-26 11:25  地址转换\地址转换\地址转换.vcproj

     文件       1427  2010-01-28 15:46  地址转换\地址转换\地址转换.vcproj.WWW-8BF7580FE27.Administrator.user

     文件    2206720  2010-01-28 15:46  地址转换\地址转换.ncb

     文件        902  2010-01-26 11:24  地址转换\地址转换.sln

    ..A..H.      8704  2010-01-28 15:46  地址转换\地址转换.suo

    I.A....    671744  2011-01-19 19:57  地址转换\孙虎杰OS.doc

     目录          0  2011-01-20 09:52  地址转换\地址转换\Debug

............此处省略6个文件信息

评论

共有 条评论