|
@@ -0,0 +1,109 @@
|
|
|
|
|
+# Сценарий интерактивной игры «Диспетчер потоков: управление режимами»
|
|
|
|
|
+
|
|
|
|
|
+## Общая концепция
|
|
|
|
|
+
|
|
|
|
|
+Игрок выступает в роли планировщика операционной системы. Его задача – настроить алгоритм диспетчеризации, добавить потоки и управлять их выполнением, правильно реагируя на прерывания. Игра демонстрирует принципы управления режимами потоков (пользовательский режим / режим ядра), переключение контекста и работу разных алгоритмов планирования.
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Сцена 1. Старт и выбор алгоритма
|
|
|
|
|
+
|
|
|
|
|
+**Элементы сцены:**
|
|
|
|
|
+- Три кнопки: «Round Robin», «Приоритетное (с вытеснением)», «Выход».
|
|
|
|
|
+- Текстовое описание задания: «Выберите алгоритм планирования потоков».
|
|
|
|
|
+- Индикатор текущего времени (не влияет на механику, только атмосфера).
|
|
|
|
|
+
|
|
|
|
|
+**Действия игрока:**
|
|
|
|
|
+- Нажать на одну из кнопок выбора алгоритма.
|
|
|
|
|
+- При нажатии «Выход» игра закрывается.
|
|
|
|
|
+
|
|
|
|
|
+**Условия перехода к следующей сцене:**
|
|
|
|
|
+- Алгоритм выбран – игра переходит к Сцене 2 (добавление потоков).
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Сцена 2. Добавление потоков
|
|
|
|
|
+
|
|
|
|
|
+**Элементы сцены:**
|
|
|
|
|
+- Кнопка «+ Поток» – создаёт новый поток со случайными параметрами (ID, приоритет 1–5, остаток CPU burst 4–12).
|
|
|
|
|
+- Список (таблица) добавленных потоков с полями: ID, приоритет, остаток времени.
|
|
|
|
|
+- Кнопка «Запустить планирование» (изначально неактивна, активируется при добавлении не менее 3 потоков).
|
|
|
|
|
+- Кнопка «Назад» (возврат к выбору алгоритма).
|
|
|
|
|
+- Область сообщений: «Добавлен поток T1», «Добавлен поток T2» и т.д.
|
|
|
|
|
+
|
|
|
|
|
+**Действия игрока:**
|
|
|
|
|
+- Нажимать «+ Поток» до тех пор, пока не появится минимум 3 потока.
|
|
|
|
|
+- При желании добавить больше потоков (максимум не ограничен, но для интерфейса рекомендуется не более 8 для наглядности).
|
|
|
|
|
+- Нажать «Запустить планирование», когда готов.
|
|
|
|
|
+
|
|
|
|
|
+**Условия перехода к следующей сцене:**
|
|
|
|
|
+- Добавлено 3 или более потоков И нажата кнопка «Запустить планирование» – переход к Сцене 3 (диспетчеризация).
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Сцена 3. Диспетчеризация (основной игровой процесс)
|
|
|
|
|
+
|
|
|
|
|
+**Элементы сцены:**
|
|
|
|
|
+- Визуальная очередь готовых потоков – цветные прямоугольники с подписями «T[ID] (ост.X)».
|
|
|
|
|
+- Область активного потока – выделяется мигающим красным контуром.
|
|
|
|
|
+- Кнопка «Шаг (квант)» – выполняет один квант времени.
|
|
|
|
|
+- Счётчик шагов (сколько квантов уже выполнено).
|
|
|
|
|
+- Кнопка «Выход» (завершает игру).
|
|
|
|
|
+- Область сообщений (например, «Поток T2 выполнил квант, осталось 5 тактов»).
|
|
|
|
|
+
|
|
|
|
|
+**Действия игрока:**
|
|
|
|
|
+- Многократно нажимать «Шаг (квант)», наблюдая за изменением очереди и активного потока.
|
|
|
|
|
+- Если выбран Round Robin: каждые 3 шага текущий поток уходит в конец очереди.
|
|
|
|
|
+- Если выбрано приоритетное: при появлении потока с более высоким приоритетом (меньшее число) происходит вытеснение – текущий поток сохраняется, а новый становится активным.
|
|
|
|
|
+
|
|
|
|
|
+**Условия перехода к следующей сцене:**
|
|
|
|
|
+- Игрок выполнил не менее 4 шагов – появляется дополнительная кнопка «Прерывание!» (переход к Сцене 4 не автоматический, а по желанию игрока; при этом сама игра остаётся в Сцене 3, но прерывание становится доступным).
|
|
|
|
|
+
|
|
|
|
|
+*Особое условие:* если все потоки завершились (остаток времени стал 0 у всех) – игра переходит к финальной Сцене 5 (статистика и завершение).
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Сцена 4. Обработка прерывания (внутри Сцены 3)
|
|
|
|
|
+
|
|
|
|
|
+**Элементы сцены (появляются поверх Сцены 3 при нажатии кнопки «Прерывание!»):**
|
|
|
|
|
+- Всплывающее окно (диалог) с текстом: «Внешнее прерывание! Переход в режим ядра. Что делать?»
|
|
|
|
|
+- Две кнопки: «Обработать немедленно» и «Отложить».
|
|
|
|
|
+
|
|
|
|
|
+**Действия игрока:**
|
|
|
|
|
+- Выбрать один из вариантов.
|
|
|
|
|
+
|
|
|
|
|
+**Результат выбора:**
|
|
|
|
|
+- «Обработать немедленно» – приоритет текущего потока повышается на 2 (число уменьшается, минимум 1). Выводится сообщение: «Прерывание обработано! Приоритет потока T[X] повышен».
|
|
|
|
|
+- «Отложить» – прерывание игнорируется, но в статистике это будет отмечено как штраф (в финальной сцене снижается оценка).
|
|
|
|
|
+
|
|
|
|
|
+**Условие возврата к основной игре:**
|
|
|
|
|
+- После выбора всплывающее окно закрывается, игра возвращается к Сцене 3 (диспетчеризация). Счётчик прерываний увеличивается.
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Сцена 5. Финальная статистика и завершение
|
|
|
|
|
+
|
|
|
|
|
+**Элементы сцены:**
|
|
|
|
|
+- Текстовый отчёт с параметрами:
|
|
|
|
|
+ - Выбранный алгоритм.
|
|
|
|
|
+ - Количество обработанных потоков.
|
|
|
|
|
+ - Общее количество шагов (квантов).
|
|
|
|
|
+ - Количество обработанных прерываний (и сколько из них – немедленно).
|
|
|
|
|
+ - Оценка эффективности (A, B, C, D, F) на основе среднего времени ожидания (упрощённо: если прерывания обрабатывались сразу – выше оценка).
|
|
|
|
|
+- Кнопка «Сброс» – возвращает в Сцену 1 (выбор алгоритма).
|
|
|
|
|
+- Кнопка «Выход» – закрывает приложение.
|
|
|
|
|
+
|
|
|
|
|
+**Действия игрока:**
|
|
|
|
|
+- Ознакомиться со статистикой.
|
|
|
|
|
+- Нажать «Сброс» для новой игры или «Выход» для завершения.
|
|
|
|
|
+
|
|
|
|
|
+**Условие завершения игры:**
|
|
|
|
|
+- Нажата кнопка «Выход» – приложение закрывается.
|
|
|
|
|
+
|
|
|
|
|
+---
|
|
|
|
|
+
|
|
|
|
|
+## Примечания к реализации
|
|
|
|
|
+
|
|
|
|
|
+- Сцена 4 технически может быть реализована как модальное окно, не требующее отдельной сцены, но по условию задания «Сцена» – это этап игры, поэтому описан переход на отдельный экран обработки прерывания с возвратом.
|
|
|
|
|
+- Минимальное количество сцен – 5 (сцены 1, 2, 3, 4, 5). Сцена 3 и сцена 4 логически связаны, но считаются разными этапами.
|
|
|
|
|
+- Все визуальные элементы должны соответствовать тёмной теме и иметь анимации (по ТЗ).
|