操作系统实验 页式地址变换机构模拟 c++
来源:互联网 发布:mac单机游戏怎么安装 编辑:程序博客网 时间:2024/06/06 04:38
#include <iostream>
#include <iomanip>
#define N 8
#define M 7
int array[M] = {3296, 2268, 1366, 1537, 9879, 6532, 7769};
using namespace std;
class pageForm
{
public:
unsigned short int m_pageNum[N];
short int m_allot_pageNum[N];
unsigned short int m_memoryStatu[N];
public:
void init_pageForm();
void set_pageForm();
int get_pageNum(int visit);
int get_pageAdd(int visit);
int get_phyAdd(pageForm &page1, int pageadd);
void prt_pageForm();
void addTrans(pageForm &page1);
};
void pageForm::init_pageForm()
{
for (int i=0; i<N; ++i)
{
m_pageNum[i] = i;
m_allot_pageNum[i] = -1;
m_memoryStatu[i] = 0;
}
return ;
}
void pageForm::set_pageForm()
{
m_allot_pageNum[0] = 5;
m_allot_pageNum[1] = 9;
m_allot_pageNum[2] = 10;
m_allot_pageNum[3] = 7;
for (int i=0; i<4; ++i)
{
m_memoryStatu[i] = 1;
}
return ;
}
int pageForm::get_pageNum(int visit)
{
int pagenum;
pagenum = visit >> 10;
return pagenum;
}
int pageForm::get_pageAdd(int visit)
{
int add;
add = visit & 1023;
return add;
}
int pageForm::get_phyAdd(pageForm &page1, int pageadd)
{
int phyadd;
for (int i=0; i<N; ++i)
{
if (page1.m_pageNum[i] == pageadd)
{
phyadd = page1.m_allot_pageNum[i];
break;
}
}
return phyadd;
}
void pageForm::prt_pageForm()
{
cout<<endl;
cout<<"当前页表情况"<<endl;
cout<<"******************"<<endl;
cout<<"|页号"<<setw(3)<<"|页面号"<<setw(3)<<"|内外"<<setw(1)<<"|"<<endl;
cout<<"|----------------|"<<endl;
for (int i=0; i<N; ++i)
{
cout<<"|"<<setw(2)<<m_pageNum[i]<<setw(3)<<"|"<<setw(4)<<m_allot_pageNum[i]
<<setw(3)<<"|"<<setw(3)<<m_memoryStatu[i]<<setw(2)<<"|"<<endl;
}
cout<<"******************"<<endl;
return ;
}
void pageForm::addTrans(pageForm &page1)
{
int pageadd;
int pagenum;
int phyadd;
int visit;
for (int i=0; i<M; ++i)
{
visit = array[i];
pagenum = page1.get_pageNum(visit);
if (0>pagenum || pagenum>7)
{
cout<<"越界"<<" ";
}
else
if (page1.m_memoryStatu[pagenum])
{
pageadd = page1.get_pageAdd(visit);
phyadd = page1.get_phyAdd(page1, pagenum);
cout<<(phyadd << 10)+pageadd<<" ";
}
else
{
cout<<"缺页"<<" ";
}
}
return ;
}
pageForm page1;
int main()
{
page1.init_pageForm();
page1.set_pageForm();
page1.prt_pageForm();
cout<<"读入的访问串是: ";
for (int j=0; j<M; ++j)
{
cout<<array[j]<<" ";
}
cout<<endl<<"------------------------------------------------------------"<<endl;
cout<<"地址变换的结果是:";
page1.addTrans(page1);
cout<<endl;
return 0;
}
- 操作系统实验 页式地址变换机构模拟 c++
- 页式地址变换机构模拟 C++
- 操作系统:地址变换机构
- 分页存储 -- 地址变换机构
- 操作系统实验--C语言模拟进程管理
- 操作系统中地址变换
- 分页系统的地址变换机构
- 操作系统 单处理器进程调度模拟实验(c++)
- 操作系统 模拟可变分区内存管理实验 C语言描述
- 操作系统实验报告-地址映射
- 操作系统模拟内存管理实验,C语言链表实现,附源码
- 操作系统实验 页面置换模拟 c++
- 操作系统实验之银行家算法模拟
- 操作系统-动态分区分配模拟实验
- 操作系统 实验一 多线程 (模拟)
- 操作系统实验-页面地址重定位
- 页式地址变换-虚地址结构(整理)
- 实验二 第一题 模拟分页式存储管理中硬件的地址转换和产生缺页中断
- 代理模式(Proxy)-对象结构型模式
- 正则表达式快速验证工具
- 计算机日期
- 关于ORACLE PLSQL读文件
- reactos操作系统实现(135)
- 操作系统实验 页式地址变换机构模拟 c++
- 收藏:让你吃惊的60个绝对得看的常识!!!!
- oracle 存储过程的基本语法
- 使用cydia gnu debugger 在iphone真机上调试时的注意事项
- 数组实现线程安全的栈
- 第三天:集成Struts 2
- 51单片机边沿触发中断响应时刻的测量
- Brook+ Programming (5)
- 起点