操作系统存储器管理实验报告
实验2 存储器管理
实验目的
编程模拟实现存储器页面置换的常用算法,调试分析相关存储器管理程序,加深对存储器页面置换常用算法的理解和实现技巧
实验内容
1、 自定义存储器管理有关的数据结构;
2、 依据最佳置换算法(Optimal)、先进先出置换算法(FIFO)、最近最久未使用算法(LRU)原理,
编写对应函数,模拟系统的存储器页面置换功能;
3、 为了更好地模拟和评价算法的性能,允许用户自行指定可用页块数并输入需访问的页面号序列;
4、 统计以上算法实际需要的总页面数、缺页中断次数以及它们的缺页率;
5、 比较/分析以上算法的置换性能,并作出自己的评价。
预备知识
存储器页面置换常用算法的相关知识参考课堂《计算机操作系统》教材
实验指导
1、 请求分页存储器管理模拟系统界面
图3.1请求分页存储器管理模拟系统界面
图形界面可以自行
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
、也可以使用控制台终端输出信息。“访问页面号序列”和“页块数”为输入信息,列表框(或编辑框)“具体的页面置换情况”及其统计数据为输出信息。控制台终端的输出信息可以通过剪贴板复制保存为电子实验记录文件。图形界面可以通过“保存”按钮保存列表框的输出信息。采用编辑框显示的输出信息,也可以通过剪贴板复制保存。Optimal、LRU、FIFIO算法分别由其对应按钮或函数实现。
2、全局变量
int PageSeq[MAXPAGENUM]; //用来放置页面号序列的整型数组 CString pageSeqNum; //带分隔符的访问页面序列字符串备份 int totalPageCount; //实际输入的总页面数
int failPageCount; //缺页中断次数
int pageBlock[9],priority[9]; //已在内存页面号, 及其优先数
bool metathesis,space; //是否缺页, 是否有空页
CString str,memo,output; //信息标题, 调页记录, 输出信息
3、主对话框类声明
class CPageMetathesisDlg : public CDialog {
// Construction
public:
BOOL UpdatePageSeq();
void Optimal(int *,int);
void LRU(int *,int);
void FIFO(int *,int);
CPageMetathesisDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CPageMetathesisDlg)
enum { IDD = IDD_PAGEMETATHESIS_DIALOG };
CEdit m_BlockCount_Control;
CListBox m_Display;
CEdit m_PageSeqNum_Control;
CString m_Hint;
CString m_PageSeqNum;
int m_BlockCount;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CPageMetathesisDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CPageMetathesisDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButtonClr();
afx_msg void OnButtonExit();
afx_msg void OnButtonLru();
afx_msg void OnButtonFifo();
afx_msg void OnButtonOptimal();
afx_msg void OnButtonSave();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
4、参考代码
//实现Optimal算法的函数
void CPageMetathesisDlg::Optimal(int *addr,int physical_size)
{
char CSnum[2];
metathesis=true,space=true;
str="\r\n";
output="";
for(int z=1;z<=physical_size;z++) //输出说明提示
{
str+="页块";
itoa(z,CSnum,10);
str+=CSnum;
str+=" ";
}
str+="有无中断 页面置换形式";
m_Display.InsertString(m_Display.GetCount(),str);
for(int i=physical_size-1;i>=0;i--)
{
pageBlock[i]=-1; //设置数组初值为-1
priority[i]=0; //设置数组优先级为0
}
for(i=0;i
priority[max]) max=z;
}
}
if(k==totalPageCount) {max=z;z=physical_size;}
}
pageBlock[max]=addr[i];
memo="";
for(z=0;z=0;i--)
{
pageBlock[i]=-1; //设置数组初值为-1
priority[i]=0; //设置数组优先级为0
}
for(int z=1;z<=physical_size;z++)
{
str+="页块";
itoa(z,CSnum,10);
str+=CSnum;
str+=" ";
}
str+="有无中断 页面置换形式";
m_Display.InsertString(m_Display.GetCount(),str);
for(i=0;ipriority[j])
priority[z]-=1;
priority[j]=physical_size;
memo=" ";
for(z=0;z=0;i--)
{
pageBlock[i]=-1; //设置数组初值为-1
priority[i]=0; //设置数组优先级为0
}
for(int z=1;z<=physical_size;z++)
{
str+="页块";
itoa(z,CSnum,10);
str+=CSnum;
str+=" ";
}
str+="有无中断 页面置换形式";
m_Display.InsertString(m_Display.GetCount(),str);
for(i=0;i
本文档为【操作系统存储器管理实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。