⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagetable.cs

📁 用C#写的关于虚拟存储器的算法
💻 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 + -