예제 #1
0
        void MoveToIO()
        {
            IO_TC.TabPages.Clear();
            Processor_TC.TabPages.Clear();
            DrawPageIO(inOut.ioRun); // отрисовка вкладки
            IO_TC.Refresh();         //<---
            Processor_TC.Refresh();  //<----
            TabPage tabPage = IO_TC.Controls["TabPageIO" + inOut.ioRun.descriptor.PID] as TabPage;

            StateIO_L.Text = "Состояние: " + inOut.stateIO.GetDescription();
            /* Рендер ПРОЦЕССА*/
            Label   label   = tabPage.Controls["StateIO_L" + inOut.ioRun.descriptor.PID] as Label;
            ListBox listBox = tabPage.Controls["IO_LB" + inOut.ioRun.descriptor.PID] as ListBox;

            label.Text = "Состояние: " + inOut.ioRun.descriptor.state.GetDescription();
            //listBox.SetSelected(inOut.ioRun.context.currentLine, true);
        }
예제 #2
0
 /*Диспетчер процессов FIFO*/
 void ManagerOfProc()
 {
     if (processor.stateProcessor == TStateProcessor.sprBUSY)
     {
         /*Если пришел с ВЫПОЛНЕНИЕ, то отправляется в ГОТОВНОСТЬ по условию FIFO*/
         if (processor.run.descriptor.state == TStateProcess.spREADY)// ожидаемое событие - окончание работы команды процесса
         {
             List <TProcess> temp = new List <TProcess>();
             temp.Add(processor.run);
             temp.AddRange(queueOfReady);
             queueOfReady.Clear();
             queueOfReady = temp;
             RefreshReady();                                      // текущее состояние ГОТОВНОСТЬ
             Processor_TC.TabPages.Clear();                       //визуализация удаления процесса  - ПРОЦЕССОР
             Processor_TC.Refresh();
             processor.stateProcessor = TStateProcessor.sprEMPTY; // процессор пуст, так в нем нет процесса
             GoingP_L.Text            = "Выполнено: - " + " из -";
             processor.run            = null;
         }
     }
     else/* процесс С ГОТОВНОСТЬ на ВЫПОЛНЕНИЕ - когда процессор свободен */
     {
         if (queueOfReady.Count > 0)
         {
             processor.run = queueOfReady[0];                          // инициализируем текущий
             queueOfReady.RemoveAt(0);                                 // процесс
             RefreshReady();                                           // перерисовка ГОТОВНОСТЬ
             processor.stateProcessor       = TStateProcessor.sprBUSY; // переключене процессора в рабочий режим
             processor.run.descriptor.state = TStateProcess.spRUN;     // запуск процесса
             MoveToRun();                                              //рендер отправки процесса на ВЫПОЛНЕНИЕ
         }
         else
         {
             if (!TimerOfIO.Enabled)
             {
                 TimerOfProcessor.Stop();
                 ToLog(""); ToLog("Все процессы отработали", Color.Red);
                 Processor_TC.TabPages.Clear();
                 Go_B.Enabled = true;
             }
         }
     }
 }
예제 #3
0
        void MoveToRun()
        {
            Processor_TC.TabPages.Clear();
            DrawPageProc(processor.run);        // отрисовка вкладки
            Processor_TC.Refresh();
            TabPage tabPage = Processor_TC.Controls["TabPage" + processor.run.descriptor.PID] as TabPage;

            /* Рендер ЛОГА */
            ToLog(""); ToLog(processor.run.ToString(), Color.Lime);
            ToLog(" добавлен в ВЫПОЛНЕНИЕ (квант=", Color.White);
            ToLog(processor.run.descriptor.kvant.ToString(), Color.Lime);
            ToLog(")", Color.White);
            StateP_L.Text = "Состояние: " + processor.stateProcessor.GetDescription();
            /* Рендер ПРОЦЕССА*/
            Label   label   = tabPage.Controls["State_L" + processor.run.descriptor.PID] as Label;
            ListBox listBox = tabPage.Controls["Process_LB" + processor.run.descriptor.PID] as ListBox;

            label.Text = "Состояние: " + processor.run.descriptor.state.GetDescription();
            listBox.SetSelected(processor.run.context.currentLine, true);

            //Processor_TC.Refresh();
            //groupBox4.Refresh();
        }