예제 #1
0
        private static void tahin()
        {
            Fcfs lq = new Fcfs();

            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 1, Name = "A", BurstTime = 5
            });
            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 6, Name = "B", BurstTime = 6
            });
            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 3, Name = "C", BurstTime = 2
            });
            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 4, Name = "D", BurstTime = 3
            });
            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 8, Name = "E", BurstTime = 1
            });
            lq.Enqueue(new ProcessControlBlock {
                ArrivalTime = 2, Name = "F", BurstTime = 4
            });

            Console.WriteLine(lq.Display());
            lq.OrderByArrivelTime();
            Console.WriteLine(lq.Display());
            lq.Go();
            Console.WriteLine($"    Total Burst Time : {lq.TotalBurstTime}");
            Console.WriteLine($"  Average Burst Time : {lq.AverageBurstTime()}");
            Console.WriteLine($"Average Waiting Time : {lq.AverageWaitingTime()}");
            End();
        }
예제 #2
0
        static void Main(string[] args)
        {
            //var lines = File.ReadAllLines("teste1.txt").Select(x => int.Parse(x)).ToList();

            //var disc = new Disk();
            //disc.SetQueue(lines.Skip(2).ToList());
            //disc.HeadPosition = lines[1];
            //disc.Size = lines[0];

            ////var fcfs = new Fcfs(disc);

            ////fcfs.Resolve();
            ////fcfs.Print();


            ////var sstf = new Sstf(disc);

            ////sstf.Resolve();
            ////sstf.Print();

            //var scan = new Scan(disc);

            //scan.Resolve();
            //scan.Print();


inicio:
            string path = "";

            while (true)
            {
                Console.WriteLine("Digite o nome do arquivo:");
                path = Console.ReadLine();
                if (path.Equals("SAIR", StringComparison.InvariantCultureIgnoreCase))
                {
                    Environment.Exit(0);
                }
                if (!File.Exists(path))
                {
                    Console.WriteLine($"Arquivo não encontrado em: {path}");
                    continue;
                }

                break;
            }

            var lines = File.ReadAllLines(path).Select(x => int.Parse(x)).ToList();
            var disc  = new Disk();

            disc.SetQueue(lines.Skip(2).ToList());
            disc.HeadPosition = lines[1];
            disc.Size         = lines[0];


            var fcfs = new Fcfs(disc);
            var scan = new Scan(disc);
            var sstf = new Sstf(disc);

            string outputText = "";

            fcfs.Resolve();
            outputText += fcfs.Print() + Environment.NewLine;
            disc.Free();
            sstf.Resolve();
            outputText += sstf.Print() + Environment.NewLine;
            disc.Free();
            scan.Resolve();
            outputText += scan.Print() + Environment.NewLine;

            var output = path.Replace(".txt", "_resolved.txt");

            File.WriteAllText(output, outputText);
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine($"ARQUIVO GERADO: {output}");
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("Digite SAIR para sair.");
            Console.WriteLine();
            goto inicio;
        }