Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа№3ПланировщикЗадач.doc
Скачиваний:
50
Добавлен:
02.05.2015
Размер:
155.14 Кб
Скачать

1.3. Задание на лабораторную работу № 1

Для всех вариантов:

1. разработать три программных модуля, каждый процесс после запуска представляет уникальный процесс, работа которого предполагает экранную визуализацию; процессы не бесконечны, и завершаются не одновременно

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

Вариант 1.Реализация планировщика с двумя состояниями:

ГОТОВ ВЫПОЛНЕНИЕ

Вариант 2.Реализация планировщика с тремя состояниями:

ГОТОВ ВЫПОЛНЕНИЕОЖИДАНИЕ

В качестве ожидаемого события может быть выбрано нажатие определенной клавиши.

Вариант 3. Реализация планировщика с тремя состояниями, где величина кванта зависит от приоритета процесса, приоритет можно повысить или понизить.

Схема (см. вариант 2)

Например: Процесс блокируется по нажатию определенной клавиши.

(+ / -) – (увеличение / уменьшение) приоритета.

Пробуждение – по нажатию той же клавиши.

1.4. Общая схема работы

  1. запуск планировщика

  2. инициализация процессов и постановка их в очередь готовых к выполнению

  3. выбор первого процесса из очереди готовых

  4. обращение к контексту процесса и запуск процесса

  5. в каждом элементарном цикле обработка счетчика тиков и проверка истечения кванта:

если квант закончился – передача управления планировщику, нет продолжение работы процесса

  1. для прерванного процесса запоминается контекст, а процесс ставится в очередь готовых

  2. если очередь не пуста – возврат на 3, иначе завершение программы

1.5. Требования к реализации (для всех вариантов)

  • три программных модуля + планировщик

  • наличие структуры, имитирующей БУП

  • обязательно инициализируемая в начале работы очередь готовых процессов

  • возможность изменения кванта

1.6. Требования к отчету

  • Описание процессов

  • Схема и алгоритм работы планировщика

  • Описание структур, имитирующих БУП

  • Листинг

1.7. Дополнительные сведения и пример для реализации

В качестве рабочего процесса для реализации можно взять процесс, выводящий на экран элементы псевдографики в определенном порядке или бегущую текстовую строку. Вывод разных процессов должен отличаться друг от друга (цветом, размером, формой, расположением на экране, проч.), и каждый из процессов должен легко идентифицироваться визуально. Экранные координаты очередного элемента для вывода не должны получаться случайным образом, т.е. должна существовать некая простая логика последовательного расположения элементов. Процессы должны работать быстро, визуально параллельно, достаточно долго для того, чтобы оценить их работу (~1-2мин), и заканчиваться в разное время.

  1. Описание рабочих структур.

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

Дескриптор процесса должен состоять, по крайней мере, из идентификатора процесса, состояния процесса и ссылки на контекст. Причем под идентификатором понимается внутреннее (системное) имя процесса, на не название программного модуля.

Очередь организуется как динамический список дескрипторов.

При переходе от одного состояния к другому состояние процесса должно изменяться планировщиком.

  1. Запуск планировщика

Работа программы начинается с запуска планировщика. Рабочие процессы либо инициализируются самим планировщиком в заранее определенном порядке, либо запускаются извне пользователем, т.е. определен некий пользовательский интерфейс.

  1. Инициализация процессов и постановка их в очередь готовых к выполнению

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

  1. Выбор первого процесса из очереди готовых

Выбирается первый элемент из списка готовых процессов. Выбранный процесс помечается как текущий (исполняющийся в данный момент).

Сдвиг очереди может осуществляться сразу, а может уже после того, как запущенный процесс вновь передает управление планировщику.

  1. Обращение к контексту процесса и запуск процесса

Обнуление счетчика тиков, обращение к контексту по дескриптору выбранного процесса и передача управления процессу.

  1. Обработка счетчика тиков и проверка истечения кванта

Для работы с квантом используются прерывания DOS.

  1. Сохранение контекста прерванного процесса

Если процесс не завершил работу, состояние текущего процесса сохраняется в стеке соответствующего процесса, процесс добавляется в список готовых процессов.

  1. Переход к следующему процессу

Если очередь готовых не пуста – возврат к 3 пункту, иначе завершение работы планировщика.