1
0
فهرست منبع

Добавить 'Лекции/2.5.1200_Управление_режимом_потоков/Gurkin_tech_zd.md'

u23-27gurkin 1 ماه پیش
والد
کامیت
85e4cb49f9
1فایلهای تغییر یافته به همراه114 افزوده شده و 0 حذف شده
  1. 114 0
      Лекции/2.5.1200_Управление_режимом_потоков/Gurkin_tech_zd.md

+ 114 - 0
Лекции/2.5.1200_Управление_режимом_потоков/Gurkin_tech_zd.md

@@ -0,0 +1,114 @@
+# Техническое задание
+## на разработку обучающей игры «Диспетчер потоков: управление режимами»
+
+### 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. Отображение очереди и активного потока**  
+Все добавленные потоки показываются в виде цветных прямоугольников. На каждом прямоугольнике подпись: «T[ID] (ост. X)». Текущий выполняемый поток выделяется красным мигающим контуром или заливкой. Очередь визуально обновляется после каждого шага.
+
+**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. Примечания
+
+Данное техническое задание является итоговым документом для разработки. Все изменения согласовываются с заказчиком. В будущем возможно расширение функционала: добавление графиков эффективности, звукового сопровождения, сохранения результатов. Текущая версия предназначена для демонстрации базовых концепций управления потоками в игровой форме.