Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Очередь процессов.docx
Скачиваний:
2
Добавлен:
20.11.2019
Размер:
105.72 Кб
Скачать

1.4 Задание

Проект из лабораторной работы №3 дополнить классом, описывающим объект Процесс. Отобразить на форме события создания процесса и постановки его в очередь.

Класс процесса (Tprocess) должен иметь следующие поля:

  • PID (идентификационный номер процесса);

  • имя процессу (срочного типа);

  • приоритет процесса;

  • необходимое время выполнения на CPU (процессоре);

  • необходимое время выполнения во внешнем ресурсе;

  • время прибытия в систему;

  • отработанное время на CPU;

  • отработанное время во внешнем ресурсе;

  • состояние процесса ( перечислимый тип);

и методы:

  • конструктор;

  • процедура повышения времени нахождения процесса на CPU;

  • функция преобразования атрибутов процесса в массив;

  • функция преобразования атрибутов процесса в строку;

  • функция возвращения признака завершения.

Класс очереди элементов превратить в очередь процессов. Реализовать две очереди: очередь готовых процессов (на CPU) и очередь ожидающих доступа к внешнему ресурсу.

Заполнение атрибутов процесса происходит по нажатию на кнопку СОЗДАТЬ ПРОЦЕСС, данные берутся из полей ввода. Значение атрибута состояние = «новый».

При постановке процесса в очередь учитывать приоритет, значение атрибута состояние изменить на «готов».

Событие изъятия из очереди готовых процессов имитирует активизацию процесса, т.е. состояние меняется на «исполнение».

Индивидуальные задания

  1. Создать неупорядоченную очередь процессов. Обеспечить имитацию выполнения процессов: на каждом такте таймера увеличивать на 1 значение поля «отработанное время на CPU». Когда оно достигает значения «необходимое время выполнения на CPU», автоматически удалить соответствующий объект-процесс и сделать автоматическое извлечение следующего процесса из очереди.

  2. Создать неупорядоченную очередь процессов. Создать код автоматического создания нового процесса со случайными значениями характеристик. Выполнять данный код через равные промежутки времени. Значение интервала задать в поле ввода.

  3. Создать неупорядоченную очередь процессов. Создать код автоматического создания нового процесса со случайными значениями характеристик. Выполнять данный код через случайные промежутки времени.

  4. Создать неупорядоченную очередь процессов. Прибавить метод сортировки очереди по заданному критерию процесса, а также кнопку его вызова.

  5. По нажатии на кнопку «Создать процесс» при отсутствии характеристик в соответствующих полях сгенерировать их случайным образом.

  6. Реализовать упорядоченную очередь процессов с приоритетами "низкий", "средний" и "высокий". Каждые 5 тактов создавать новый процесс.

  7. Реализовать неупорядоченную очередь процессов с приоритетами "низкий", "средний" и "высокий". Обеспечить упорядочение очереди через каждые 10 такты таймера.

  8. Реализовать упорядоченную очередь на массиве с приоритетами от 0(самый низкий) до 9(наивысший). Каждые 30 тактов таймера создавать новый процесс.

  9. Реализовать три очереди процессов для приоритетов "низкий", "средний" и "высокий". Для извлечения выбирать элемент сначала из более приоритетной очереди.

  10. Обеспечить имитацию выполнения процессов: на каждом такте таймера увеличивать на 1 значение поля «отработанное время на CPU». Добавить поле ввода КОЛИЧЕСТВО ТАКТОВ. По истечении количества тактов, равному значению этого поля, автоматически удалить соответствующий объект-процесс и сделать автоматическое извлечение следующего процесса из очереди.

  11. Обеспечить имитацию выполнения процессов: на каждом такте таймера увеличивать на 1 значение поля «отработанное время на CPU». Добавить кнопку ОСТАНОВ, по нажатию на которую приостанавливать соответствующий объект-процесс. Если процесс еще не исчерпал необходимое время выполнения на CPU, изменить значение этого поля и поставить процесс в очередь готовых процессов.

  12. Реализовать три очереди процессов для приоритетов "низкий", "средний" и "высокий". Для извлечения выбирать элемент из очереди с приоритетом «высокий». Добавить кнопку ПЕРЕСЧЕТ ПРИОРИТЕТОВ, по нажатию на которую процессы перемещаются в очередь на приоритет выше, изменить значение поля «приоритет».