• 大小: 344KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: C#
  • 标签: 操作系统  进程管理  

资源简介

os实验,采用C#语言模拟进程管理问题,采用了时间片轮转调度、先来先服务、短进程优先调度三种算法模拟进程调度问题,可以时时查看进程调度情况和资源变化情况

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.IO;

namespace os_test2
{
    public partial class ProManage : Form
    {

        public ProManage()
        {
            InitializeComponent();
            this.InitForm();
        }
        ArrayList hAll = new ArrayList();  //存储所有进程队列
        ArrayList hReady = new ArrayList();//用于存放就绪队列
        ArrayList hBlock = new ArrayList();//用于存放阻塞队列

        int m n r a b c h = 0 timecount=0;

        public void InitForm()//初始化初始进程信息
        {
            txtPCount.Text = “5“;
            txtInitPCount.Text = “3“;
            txtACount.Text = “10“;
            txtBCount.Text = “10“;
            txtCCount.Text = “10“;
            txtTimelen.Text = “500“;
        }
        //短进程优先调度初始化进程
        public void InitPcbAndInsertSPF()
        {
            int tmp = 0;
            object p0 = null;
            ArrayList temp = new ArrayList();
            Random ran = new Random();//用于产生随机数
            m = Convert.ToInt32(txtPCount.Text.ToString());
            n = Convert.ToInt32(txtInitPCount.Text.ToString());
            a = Convert.ToInt32(txtACount.Text.ToString());
            b = Convert.ToInt32(txtBCount.Text.ToString());
            c = Convert.ToInt32(txtCCount.Text.ToString());
            time = Convert.ToInt32(txtTimelen.Text.ToString());
            timer1.Interval = time;
            r = m - n;
            count = n;
            string str = ““;
            for (int i = 0; i < n; i++)
            {
                Pcb p = new Pcb();
                p.Id = i + 1;
                p.Ra = ran.Next(a) + 1;
                p.Rb = ran.Next(b) + 1;
                p.Rc = ran.Next(c) + 1;
                p.Ntime = ran.Next(5) + 1;
                p.Rtime = 0;
                p.State = ‘B‘;
                temp.Add(p);
            }
            for (int i = 0; i < temp.Count - 1; i++)
            {
                tmp = i;
                for (int j = i + 1; j < temp.Count; j++)
                    if (((Pcb)temp[tmp]).Ntime > ((Pcb)temp[j]).Ntime) tmp = j;
                if (i != tmp)
                {
                    p0 = temp[tmp];
                    temp[tmp] = temp[i];
                    temp[i] = p0;
                }
            }
            int ff = 0;
            for (int i = 0; i < temp.Count; i++)
            {
                Pcb p = (Pcb)temp[i];
                if (p != null)
                {
                     if (ff==0&&((a - p.Ra) >= 0) && ((b - p.Rb) >= 0) && ((c - p.Rc) >= 0)) //如果符合要求写入就绪队列队尾(状态为W)
                    {
                        a = a - p.Ra;      //当前所剩A类资源数目
                        b = b - p.Rb;     //当前所剩B类资源数目
                        c = c - p.Rc;      //当前所剩C类资源数目
                        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-11-14 16:40  os_test2\
     目录           0  2012-11-14 16:40  os_test2\os_test2\
     文件         914  2012-10-10 09:15  os_test2\os_test2.sln
     文件       20480  2012-11-09 09:35  os_test2\os_test2.suo
     目录           0  2012-11-14 16:40  os_test2\os_test2\bin\
     目录           0  2012-11-14 16:40  os_test2\os_test2\bin\Debug\
     目录           0  2012-11-14 16:40  os_test2\os_test2\bin\Debug\images\
     文件       42464  2009-07-04 14:34  os_test2\os_test2\bin\Debug\images\bg1.jpg
     文件      162364  2008-10-02 11:10  os_test2\os_test2\bin\Debug\images\bg2.jpg
     文件       69632  2012-11-09 09:13  os_test2\os_test2\bin\Debug\os_test2.exe
     文件       52736  2012-11-09 09:13  os_test2\os_test2\bin\Debug\os_test2.pdb
     文件       14328  2012-11-09 09:15  os_test2\os_test2\bin\Debug\os_test2.vshost.exe
     文件         490  2009-06-11 05:14  os_test2\os_test2\bin\Debug\os_test2.vshost.exe.manifest
     文件       31062  2012-11-09 00:10  os_test2\os_test2\Form1.cs
     文件       17143  2012-11-08 23:26  os_test2\os_test2\Form1.Designer.cs
     文件        6008  2012-11-08 23:26  os_test2\os_test2\Form1.resx
     目录           0  2012-11-14 16:40  os_test2\os_test2\obj\
     目录           0  2012-11-14 16:40  os_test2\os_test2\obj\Debug\
     文件        3254  2012-11-09 09:15  os_test2\os_test2\obj\Debug\os_test2.csproj.FileListAbsolute.txt
     文件         891  2012-11-09 09:13  os_test2\os_test2\obj\Debug\os_test2.csproj.GenerateResource.Cache
     文件       69632  2012-11-09 09:13  os_test2\os_test2\obj\Debug\os_test2.exe
     文件         180  2012-10-24 00:21  os_test2\os_test2\obj\Debug\os_test2.Form1.resources
     文件       52736  2012-11-09 09:13  os_test2\os_test2\obj\Debug\os_test2.pdb
     文件         180  2012-11-09 09:13  os_test2\os_test2\obj\Debug\os_test2.ProManage.resources
     文件       43115  2012-10-24 00:21  os_test2\os_test2\obj\Debug\os_test2.Properties.Resources.resources
     目录           0  2012-10-17 11:25  os_test2\os_test2\obj\Debug\Refactor\
     目录           0  2012-11-14 16:40  os_test2\os_test2\obj\Debug\TempPE\
     文件        4608  2012-10-20 14:10  os_test2\os_test2\obj\Debug\TempPE\Properties.Resources.Designer.cs.dll
     文件        3948  2012-10-20 14:16  os_test2\os_test2\os_test2.csproj
     文件        1991  2012-11-08 23:22  os_test2\os_test2\Pcb.cs
     文件        2529  2012-10-10 10:23  os_test2\os_test2\pcb.txt
............此处省略7个文件信息

评论

共有 条评论