Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая_планировщик.docx
Скачиваний:
3
Добавлен:
23.09.2019
Размер:
328.98 Кб
Скачать

2.2.Формализация задачи

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

1. Будем считать, что квант времени принимает целочисленное значение. То есть длина элементарного кванта времени, время жизни процесса, увеличение кванта времени при переходе от одной очереди к другой – это целое положительное число.

2. Созданные процессы помещаются в очередь 0.

3. Из-за отсутствия каких-либо условий и ограничений на моменты времени запроса и освобождения ресурса будем считать, что эти события происходят случайным образом с вероятностью 50%. Так же определение номера необходимого ресурса будет происходить случайно.

4. Решение о переходе процесса из одной очереди в другую будет приниматься не сразу, как это нам предписывает классический алгоритм, а после работы процесса в данной очереди в течение некоторого количества квантов времени. Для обеспечения такого механизма в систему необходимо включить структуру, в которой будет храниться информация о количестве попыток блокировки процесса и собственно количестве блокировок. Кроме того, определим «коэффициент адекватности», как отношение количества квантов времени ,в течение которых процесс находится в данной очереди, к количеству блокировок процесса. Коэффициент и количество квантов времени, необходимое для принятия решения о переходе являются параметрами системы.

3. Формирование объектной модели.

3.1. Идентификация объектов и классов.

Реализуем нашу модель с использованием технологий объектно-ориентированного программирования. Преимущества такого подхода очевидны: анализ предметной области показал, что каждую логическую единицу (процесс, операционная система) можно рассматривать по отдельности и во взаимосвязи с остальными понятиями; видны структурные сходства некоторых элементов системы, что позволяет нам использовать принципы наследования. Кроме того, объектно-ориентированная модель в полной мере отражает сущность исследуемой области, позволяя нам эффективно и все цело описать построенную модель. Этап построения объектной модели позволил нам получить набор данных, пригодных для окончательного определения объектов и классов, моделирующих исследуемую систему.

Итак, объектно-ориентированная модель включает следующие классы:

  • Очередь(QueueProc)

  • Процесс (Process).

  • Планировщик(Scheduler).

Его смысл будет раскрыт при дальнейшем проектировании модели.

3.2. Идентификация семантики классов.

Рассмотрим выделенные нами классы. Каждый из них наделим методами и свойствами, выделенными при анализе системы и необходимыми для организации взаимодействия с остальными элементами модели.

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

Приведем полное описание методов и полей каждого класса:

Название класса

Название поля/метода

Описание

1.QueueProc

int n;

Количество элементов

int quant;

квант

Add(Process p)

Добавляем процесс в очередь

Process Get_Process()

Достает элемент из очереди

int Get_n()

Возвращает количество элементов в очереди

int Get_Quant()

Возвращает количество времени которое дает очередь

2.Process

int identifier;

Номер процесса

string Info()

Вывод информации о процессе

String action;

Действие

String condition;

Состояние

int CPU_burst;

Сколько времени требуется процессу до блокировки

3. Scheduler

QueueProc queue0;

Очередь с нулевым приоритетом

QueueProc queue1;

Очередь с первым приоритетом

QueueProc queue2;

Очередь со вторым приоритетом

QueueProc queue3;

Очередь с третьим приоритетом

Process CreateProcess(int)

Создание процесса

Sort(Process, int)

Сортировка процессам по очередям

void Start()

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

void RunProcess(QueueProc)

Запуск процесса

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]