• 大小: 12KB
    文件类型: .cs
    金币: 2
    下载: 1 次
    发布日期: 2021-05-16
  • 语言: C#
  • 标签: C#  

资源简介

FCFS、SSTF、SCAN、CSCAN

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Text;

namespace DiscManage
{
    class Program
    {
        //先来先服务算法
        public static void FCFS(int[] array int m)
        {
            int sum = 0 i j;
            int avg;
            int now;
            Console.WriteLine(“\n 请输入当前的磁道号:“);
            now = Convert.ToInt32(Console.ReadLine());
            sum += Math.Abs(now - array[0]);
            Console.WriteLine(“\n FCFS调度结果:  “);

            for (i = 0; i < m; i++)
            {
                //输出FCFS磁盘调度结果
                Console.WriteLine(“{0}  “ array[i]);
            }

            for (i = 0 j = 1; j < m; i++ j++)
            {
                //累计总的移动距离
                sum += Math.Abs(array[j] - array[i]);

            }

            //计算平均寻道长度
            avg = sum / m;

            Console.WriteLine(“\n 移动的总道数: {0} \n“ sum);
            Console.WriteLine(“ 平均寻道长度: {0} \n“ avg);

        }

        //最短寻道时间优先算法
        public static void SSTF(int[] array int m)
        {
            int i j sum = 0;
            int k = 1;
            int now l r;
            int temp;
            int avg;

            //对磁道号进行从小到大排列
            for (i = 0; i < m; i++)
            {
                for (j = i + 1; j < m; j++)
                {
                    if (array[i] > array[j])
                    {
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }

            Console.WriteLine(“\n 请输入当前的磁道号:“);
            now = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(“\n SSTF调度结果:  “);

            if (array[m - 1] <= now)
            {
                for (i = m - 1; i >= 0; i--)
                    Console.WriteLine(“{0}  “ array[i]);

                sum = now - array[0];
            }
            else if (array[0] >= now)
            {
                for (i = 0; i < m; i++)
                    Console.WriteLine(“{0}  “ array[i]);

                sum = array[m - 1] - now;
            }
            else
            {
                while (array[k] < now)
                {
                    k++;
                }

                l = k - 1;
                r = k;

                //确定当前磁道在已排的序列中的位置
                while ((l >= 0) && (r < m))
                {
                    if ((now - array[l]) <= (array[r] - now))
                    {
                        Console.WriteLine(“{0}  “ array[l]);
                        sum += now - array[l];
                        now = array[l];
                        l = l - 1;
                    }
                    else
                    {
                        Console.WriteLine(“{0}  “ array[r]);
                        sum += array[r] - now;
                        now = array[r];
               

评论

共有 条评论