怎么可以把把地址转换时变成不同的进制,比如十进制地址转换成十六进制地址
#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;
}
段式虚拟存储管理地址转换
- 写回答
- 好问题 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