FIFO页面调度算法处理缺页中断.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与技术系

实验报告

专业名称网络工程

课程名称操作系统原理

项目名称FIFO页面调度算法处理缺页中断

班级 12网络工程(1)班

学号 1204031030

姓名方彬

同组人员朱佳宝、王卫、凌含涛、胡星瑞

实验日期 2014.12.02

一、实验目的与要求:

(1)熟悉、掌握先进先出FIFO算法,并实现用先进先出FIFO算法页面调度算法处理缺页中断.

(2)理解基于先进先出FIFO的内存管理调度算法,更好的掌握算法的思想,结合实验理解算法更直观,深刻具体。通过对先进先出FIFO的调度算法的模拟实验可以清楚的了解内存管理是如何调度的,以及加深对内存管理的了解。

二、实验内容

1)任务分析:以无歧义的陈述说明实验任务,并明确规定:

(a)输入的形式和输入值的范围;

在输入文本框中输入,输入值的范围在0~6之间

(b) 输出的形式;

输出为缺页序列的表格

(c) 程序所能达到的功能;

输入页号,输出缺页序列,实现先进先出算法的模拟

(d) 测试数据:包括正确的输入及其输出结果和错误的输入及其输出结果。

①输入值为空:

②输入值越界:

③正确的输入值:

2)概要设计:说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

本程序中定义了一个数组int[] mainstore = {3,2,1,0 };用于模拟主存存放页;此外还定义了一个数组int[] flag = {0,0,0,0,0,0,0 };用于表明页号的修改标志位,便于之后的操作。

该程序的只要流程如下:

3)详细设计:实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。

using System;

using System.Collections.Generic;

using ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using lru;

using change;

namespace 操作系统

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}//定义一个窗口类,在类里面定义一个窗口

int[] mainstore = {3,2,1,0 };//定义数组用于存放页

int[] flag = {0,0,0,0,0,0,0 };//定义修改标志位的数组

int blo = 0;//用来控制在表格的哪一列输出页号序列

private void button1_Click(object sender, EventArgs e)//定义一个事件响应,即对输入进行操作

{

if (string.IsNullOrEmpty(txt.Text))

MessageBox.Show("请输入页号!");

else if (int.Parse(txt.Text) > 6 || int.Parse(txt.Text) < 0)

MessageBox.Show("输入页号不合法,请重新输入!");

//判断输入是否合法

else

{

int page = int.Parse(txt.Text);

int i=0;

if (page != mainstore[0] && page != mainstore[1] && page != mainstore[2] && page != mainstore[3])//插入页内存中不存在,进行FIFO算法

{

int lll;

lll = mainstore[0];

if (flag[mainstore[0]] == 0)//修改标志位为0,直接覆盖

{

mainstore[0] = page;

flag[lll] = 1;

}

Else//修改标志位为1,数组执行FIFO

{

for (i = 0; i < 3; i++)

mainstore[i] = mainstore[i + 1];

mainstore[3] = page;

}

MessageBox.Show("当前调走页号"+lll.ToString ()+"\n存入页号为"+page.ToString ());

l0.Text = "0";

l1.Text = "0";

l2.Text = "0";

l3.Text = "0";

l4.Text = "0";

l5.Text = "0";

l6.Text = "0";

//标志位初始化;

for (int j = 0; j < 4; j++)

{

if (mainstore[j] == 0)

l0.Text = "1";

if (mainstore[j] == 1)

l1.Text = "1";

if (mainstore[j] == 2)

l2.Text = "1";

if (mainstore[j] == 3)

l3.Text = "1";

if (mainstore[j] == 4)

l4.Text = "1";

if (mainstore[j] == 5)

l5.Text = "1";

if (mainstore[j] == 6)

l6.Text = "1";

}//根据插入页号,将标志位置1

for (int k = 0;k < 7; k++)

{

if (lll == 0)

ll0.Text = "1";

if (lll == 1)

ll1.Text = "1";

相关文档
最新文档