TestFIFO

 这是我做的一个操作系统 的进程调度的算法模拟。未完成,在修改中。附件既是图片,改扩展名为.rar.

 

fcfs

 

using System;

namespace TestFIFO.classes
{
 public class FIFO:IScheduling
 { 
  private ProcInfo[] pis;
  public ProcInfo[] processParameters
  {   set{ pis=value;}  }

  public void Scheduling()//模拟调度过程,计算实验结果
  {
   //请输入FIFO调度算法的实现代码
            float currentTime = pis [0].arriveTime ;//标识当前时间   
            int index = -1;//标识当前将被调度的进程的索引号

            for (int finishedNum = 0; finishedNum < pis.Length; finishedNum++)
            {  //找出当前未被执行、到达时间最早的进程
                float earlyArriveTime = 9999;
                for (int i = 0; i < pis.Length; i++)
                    if (pis[i].executeBegin == -1 && pis[i].arriveTime < earlyArriveTime)
                    { index = i; earlyArriveTime = pis[i].arriveTime; }
                //调度被选中的进程index,其开始时间是:当前时间与其到达时间的较大者
                pis[index].executeBegin = currentTime > pis[index].arriveTime ? currentTime : pis[index].arriveTime;
                currentTime += pis[index].serveTime;
                pis[index].finished = currentTime;
            } 

  }
 }
}

sjf

 

using System;

namespace TestFIFO.classes
{
    public class SPF : IScheduling
    {
        private ProcInfo[] pis;
        public ProcInfo[] processParameters
        {
            set { pis = value; }
        }

        public void Scheduling()
        {
            //请输入SPF调度算法的实现代码
            float currentTime = 0; //pis[0].arriveTime ;//标识当前时间   
            int index = -1;//标识当前将被调度的进程的索引号

            for (int finishedNum = 0; finishedNum < pis.Length; finishedNum++)
            {  //找出当前未被执行、到达时间最早的进程
                float earlyArriveTime = 9999;
                float earlyServeTime = 9999;

                for (int i = 0; i < pis.Length; i++)
                {

                    if (pis[i].executeBegin == -1 && pis[i].serveTime <earlyServeTime )
                    {
                        index = i; //earlyArriveTime = pis[i].arriveTime;
                        earlyServeTime = pis[i].serveTime;
                        // pis[index].executeBegin = pis[i].arriveTime;
                    }//
                    // currentTime > pis[index].arriveTime ? currentTime : pis[index].arriveTime;

                }
                // pis[index].executeBegin = currentTime > pis[index].arriveTime ? currentTime : pis[index].arriveTime;
                /* if (pis[i].executeBegin == -1 && pis[i].arriveTime < earlyArriveTime)
                 { index = i; earlyArriveTime = pis[i].arriveTime; }*/
                //调度被选中的进程index,其开始时间是:当前时间与其到达时间的较大者
               // float currentTime = earlyServeTime ;
                pis[index].executeBegin = currentTime > pis[index].arriveTime ? currentTime : pis[index].arriveTime;
                currentTime += pis[index].serveTime;
                pis[index].finished = currentTime;
            }


        }
    }
}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值