模拟请求页式存储管理中硬件的地址转换和缺页中断.doc
文本预览下载声明
课程名称 操作系统原理 实验名称 模拟请求页式存储管理中硬件的地址转换和缺页中断
姓 名 学 号 专业班级
实验日期 成 绩 指导老师
(①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果分析⑦问题建议)
实验目的
模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断。
实验内容
内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理
思想:装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”表示修改过,否则为“0”表示未修改过。页表格式如下:
页号 标志 页架号 修改标志 在磁盘上位置
模拟算法流程
程序及截图
程序:
#includeiostream
#includeiomanip
#includelist
using namespace std;
char useSign[12][5]={{+},{-},{*},{存},{取},{-},{移位},{+},{存},{取},{+},{存}};
int PageAddress[12]={70,50,15,21,56,40,53,23,37,78,01,84};
int PageNum[12]={0,1,2,3,0,6,4,5,1,2,4,6};
int S_Station;
int pPageNum[7];//页号pPage
int pSign[7];
int pStool[7];//页架号
int pModify[7];//修改标志
int pStation[7];//磁盘位置
static int z=0;
void Store()
{
for(int i=0;i7;i++)
{
if(i4)
{
pSign[i]=1;
}
else
pSign[i]=0;
pPageNum[i]=i;
pModify[i]=0;
}
int p1=1,p2=2,p3=3;
for(i=0;i7;i++)
{
if(i3)
{
pStation[i]=p1;
p1++;
}
else
if(i6)
{
pStation[i]=p2;
p2++;
}
else
pStation[i]=p3;
}
pStool[0]=5;
pStool[1]=8;
pStool[2]=9;
pStool[3]=1;
}
void CShow()
{
cout操作 ;
cout页号 ;
cout页内地址 ;
cout标志 ;
cout绝对地址 ;
cout修改页号 ;
cout页架号 ;
cout绝对地址;
coutendl;
}
void Find()
{
int m_Pagenum;
int m_Station;
int Y_Station;//绝对地址
int m_Stool;
cout输入页号及页内地址查询操作:;
cinm_Pagenumm_Station;
CShow();
int i,j=0;
//string m_Modify;
for(i=0;i12;i++)
{
if(PageAddress[i]==m_Station)
{
break;
}
}
Y_Station=pStool[m_Pa
显示全部