1
0

Gurkin_tech_zd.md 12 KB

Техническое задание

на разработку обучающей игры «Диспетчер потоков: управление режимами»

1. Общие сведения

Название проекта: «Диспетчер потоков: управление режимами» (Thread Scheduler Simulator)

Назначение: Обучающее ПО для демонстрации алгоритмов планирования потоков в операционных системах, переключения между пользовательским режимом и режимом ядра, а также обработки прерываний.

Целевая аудитория: Студенты IT-направлений, преподаватели курсов по операционным системам, разработчики многопоточных приложений.

Платформа реализации:

  • Язык программирования: Python 3.8 и выше.
  • Графическая библиотека: Pygame 2.5.
  • Поддерживаемые ОС: Windows 10/11, Ubuntu 20.04+, macOS 11+.
  • Минимальные требования: 2 ГБ ОЗУ, процессор от 1.5 ГГц, разрешение экрана от 1024×768.

2. Функциональные требования

2.1. Выбор алгоритма планирования
При запуске игрок видит две кнопки: «Round Robin» и «Приоритетное (с вытеснением)». Выбор определяет поведение планировщика на протяжении всей игры.

2.2. Управление потоками
После выбора алгоритма появляется интерфейс добавления потоков. Кнопка «+ Поток» создаёт новый поток со следующими случайными параметрами:

  • уникальный идентификатор (ID);
  • приоритет от 1 до 5 (1 – наивысший);
  • остаток процессорного времени (CPU burst) от 4 до 12 тактов.
    Игрок может добавить любое количество потоков, но для перехода к симуляции необходимо минимум три потока.

2.3. Отображение очереди и активного потока
Все добавленные потоки показываются в виде цветных прямоугольников. На каждом прямоугольнике подпись: «TID». Текущий выполняемый поток выделяется красным мигающим контуром или заливкой. Очередь визуально обновляется после каждого шага.

2.4. Пошаговое выполнение
Кнопка «Шаг (квант)» запускает один шаг планировщика.

  • Для Round Robin: поток выполняется 3 такта (квант), после чего перемещается в конец очереди, если не завершился раньше.
  • Для приоритетного алгоритма: каждый такт проверяется наличие потока с более высоким приоритетом (меньшим числом). Если такой есть – текущий поток вытесняется и помещается в начало очереди (или в конец – на усмотрение реализации, но вытеснение должно быть заметно).

2.5. Эмуляция прерывания
После того как игрок сделал не менее четырёх шагов, появляется кнопка «Прерывание!». При её нажатии имитируется внешнее прерывание (переход в режим ядра). Эффект: приоритет текущего потока повышается на 2 (числовое значение уменьшается на 2, но не ниже 1). На экран выводится сообщение: «Прерывание обработано! Приоритет потока T[X] повышен».

2.6. Завершение игры
Когда все потоки исчерпали свой остаток процессорного времени, появляется сообщение «Все потоки завершены! Игра пройдена» и кнопка «Выход». Также кнопка «Выход» доступна на любом этапе для принудительного закрытия.


3. Нефункциональные требования

3.1. Производительность
Частота кадров должна быть не ниже 30 FPS при работе с 10 потоками. Отклик на нажатие кнопок – мгновенный (без заметных задержек).

3.2. Надёжность
Программа не должна завершаться аварийно при некорректных действиях пользователя, например при попытке сделать шаг, когда очередь пуста, или при нажатии на кнопку до выбора алгоритма.

3.3. Удобство использования
Всё управление осуществляется мышью. Кнопки имеют эффект наведения (меняют цвет). Текст сообщений (о добавлении потока, о прерывании, о завершении) выводится в специальной области экрана.

3.4. Требования к графике и анимациям

  • Тёмная цветовая схема (фон тёмно-синий, элементы очереди – яркие контрастные цвета).
  • Скруглённые углы кнопок и прямоугольников потоков.
  • Пульсация активного потока (плавное изменение яркости или мигание).
  • Плавное обновление очереди (при удалении завершённого потока остальные сдвигаются).

3.5. Расширяемость
Код должен позволять легко добавлять новые алгоритмы планирования (например, FCFS или многоуровневые очереди). Для этого параметры вроде кванта времени и диапазонов приоритетов выносятся в константы в начале файла.

3.6. Совместимость
Использовать только кроссплатформенные возможности Pygame. Избегать системно-зависимых вызовов.


4. Архитектура приложения

Проект состоит из одного Python-скрипта. В нём реализованы:

  • Класс Thread – хранит ID, приоритет, оставшееся время, цвет для отрисовки.
  • Класс Scheduler – управляет очередью потоков, текущим потоком, алгоритмом, счётчиком кванта. Содержит методы add_thread и step (основная логика планирования).
  • Функции отрисовкиdraw_button (рисует кнопку и возвращает True при нажатии), draw_queue (отображает очередь и активный поток), draw_message (вывод сообщений в нижней части экрана).
  • Главный цикл – обрабатывает события Pygame, управляет сценами (0 – выбор алгоритма, 1 – добавление потоков, 2 – симуляция), вызывает функции отрисовки и обновляет экран.

Логика работы: сцена 0 → выбор алгоритма → сцена 1 → добавление не менее 3 потоков → сцена 2 → пошаговое выполнение с возможностью прерывания → завершение.


5. Состав документации и поставки

Вместе с программой поставляются следующие файлы в формате 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.


6. Критерии приёмки

  • Программа успешно запускается на целевой ОС без ошибок.
  • Реализованы все функциональные требования: выбор алгоритма, добавление потоков, пошаговое выполнение, прерывание после четырёх шагов, корректное завершение.
  • Присутствуют анимации (мигание активного потока, эффекты наведения кнопок).
  • Исходный код соответствует стандарту PEP 8, содержит комментарии к сложным участкам.
  • Лекция содержит более 600 слов, орфографических ошибок менее 2%, не является копией готовых источников.
  • Сценарий игры включает минимум пять сцен с чёткими условиями перехода.
  • Вопросы оформлены согласно варианту №1: каждый вопрос с новой строки, ответы – ниже, правильный ответ полужирный, вопросы разделены пустой строкой.

7. Примечания

Данное техническое задание является итоговым документом для разработки. Все изменения согласовываются с заказчиком. В будущем возможно расширение функционала: добавление графиков эффективности, звукового сопровождения, сохранения результатов. Текущая версия предназначена для демонстрации базовых концепций управления потоками в игровой форме.