Esempio n. 1
0
        /// <summary>
        /// Resets the Scheduler to defaults
        /// </summary>
        public void Reset()
        {
            EventLogger.Clear();

            //Clears algorithm storage (queue, etc.)
            selectedAlgorithm.Reset();
            //Reset all process
            processList.ForEach(i => i.Reset());
            //Forward the processes (again...)
            selectedAlgorithm.Initialize(processList);

            // Unset process in CPU if there's any set
            cpu.UnsetProcess();

            worktime   = 0;
            turn       = 1;
            elapsed    = 1;
            logCounter = 0;
            wasted     = 0;

            //Initialize EventLogger and set headers
            EventLogger.Initialize();
            EventLogger.AddEvent("Selected algorithm: " + selectedAlgorithm.GetType().Name);
            EventLogger.AddEvent("Process Count: " + processList.Count);
            EventLogger.AddEvent("Processes: ");
            processList.ForEach(x => EventLogger.AddEvent(x.Process.ToString()));
            LogCurrentState();
        }
Esempio n. 2
0
        /// <summary>
        /// Constructor of the class
        /// </summary>
        /// <param name="list">List of the processes</param>
        /// <param name="alg">Instance of the chosen algorithm</param>
        public Scheduler(List <Process> list, SchedulingAlgorithm alg)
        {
            // Set PID default value
            counter = 0;

            processList       = EncapsulateProcesses(list);
            selectedAlgorithm = alg;

            // Initialize algorithm with the list of processes
            selectedAlgorithm.Initialize(processList);

            cpu = new CPU();

            worktime   = 0;
            turn       = 1;
            elapsed    = 1;
            logCounter = 0;
            wasted     = 0;

            //Initialize EventLogger and set headers
            EventLogger.Initialize();
            EventLogger.AddEvent("Selected algorithm: " + selectedAlgorithm.GetType().Name);
            EventLogger.AddEvent("Process Count: " + processList.Count);
            EventLogger.AddEvent("Processes: ");
            processList.ForEach(x => EventLogger.AddEvent(x.Process.ToString()));
            LogCurrentState();
        }