Разработка программы для моделирования работы планировщика потоков.
Назначение программы: демонстрация работы основных алгоритмов управления порядком выполнения потоков БЕЗ создания реальных потоков.
Реализуемая модель: схема с динамическими абсолютными приоритетами и квантованием выделяемого процессорного времени, но БЕЗ блокирования потоков в связи с необходимостью ожидания наступления какого-либо события.
Исходные данные:
- возможные состояния потоков: выполнение и готовность
- число уровней приоритета: 5
- основная структура данных: АДРЕСНЫЙ СПИСОК дескрипторов потоков
- структура дескриптора: запись с тремя полями (порядковый номер потока, его текущий приоритет, текущее состояние)
- требование к списку: упорядоченность в зависимости от убывания приоритета, причем набор потоков с ОДИНАКОВЫМ приоритетом должен вести себя как ОЧЕРЕДЬ
Программа должна отрабатывать ТРИ события: создание нового потока, завершение кванта времени у активного потока, завершение выполнения активного потока.
Создание нового потока включает в себя:
- генерацию порядкового номера потока
- запрос приоритета у пользователя
- проверку занятости процессора
- сравнение приоритетов у нового и активного потоков
- при необходимости досрочное прерывание активного потока с увеличением на 1 его приоритета, изменением состояния и включением в конец набора потоков с таким же приоритетом
- включение нового потока в соответствующее место очереди потоков с установкой соответствующего состояния
Завершение кванта времени у АКТИВНОГО потока включает в себя:
- уменьшение на 1 приоритета (если это возможно)
- изменение состояния и включение в конец набора потоков с таким же приоритетом
- выбор на выполнение наиболее приоритетного потока с изменением его состояния
Завершение выполнения АКТИВНОГО потока включает в себя:
- удаление дескриптора из списка
- выбор на выполнение наиболее приоритетного потока с изменением его состояния или выводом сообщения о бездействии процессора
Требования к программе:
- тип приложения: консольный или оконный (по выбору)
- управление программой (запуск обработки событий): простейшее меню или кнопки
- отображение текущего состояния списка дескрипторов
- язык реализации: С/C++