📄 pagetable.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
namespace WindowsApplication1.classes
{
public static class pageTable
{
public static DataTable dtp= new DataTable();
public static DataTable dtc = new DataTable();
public static DataTable rs = new DataTable();
public static List<instructionProgram> li = new List<instructionProgram>();
public static List<pageProgram> ls = new List<pageProgram>();
public static List<fifoProgram> lf = new List<fifoProgram>();
public static void makepageTable()
{
DataColumn dc1 = new DataColumn("操作");
DataColumn dc2 = new DataColumn("页号");
DataColumn dc3 = new DataColumn("单元号");
dtp.Columns.Add(dc1);
dtp.Columns.Add(dc2);
dtp.Columns.Add(dc3);
DataColumn dc4 = new DataColumn("页号");
DataColumn dc5 = new DataColumn("标志");
DataColumn dc6 = new DataColumn("主存块号");
DataColumn dc7 = new DataColumn("磁盘位置");
dtc.Columns.Add(dc4);
dtc.Columns.Add(dc5);
dtc.Columns.Add(dc6);
dtc.Columns.Add(dc7);
DataColumn dc0 = new DataColumn("缺页页号");
DataColumn dc8 = new DataColumn("绝对地址");
DataColumn dc9 = new DataColumn("操作");
rs.Columns.Add(dc9);
rs.Columns.Add(dc8);
rs.Columns.Add(dc0);
makeUnit();
makePage();
makeTable();
makeResult();
makefifoPage();
}
public static void makeTable()
{
for (int i = 0; i < li.Count; i++)
{
DataRow dr = dtp.NewRow();
string str1 = li[i]._operateCode.ToString();
dr[0] = str1;
string str2 = li[i]._pageNumber.ToString();
dr[1] = str2;
string str3 = li[i]._unitNumber.ToString();
dr[2] = str3;
dtp.Rows.Add(dr);
dr = null;
}
for (int i = 0; i < ls.Count; i++)
{
DataRow dr = dtc.NewRow();
dr[0] = ls[i]._pageNumber.ToString();
dr[1] = ls[i]._pageMark.ToString();
dr[2] = ls[i]._memoryNumber.ToString();
dr[3] = ls[i]._position.ToString();
dtc.Rows.Add(dr);
dr = null;
}
}
public static void makeUnit()
{
instructionProgram ip = new instructionProgram();
ip._operateCode = "+";
ip._pageNumber = 0;
ip._unitNumber = 070;
li.Add(ip);
instructionProgram ip1 = new instructionProgram();
ip1._operateCode = "+";
ip1._pageNumber = 1;
ip1._unitNumber = 050;
li.Add(ip1);
instructionProgram ip2 = new instructionProgram();
ip2._operateCode = "*";
ip2._pageNumber = 2;
ip2._unitNumber = 015;
li.Add(ip2);
instructionProgram ip3 = new instructionProgram();
ip3._operateCode = "write";
ip3._pageNumber = 3;
ip3._unitNumber = 021;
li.Add(ip3);
instructionProgram ip4 = new instructionProgram();
ip4._operateCode = "read";
ip4._pageNumber = 0;
ip4._unitNumber = 056;
li.Add(ip4);
instructionProgram ip5 = new instructionProgram();
ip5._operateCode = "-";
ip5._pageNumber = 6;
ip5._unitNumber = 040;
li.Add(ip5);
instructionProgram ip6 = new instructionProgram();
ip6._operateCode = "shift";
ip6._pageNumber = 4;
ip6._unitNumber = 053;
li.Add(ip6);
instructionProgram ip7 = new instructionProgram();
ip7._operateCode = "+";
ip7._pageNumber = 5;
ip7._unitNumber = 023;
li.Add(ip7);
instructionProgram ip8 = new instructionProgram();
ip8._operateCode = "write";
ip8._pageNumber = 1;
ip8._unitNumber = 037;
li.Add(ip8);
instructionProgram ip9 = new instructionProgram();
ip9._operateCode = "read";
ip9._pageNumber = 2;
ip9._unitNumber = 078;
li.Add(ip9);
instructionProgram ip0 = new instructionProgram();
ip0._operateCode = "+";
ip0._pageNumber = 4;
ip0._unitNumber = 001;
li.Add(ip0);
instructionProgram ip10 = new instructionProgram();
ip10._operateCode = "write";
ip10._pageNumber = 6;
ip10._unitNumber = 084;
li.Add(ip10);
}
public static void makePage()
{
pageProgram pp = new pageProgram();
pp._pageNumber = 0;
pp._pageMark = 1;
pp._memoryNumber = 5;
pp._position = 011;
ls.Add(pp);
pageProgram pp1 = new pageProgram();
pp1._pageNumber = 1;
pp1._pageMark = 1;
pp1._memoryNumber = 8;
pp1._position = 012;
ls.Add(pp1);
pageProgram pp2 = new pageProgram();
pp2._pageNumber = 2;
pp2._pageMark = 1;
pp2._memoryNumber = 9;
pp2._position = 013;
ls.Add(pp2);
pageProgram pp3 = new pageProgram();
pp3._pageNumber = 3;
pp3._pageMark = 1;
pp3._memoryNumber = 1;
pp3._position = 021;
ls.Add(pp3);
pageProgram pp4 = new pageProgram();
pp4._pageNumber = 4;
pp4._pageMark = 0;
pp4._memoryNumber = 0;
pp4._position = 022;
ls.Add(pp4);
pageProgram pp5 = new pageProgram();
pp5._pageNumber = 5;
pp5._pageMark = 0;
pp5._memoryNumber = 0;
pp5._position = 023;
ls.Add(pp5);
pageProgram pp6 = new pageProgram();
pp6._pageNumber = 6;
pp6._pageMark = 0;
pp6._memoryNumber = 0;
pp6._position = 121;
ls.Add(pp6);
}
public static void makefifoPage()
{
fifoProgram pp = new fifoProgram();
pp._pageNumber = 0;
pp._pageMark = 1;
pp._memoryNumber = 5;
pp._position = 011;
lf.Add(pp);
fifoProgram pp1 = new fifoProgram();
pp1._pageNumber = 1;
pp1._pageMark = 1;
pp1._memoryNumber = 8;
pp1._position = 012;
lf.Add(pp1);
fifoProgram pp2 = new fifoProgram();
pp2._pageNumber = 2;
pp2._pageMark = 1;
pp2._memoryNumber = 9;
pp2._position = 013;
lf.Add(pp2);
fifoProgram pp3 = new fifoProgram();
pp3._pageNumber = 3;
pp3._pageMark = 1;
pp3._memoryNumber = 1;
pp3._position = 021;
lf.Add(pp3);
fifoProgram pp4 = new fifoProgram();
pp4._pageNumber = 4;
pp4._pageMark = 0;
pp4._memoryNumber = 0;
pp4._position = 022;
lf.Add(pp4);
fifoProgram pp5 = new fifoProgram();
pp5._pageNumber = 5;
pp5._pageMark = 0;
pp5._memoryNumber = 0;
pp5._position = 023;
lf.Add(pp5);
fifoProgram pp6 =new fifoProgram();
pp6._pageNumber = 6;
pp6._pageMark = 0;
pp6._memoryNumber = 0;
pp6._position = 121;
lf.Add(pp6);
}
public static void makeResult()
{
foreach (DataRow dr in dtp.Rows)
{
foreach (DataRow dd in dtc.Rows)
{
if (dr[1].ToString().Equals(dd[0].ToString()))
{
if (dd[1].ToString().Equals("1"))
{
DataRow dddd = rs.NewRow();
dddd[0] = dr[0].ToString();
dddd[1] = ((int.Parse(dd[2].ToString())) * 128 + (int.Parse(dr[2].ToString())));
dddd[2] = "";
rs.Rows.Add(dddd);
continue;
}
else
{
DataRow ddd = rs.NewRow();
ddd[0] = dr[0].ToString();
ddd[1] = "";
ddd[2] = dd[0].ToString();
rs.Rows.Add(ddd);
continue;
}
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -