采用CLOCK置换算法仿真请求分页系统(操作系统课程设计)

目录
一、 课程设计目的 1
二、 课程设计内容与要求 2
三、 系统分析与设计 2
1、系统分析 2
2、系统设计: 2
四、系统测试与调试分析 5
1、系统测试 5
2、调试分析: 6
五、用户手册 7
2、登录成功,进入系统主页面 7
3、选择从文件读方式产生作业(点击确定后) 8
5、 对从文件读取进行CLOCK算法模拟(点击开始后) 8
5、点击重置按钮界面全部内容置 9
6、 选择随机产生方式产生作业 9
8、点击暂停按钮,查看内存使用情况 10
9、点击继续按钮,程序继续执行 11
10.产生的作业页面情况写入文件(d://b.txt) 11
11、点击退出按钮,安全退出系统。 12
六、程序清单 12
七、体会与自我评价 17
八、参考文献 17
九、课程设计评价 17
二、 课程设计内容与要求
设计内容:
采用CLOCK置换算法仿真请求分页系统
设计要求:

  1. 实现请求分页存储管理方式的页面置换算法:CLOCK算法
  2. 内存物理块数固定为15个,对多个作业采用可变分配全局置换的策略分配物理块
  3. 作业数量与作业大小(10-20页)可在界面进行设置
  4. 所有作业按RR算法进行调度,时间片长度为1秒
  5. 可为每个作业随机产生引用的页面串,也可以人工输入引用的页面串,页面串长度50—100,要求必须包括作业所有的页面,可作为样例数据保存
  6. 可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、页面串长度的初始化
  7. 要求采用可视化界面,模拟内存分配和使用情况图,可在运行过程中随时暂停,查看当前内存物理块使用情况。
  8. 每次全部作业运行结束后,要求打印出访问命中率
    2、系统设计:
    本系统主要分为两个大模块,从外部文件读取数据进行算法模拟和输入作业详细情况进行模拟,两大功能的实现通过操作界面中的单选按钮进行选择。(系统默认是随机产生作业)其中从文件读取外部数据又向下分为文件名的输入,实时显示产生的作业数量和长度,当点击“确定”按钮后,界面即显示页面置换情况,进行算法模拟。随机产生作业则是输入作业数量和作业大小,点击“随机生成”按钮后,实时显示出后作业情况,进行算法模拟。其中不论是从文件读取产生的作业还是输入产生的作业都可在运行过程中,对其进行暂停和继续操作,以查看内存使用情况。到此,系统设计基本完成。
    2.1、模块设计:
    本系统主要包括:用户登录、从外部文件读取数据、随机产生、页面调用详细情况和动态内存显示等几大模块。
// Clock.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "Clock.h"
#include "ClockDlg.h"
#include "Login.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/
// CClockApp

BEGIN_MESSAGE_MAP(CClockApp, CWinApp)
	//{
    
    {AFX_MSG_MAP(CClockApp)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG
	ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()

/
// CClockApp construction

CClockApp::CClockApp()
{
    
    
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

/
// The one and only CClockApp object

CClockApp theApp;

/
// CClockApp initialization

BOOL CClockApp::InitInstance()
{
    
    
	SkinStart("slate.urf",0,0,1,0,0);
//	AfxEnableControlContainer();
	CLogin dlg1;
	if(dlg1.DoModal() == IDCANCEL)
	{
    
    
		return -1;
	}

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.

#ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

	CClockDlg dlg;
	m_pMainWnd = &dlg;
	int nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
    
    
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
    
    
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}
SkinRemove();
	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/newlw/article/details/130718190
今日推荐