操作系统实验四

本文介绍了如何设计页表结构以及实现地址重定位算法,通过示例展示了如何将逻辑地址转换为物理地址,包括对二进制和十进制逻辑地址的处理过程。
摘要由CSDN通过智能技术生成

title: 操作系统实验四
categories:

  • 操作系统实验
    tags:

作业

设计页表结构
设计地址重定位算法
有良好的人机对话界面

代码

#include <iostream>
#include <cmath>
using namespace std;
const int pagesize=2048;
const int pagetablelegth=64;
int pagetable[pagetablelegth]={0,42,29,15,45,31,44,43,
	                            41,28,1,30,12,24,6,32,    
	                            14,27,13,46,7,33,10,22,
				               40,2,51,11,39,23,49,50,
				               26,16,25,4,47,17,3,48,
				               52,36,58,35,57,34,21,63,
				               5,37,18,8,62,56,20,54,
				               60,19,38,9,61,55,59,53};
void InputTwo()
{
	long long int ErLogicAddress;
	cout<<"请输入二进制的逻辑地址(地址最长为32位):";
	cin>>ErLogicAddress;
	int pageInsideNumber=0;
	
	int middlepagesize=pagesize;
	while(middlepagesize!=0)
	{
		middlepagesize=middlepagesize/2;
		pageInsideNumber++;
	}
	long long int ErPpageInside=ErLogicAddress%(int)pow(10,pageInsideNumber);
	
	long long int ErpageNumber=ErLogicAddress/pow(10,pageInsideNumber);
	int SpageNumber=0;
	int countwei=0;
	while(ErpageNumber!=0)
	{
		int middle = ErpageNumber % 10;
		SpageNumber+=middle*pow(2,countwei);
		countwei++;
		ErpageNumber=ErpageNumber/10;
	} 
	int SPpagenumber = pagetable[SpageNumber];
	long long int ErPpagenumber = 0;
	int countwei2=0;
	while(SPpagenumber>1)
	{
		int middle = SPpagenumber %2;
		ErPpagenumber = ErPpagenumber+middle*pow(10,countwei2);
		countwei2++;
		SPpagenumber = SPpagenumber/2;
	}
	ErPpagenumber = ErPpagenumber*pow(10,pageInsideNumber)+ErPpageInside;
	cout<<"转换为物理地址的二进制地址为:"<<ErPpagenumber;
	
}

void SjAddress()
{
	int logicAddress;
		cout<<"请输入十进制的逻辑地址为:";
		cin>>logicAddress;
		int pagenumber = logicAddress / pagesize;
		int pageinsidesize = logicAddress % pagesize;
		int physicsAddress = pagetable[pagenumber]*pagesize+pageinsidesize;
		cout<<"十进制的物理的地址为:"<<physicsAddress;
}
int main()
{
	cout<<"1.输入二进制地址\n2.输入十进制地址\n请输入:";
	int options;
	cin>>options;
	switch(options)
	{
		case 1:{
			InputTwo();
			break;
		}
		case 2:{
			SjAddress();
			break;
		}
	}
	
	
	return 0;
	
	
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elik-hb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值