Название проекта: «Диспетчер потоков: управление режимами» (Thread Scheduler Simulator)
Назначение: Обучающее ПО для демонстрации алгоритмов планирования потоков в операционных системах, переключения между пользовательским режимом и режимом ядра, а также обработки прерываний.
Целевая аудитория: Студенты IT-направлений, преподаватели курсов по операционным системам, разработчики многопоточных приложений.
Платформа реализации:
2.1. Выбор алгоритма планирования
При запуске игрок видит две кнопки: «Round Robin» и «Приоритетное (с вытеснением)». Выбор определяет поведение планировщика на протяжении всей игры.
2.2. Управление потоками
После выбора алгоритма появляется интерфейс добавления потоков. Кнопка «+ Поток» создаёт новый поток со следующими случайными параметрами:
2.3. Отображение очереди и активного потока
Все добавленные потоки показываются в виде цветных прямоугольников. На каждом прямоугольнике подпись: «TID». Текущий выполняемый поток выделяется красным мигающим контуром или заливкой. Очередь визуально обновляется после каждого шага.
2.4. Пошаговое выполнение
Кнопка «Шаг (квант)» запускает один шаг планировщика.
2.5. Эмуляция прерывания
После того как игрок сделал не менее четырёх шагов, появляется кнопка «Прерывание!». При её нажатии имитируется внешнее прерывание (переход в режим ядра). Эффект: приоритет текущего потока повышается на 2 (числовое значение уменьшается на 2, но не ниже 1). На экран выводится сообщение: «Прерывание обработано! Приоритет потока T[X] повышен».
2.6. Завершение игры
Когда все потоки исчерпали свой остаток процессорного времени, появляется сообщение «Все потоки завершены! Игра пройдена» и кнопка «Выход». Также кнопка «Выход» доступна на любом этапе для принудительного закрытия.
3.1. Производительность
Частота кадров должна быть не ниже 30 FPS при работе с 10 потоками. Отклик на нажатие кнопок – мгновенный (без заметных задержек).
3.2. Надёжность
Программа не должна завершаться аварийно при некорректных действиях пользователя, например при попытке сделать шаг, когда очередь пуста, или при нажатии на кнопку до выбора алгоритма.
3.3. Удобство использования
Всё управление осуществляется мышью. Кнопки имеют эффект наведения (меняют цвет). Текст сообщений (о добавлении потока, о прерывании, о завершении) выводится в специальной области экрана.
3.4. Требования к графике и анимациям
3.5. Расширяемость
Код должен позволять легко добавлять новые алгоритмы планирования (например, FCFS или многоуровневые очереди). Для этого параметры вроде кванта времени и диапазонов приоритетов выносятся в константы в начале файла.
3.6. Совместимость
Использовать только кроссплатформенные возможности Pygame. Избегать системно-зависимых вызовов.
Проект состоит из одного Python-скрипта. В нём реализованы:
add_thread и step (основная логика планирования).draw_button (рисует кнопку и возвращает True при нажатии), draw_queue (отображает очередь и активный поток), draw_message (вывод сообщений в нижней части экрана).Логика работы: сцена 0 → выбор алгоритма → сцена 1 → добавление не менее 3 потоков → сцена 2 → пошаговое выполнение с возможностью прерывания → завершение.
Вместе с программой поставляются следующие файлы в формате Markdown:
lecture.md – лекция по теме «Управление режимом потоков» объёмом около 650 слов, без орфографических ошибок, с оригинальностью выше 50%.questions.md – пять вопросов для самопроверки, каждый с четырьмя вариантами ответа, правильный ответ выделен полужирным шрифтом.scenario.md – сценарий интерактивной игры из пяти сцен, с описанием элементов, действий и условий перехода.thread_scheduler_game.py – исполняемый код на Python с графическим интерфейсом.technical_specification.md – настоящее техническое задание.Инструкция по запуску: установить Python, выполнить pip install pygame, затем запустить скрипт командой python thread_scheduler_game.py.
Данное техническое задание является итоговым документом для разработки. Все изменения согласовываются с заказчиком. В будущем возможно расширение функционала: добавление графиков эффективности, звукового сопровождения, сохранения результатов. Текущая версия предназначена для демонстрации базовых концепций управления потоками в игровой форме.