コード例 #1
0
        /*Запуск модели*/
        private void Go_B_Click(object sender, EventArgs e)
        {
            Load_GB.Hide();
            ReadyLoad_LB.ClearSelected();
            Log.Clear();
            //TBootFile bf = new TBootFile();
            //bf.nameOfFile = "процесс2";
            //bf.comandsOfFile.Add("ПАМЯТЬ-1000");
            //bf.comandsOfFile.Add("ПРОЦЕССОР-3");
            //bf.comandsOfFile.Add("ПРОЦЕССОР-2");
            //bf.comandsOfFile.Add("КОНЕЦ");
            //TProcess prss = CreateProcess(bf);
            //queueOfReady.Add(prss);
            //TimerOfProcessor.Start();
            if (QueueOfReady_LB.Items.Count > 0)
            {
                ///Processor_TC.TabPages.Clear();//Очистка вкладок
                /*Заполнение главного списка процессов из списка ГОТОВНОСТЬ*/
                for (int i = 0; i < QueueOfReady_LB.Items.Count; i++)
                {
                    TBootFile bootFile = QueueOfReady_LB.Items[i] as TBootFile;
                    TProcess  process  = CreateProcess(bootFile);
                    queueOfReady.Add(process);
                    /* Для рендера ЛОГА  при создании процесса*/
                    ToLog("Создан процесс "); ToLog(process.ToString(), Color.Lime);
                    ToLog(" и добавлен в очерель ГОТОВНОСТЬ.", Color.White);
                    ToLog("Занято ");
                    ToLog(process.descriptor.memory.ToString() + " байт", Color.Lime);
                    ToLog(" процессом ", Color.White);
                    ToLog(process.descriptor.name, Color.Lime);
                }
                /*Отрисовка вкладок ПРОЦЕССОР*/

                /*int j = 0;
                 * foreach (TProcess str in queueOfReady)
                 * {
                 *  DrawPageProc(queueOfReady[j++]);
                 * }*/
                ToLog("Очередь ГОТОВНОСТЬ сформирована.");
                ToLog("Планировщик процессов - запущен.");
                TimerOfProcessor.Start();
                Go_B.Enabled = false;
            }
            else
            {
                ToLog("Добавте сперва процесс в очередь ГОТОВНОСТЬ", Color.Red);
            }
        }
コード例 #2
0
 /*Кнопка добавление файла в ГОТОВНОСТЬ*/
 private void AddToQueueOfReady_B_Click(object sender, EventArgs e)
 {
     if (TimerOfProcessor.Enabled == false)
     {
         Log.Clear();
         Go_B.Enabled = true;
         TBootFile selectFile = ReadyLoad_LB.SelectedItem as TBootFile;
         //добавление процесса, выбранного в списке доступных, в очередь ГОТОВНОСТЬ
         QueueOfReady_LB.Items.Add(selectFile);
     }
     else
     {
         TBootFile selectFile = ReadyLoad_LB.SelectedItem as TBootFile;
         QueueOfReady_LB.Items.Add(selectFile);
     }
 }
コード例 #3
0
        /* Создание процесса */
        TProcess CreateProcess(TBootFile bootFile)
        {
            TProcess process = new TProcess();

            /*Список команд загрузочного файла - кодовый сегмент*/
            process.strFileCommands = bootFile.comandsOfFile;
            /*Заполнение дескриптора процесса*/
            process.descriptor.name = bootFile.nameOfFile;
            process.descriptor.PIDcount();
            process.descriptor.kvant  = 1;
            process.descriptor.state  = TStateProcess.spREADY;
            process.descriptor.memory = process.GetCountRun(0);
            /*Настроить содержимое контекста нового процесса (инициализация начальными параметрами)*/
            process.context.currentLine = 0;
            process.context.command     = TCommand.cMEMORY;
            process.context.currentRun  = 0;
            process.context.countRun    = process.GetCountRun(0);
            return(process);
        }
コード例 #4
0
 /*События, при выборе файла в списке доступных файлов*/
 private void ReadyLoad_LB_SelectedIndexChanged(object sender, EventArgs e)
 {
     FileShow_LB.Items.Clear();
     QueueOfReady_LB.ClearSelected();
     if (ReadyLoad_LB.SelectedIndex != -1)
     {
         Load_GB.Show();
         TBootFile bootFile = ReadyLoad_LB.SelectedItem as TBootFile;
         foreach (string comandfile in bootFile.comandsOfFile)
         {
             FileShow_LB.Items.Add(comandfile);
         }
         if (TimerOfProcessor.Enabled == false)
         {
             ToLog("Нажмите Добавить, чтобы отправить выбранный файл в очередь ГОТОВНОСТЬ.\r\n", Color.DeepSkyBlue);
             ToLog("       -- клик ПКМ по области описание файла, скрывает его.", Color.DeepSkyBlue);
             Log.Clear();
         }
     }
 }
コード例 #5
0
        /*Меню загрузки файла*/
        private void Button_TS_Click(object sender, EventArgs e)
        {
            Load_GB.Hide();
            ReadyLoad_LB.ClearSelected();
            Open_D.Multiselect = true;
            Open_D.Filter      = "Text files(*.txt)|*.txt|All files(*.*)|*.*";
            Open_D.FileName    = ""; // Имя файла "по умолчанию" не задано
            Open_D.Title       = "Загрузка файла, моделирующего процесс";

            /* *
             * Вызов диалогового окна выбора файла для загрузки и проверка результата завершения его работы.
             * Если окно закрыто с подтверждением загрузки (нажата кнопка OK),
             * то выполнение действий по чтению файла построчно
             * */
            if (Open_D.ShowDialog() == DialogResult.OK)
            {
                foreach (string file in Open_D.FileNames)
                {
                    using (StreamReader sr = new StreamReader(file, Encoding.Default))
                    {
                        TBootFile bootFile = new TBootFile();
                        bootFile.nameOfFile = Path.GetFileNameWithoutExtension(file);
                        while (!sr.EndOfStream)
                        {
                            string line = sr.ReadLine().Trim();
                            bootFile.comandsOfFile.Add(line);
                        }
                        ReadyLoad_LB.Items.Add(bootFile);
                    }
                }
                if (!TimerOfProcessor.Enabled)
                {
                    Log.Clear();
                    ToLog("Выберите любой файл и добавте его в список ГОТОВНОСТЬ", Color.DeepSkyBlue);
                }
            }
        }