小呆o 2016-12-13 11:13 采纳率: 0%
浏览 1129

段式虚拟存储管理地址转换

怎么可以把把地址转换时变成不同的进制,比如十进制地址转换成十六进制地址
#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 n,i,j;
cout 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 }
void show()
{
for(int i=0;i show1(i);
}
int main(int argc, char* argv[])
{
char c;
cout cin>>neicun;
cout<<"*******************************************************************************"< cout cout while(1)
{
cout return 0;
cin>>c;
if(c=='e')
{
cout<<"服务完毕!"<<endl;
break;
}
else if(c=='a')
apply();
else if(c=='s')
show();
else if(c=='d')
diaodu();
else if(c=='z')
zhuanhuan();
else
cout<<"error!请重新输入!"<<endl;

}
return 0;
}

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA