操作系统实验2Word文档格式.docx

上传人:b****7 文档编号:22385306 上传时间:2023-02-03 格式:DOCX 页数:21 大小:56.88KB
下载 相关 举报
操作系统实验2Word文档格式.docx_第1页
第1页 / 共21页
操作系统实验2Word文档格式.docx_第2页
第2页 / 共21页
操作系统实验2Word文档格式.docx_第3页
第3页 / 共21页
操作系统实验2Word文档格式.docx_第4页
第4页 / 共21页
操作系统实验2Word文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

操作系统实验2Word文档格式.docx

《操作系统实验2Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验2Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

操作系统实验2Word文档格式.docx

CStringpageSeqNum;

//带分隔符的访问页面序列字符串备份

inttotalPageCount;

//实际输入的总页面数

intfailPageCount;

//缺页中断次数

intpageBlock[9],priority[9];

//已在内存页面号,及其优先数

boolmetathesis,space;

//是否缺页,是否有空页

CStringstr,memo,output;

//信息标题,调页记录,输出信息

3、主对话框类声明

classCPageMetathesisDlg:

publicCDialog

{

//Construction

public:

BOOLUpdatePageSeq();

voidOptimal(int*,int);

voidLRU(int*,int);

voidFIFO(int*,int);

CPageMetathesisDlg(CWnd*pParent=NULL);

//standardconstructor

//DialogData

//{{AFX_DATA(CPageMetathesisDlg)

enum{IDD=IDD_PAGEMETATHESIS_DIALOG};

CEditm_BlockCount_Control;

CListBoxm_Display;

CEditm_PageSeqNum_Control;

CStringm_Hint;

CStringm_PageSeqNum;

intm_BlockCount;

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CPageMetathesisDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

HICONm_hIcon;

//Generatedmessagemapfunctions

//{{AFX_MSG(CPageMetathesisDlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnButtonClr();

afx_msgvoidOnButtonExit();

afx_msgvoidOnButtonLru();

afx_msgvoidOnButtonFifo();

afx_msgvoidOnButtonOptimal();

afx_msgvoidOnButtonSave();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

4、参考代码

//实现Optimal算法的函数

voidCPageMetathesisDlg:

:

Optimal(int*addr,intphysical_size)

charCSnum[2];

metathesis=true,space=true;

str="

\r\n"

;

output="

"

for(intz=1;

z<

=physical_size;

z++)//输出说明提示

{

str+="

页块"

itoa(z,CSnum,10);

str+=CSnum;

"

}

str+="

有无中断页面置换形式"

m_Display.InsertString(m_Display.GetCount(),str);

for(inti=physical_size-1;

i>

=0;

i--)

pageBlock[i]=-1;

//设置数组初值为-1

priority[i]=0;

//设置数组优先级为0

for(i=0;

i<

totalPageCount;

i++)

metathesis=true;

for(intj=0;

metathesis&

&

j<

physical_size;

j++)

{

if(addr[i]==pageBlock[j])

{

metathesis=false;

memo="

for(z=0;

z++)

{

if(pageBlock[z]==-1)//无中断且有空页面,空页面处输出空格

memo+="

else//无中断

{

itoa(pageBlock[z],CSnum,10);

memo+=CSnum;

}

}

output+="

output+=memo;

m_Display.InsertString(m_Display.GetCount(),memo);

}

}

if(metathesis)//有中断

if(space)//有空页面,插入页面中断

intm;

if(priority[z]==0)

priority[z]=1;

pageBlock[z]=addr[i];

m=z;

z=physical_size;

if(priority[physical_size-1]!

=0)space=false;

//无空页面

itoa(pageBlock[z],CSnum,10);

if(m<

z)memo+="

elsememo+=CSnum;

memo+="

memo+="

√插入页面"

failPageCount++;

else//无空页面,替换页面中断

intmax=0;

for(intk=i+1;

k<

k++)

if(pageBlock[z]==addr[k])//查找未来最长时间不再访问的页面

{

priority[z]=k;

k=totalPageCount+1;

if(priority[z]>

priority[max])max=z;

}

if(k==totalPageCount){max=z;

z=physical_size;

}

pageBlock[max]=addr[i];

memo+=CSnum;

√替换页面"

memo="

m_Display.InsertString(0,memo);

\r\nOptimal算法总页面数:

chartemporary[4];

itoa(totalPageCount,temporary,10);

memo+=temporary;

itoa(failPageCount,temporary,10);

memo+="

缺页中断次数:

缺页率为:

failPageCount=failPageCount*100/totalPageCount;

%"

output+="

\r\n\r\n"

output+=memo;

//实现LRU算法的函数

LRU(int*addr,intphysical_size)

if(priority[z]>

priority[j])

priority[z]-=1;

priority[j]=physical_size;

else//无中断不为空页面

priority[z]=physical_size;

else

if(priority[z]==1)

else

……

//实现FIFO算法的函数

FIFO(int*addr,intphysical_size)

//将输出信息保存到磁盘文件

OnButtonSave()

//TODO:

Addyourcontrolnotificationhandlercodehere

CFileDialogdlgFile(TRUE);

HANDLEhFile;

CStringtitle,strFilter,fileName;

VERIFY(title.LoadString(AFX_IDS_SAVEFILE));

strFilter+="

PageMetathesisDATAFile(*.DAT;

*.dat)"

strFilter+=(TCHAR)'

\0'

//nextstringplease

strFilter+=_T("

*.DAT"

);

//laststring

dlgFile.m_ofn.Flags|=OFN_OVERWRITEPROMPT|OFN_CREATEPROMPT;

CStringstrDefault;

dlgFile.m_ofn.nMaxCustFilter++;

dlgFile.m_ofn.lpstrFilter=strFilter;

dlgFile.m_ofn.lpstrTitle=title;

dlgFile.m_ofn.lpstrFile=fileName.GetBuffer(_MAX_PATH);

if(dlgFile.DoModal()==IDOK)

hFile=CreateFile(fileName,//filename

GENERIC_WRITE,//OnlyWritePermission

0,//cannotbeshared

NULL,//pointertos

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1