CLOCK 置換アルゴリズムを使用してリクエスト ページング システムをシミュレートする (オペレーティング システム コース設計)

目次
1. コース設計の目的 1
2. コース設計の内容と要件 2
3. システム分析と設計 2
1. システム分析
2 2. システム設計: 2
4. システムテストとデバッグ分析 5
1. システムテスト 5
2. デバッグ分析: 6
V. ユーザーマニュアル 7
2. ログインに成功すると、システムのメインページに入ります 7
3. ファイルから読み取る方法を選択してジョブを生成します ([OK] をクリックした後) 8
5. ファイルから読み取るための CLOCK アルゴリズムをシミュレートします(クリックして開始) 8
5 . リセット ボタンをクリックして、インターフェイスのすべての内容を 9 に設定します
6. ジョブを生成するランダム生成方法を選択します 9
8. メモリ使用量を確認するには、一時停止ボタンをクリックします 10
9. [続行] をクリックします。ボタンをクリックしてプログラムを続行します。 11
10. 生成されたジョブ ページをファイル (d://b.txt) に書き込みます。 11
11. 終了ボタンをクリックして、システムを安全に終了します。126.
プログラムリスト 127.
経験と自己評価 178.
参考文献 179.
コース設計の評価 172.
コース設計の内容と要件
設計内容:
CLOCK 置換アルゴリズムを使用してリクエスト ページング システムをシミュレートする
設計要件:

  1. リクエストページングストレージ管理を実装するページ置換アルゴリズム:CLOCKアルゴリズム
  2. 物理メモリ ブロックの数は 15 に固定されており、変数割り当てとグローバル置換の戦略を使用して、複数のジョブに物理ブロックを割り当てます。
  3. ジョブの量とジョブのサイズ (10 ~ 20 ページ) をインターフェイスで設定可能
  4. すべてのジョブは RR アルゴリズムに従ってスケジュールされ、タイム スライスの長さは 1 秒です
  5. 参照ページ文字列はジョブごとにランダムに生成できますが、参照ページ文字列は手動で入力することもできます。ページ文字列の長さは 50 ~ 100 です。ジョブのすべてのページを含める必要があり、保存できます。サンプルデータとして
  6. サンプル データ (外部ファイルに保存する必要がある) を読み取って、ジョブの数、ジョブ サイズ、ページ文字列の長さを初期化できます。
  7. メモリ割り当てと使用状況図をシミュレートするには、ビジュアル インターフェイスを使用する必要があります。プロセスの実行中にいつでも一時停止して、物理メモリ ブロックの現在の使用状況を表示できます。
  8. 各操作が終了した後、アクセス ヒット率を出力する必要があります
    2. システム設計:
    このシステムは主に 2 つの大きなモジュールに分かれており、アルゴリズム シミュレーションのために外部ファイルからデータを読み取り、シミュレーションのためにジョブの詳細を入力します。機能 操作インターフェースのラジオボタンで選択を実現します。(デフォルトではジョブはランダムに生成されます。) ファイルから読み込んだ外部データをファイル名の入力に分割し、生成されたジョブの数と長さをリアルタイムに表示し、「OK」ボタンをクリックするとを選択すると、インターフェースにページ置換ステータスが表示されます。ランダムジョブ生成は、ジョブ数とジョブサイズを入力し、「ランダム生成」ボタンをクリックすることで、ジョブ後の状況をリアルタイムに表示し、アルゴリズムシミュレーションを行います。ファイルからの読み取りによって生成されたジョブであっても、入力によって生成されたジョブであっても、実行中のプロセス中にジョブを一時停止したり継続したりして、メモリ使用量を表示できます。この時点で、システム設計は基本的に完了します。
    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