ОС. Lab0—10. Распределение времени в ОС

Общий отчёт для лабораторных работ 0—10 по дисциплине «Операционные системы». В конце даны ссылки на исходные коды для каждой лабораторной работы по отдельности.

РАЗВЁРНУТОЕ ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ ИНДИВИДУАЛЬНОЙ МОДЕЛИ ОС С УКАЗАНИЕМ ПАРАМЕТРОВ И ДОПУСТИМЫХ ИНТЕРВАЛОВ ИХ ИЗМЕНЕНИЯ

Написать программу «Модель ОС», моделирующую распределение времени центрального процессора и управление процессами при выполнении программ в ЭВМ с общей памятью, одним центральным процессором, произвольным количеством процессоров ввода (вывода), в режиме мультипрограммирования.

В соответствии с вариантом алгоритм работы планировщика определяется по следующей схеме: лотерейное планирование.

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

Ниже приведена таблица, отображающая параметры модели операционной системы и допустимые интервалы их изменения.

Имя параметра Интервал Примечание
PC Равен счётчику команд текущего задания
CURPROC Число процессов 0…15 Равен номеру текущего процесса PSW
COMMAND Отображает производимые системой действия
N_PROC 0…15 Отображает число загруженных заданий
D_SYS 0…100% Отображает произведённые системой затраты на обслуживание процессов
T_MULTI 0…2147483647 Отображает время работы системы с момента запуска
M_MULTI 0…65535 Число выполненных заданий с моменты начала моделирования
T_MONO 0…2147483647 время выполнения M_MULTI заданий в однопрограммной ОС
M_MONO 0…65535 число заданий, которые могли бы выполниться за время T_MULTI в однопрограммной ОС
D_MULTI вещественный тип производительность модели ОС по сравнению с однопрограммной ОС
Параметры системы
V_OZU 0…65535 Размер памяти
KVANT 0…65535 Квант времени, выделяемый процессу
T_NEXT 0…65535 Время выбора следующего задания
T_INITIO 0…65535 Время инициализации ввода (вывода)
T_INTRIO 0…65535 Время завершения ввода(вывода)
T_LOAD 0…65535 Время загрузки
SPEED 0,1…1000 Скорость работы модели

ЯЗЫК УПРАВЛЕНИЯ МОДЕЛЬЮ

«N» – загрузка нового процесса

«C» – включение, выключение автоматической загрузки заданий

Клавиша вверх — сместить курсор вверх выбора процесса для удаления

Клавиша вниз — сместить курсор вниз выбора процесса для удаления

Клавиша влево — сместить курсор влево выбора параметра следующего процесса

Клавиша вправо — сместить вправо курсор выбора параметра следующего процесса

«0», «1» , «2» , «3» , «4» , «5» , «6» , «7» , «8» , «9» ввод нового значения выбранного параметра следующего задания

Esc — выход

F1 — помощь

«+»/«-» — изменение скорости работы модели

 

СТРУКТУРА ФАЙЛА ЗАДАНИЯ ПАРАМЕТРОВ

Файл задания параметров должен находиться в той же папке, что и программа моделирования распределения времени в ОС. Его имя «INPUT.TXT». Он содержит следующие параметры:

  • Размер памяти системы
  • Квант времени (чмсло тактов моделирования, доступных процессу в состоянии «АКТИВЕН»)
  • Затраты ОС на выбор следующего процесса для выполнения на процессоре (тактов моделируемого времени)
  • Затраты ОС на изменение состояния процесса по обращению к вводу (выводу) ( в числе тактов)
  • Затраты ОС по обслуживанию сигнала окончания ввода (вывода).
  • Число тактов на загрузку нового задания.
  • Скорость работы модели.
  • Затраты ОС на общение с общими данными (для мультипроцессорной модели)
  • Размер задания
  • Количество команд
  • Процент команд ввода-вывода
  • Длительность команд ввода-вывода
  • Приоритет

Последовательность расположения параметров в файле должна быть такой же, как и в вышеприведённом списке. Причём каждый параметр должен умещаться в строку. Между параметром «затраты ОС на общение с общими данными (для мультипроцессорной модели)» и «Размер задания» должно находиться две строки с любым содержимым (комментарием). Задание параметра такое:

В приведённом выше примере файла задания параметров первая строка означает следующее:

Размер памяти модели будет определён случайным числом между 504 и 1000 с дискретностью 10.

Пример файла задания параметров:

 

Описание реализации алгоритма распределения времени процессора

В соответствии с заданием нужно реализовать лотерейное планирование.

Алгоритм лотерейного планировщика следующий:

У каждого задания есть свой приоритет. Пусть СУММА – сумма приоритетов всех процессов. Генерируется случайное число от 0 до СУММА.

Первому процессу отдаются билеты от 0 до его приоритета. Второму процессу отдаются билеты от приоритета первого процесса до приоритет первого процесса + приоритет второго процесса и т. д. Если сгенерированное случайное число лежит в области билетов первого процесса, то значит следующим на процессоре будет выполняться первый процесс. Если сгенерированное случайное число лежит в области билетов второго процесса, то значит будет выполняться второй процесс…

СТРУКТУРЫ БАЗ ДАННЫХ, ИХ ИМЕНА, НАЗНАЧЕНИЕ

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

Для описания состояние процессора:

Для описания команды:

Для описания кода операции:

типы данных, для «выполнения» операции:

Структура данных, описывающая процесс:

Для описания секций файла, из которого считываются параметры модели:

Здесь SEC_V_ozu – секция, из которой считывается переменная V_ozu.

SEC_Kvant – секция, из которой считывается переменная Kvant.

Для хранения одного граничного значения параметра или дискретности:

Структура данных, для хранения максимальных значений (Max), минимальных значений (Min) и дискретности (Discrete):

Имена переменных и из назначение:

ГРАФ СОСТОЯНИЙ ПРОЦЕССОВ С УКАЗАНИЕМ СИГНАЛОВ ПЕРЕХОДОВ И ВЫХОДОВ (ПРИЧИН ПЕРЕХОДОВ И РЕЗУЛЬТАТОВ ПЕРЕХОДОВ)

ГРАФ СОСТОЯНИЙ ПРОЦЕССОВ С  УКАЗАНИЕМ СИГНАЛОВ ПЕРЕХОДОВ И ВЫХОДОВ (ПРИЧИН ПЕРЕХОДОВ И РЕЗУЛЬТАТОВ ПЕРЕХОДОВ)

ОПИСАНИЕ СТРУКТУРЫ И АЛГОРИТМА РАБОТЫ МОДЕЛИ

Модель ОС разбита на следующие модули: OSMain, OSData, OSProc, OSCPU, OSIOCPU, OSSVTIME,OSPrint,OSKeys,OSInit

Модуль OSMain:

В этом модуле крутится основной цикл: пока переменная Quit не равна TRUE, то если нажата клавиша, то вызывается процедура ProcessKeys из модуля OsKeys, которая обрабатывает все кнопки. Если же клавиша не нажата, то вызывается процедура Processtakt из модуля OSProc, которая если нужно выполняет 1 такт моделируемого времени и не делает ничего в противном случае. Затем вызывается процедура PrintAll, которая выводит на экран все данные.

Модуль OSInit:

Здесь выполняется инициализация модели, чтение файла параметров модели, установка начальных значений и т. д.

Модуль OSData:

Здесь описаны все данные и структуры.

Модуль OSProc:

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

Модуль OSCPU:

Здесь происходит обработка центрального процессора, разбивается команда, генерируется команда, устанавливается состояние ЦП.

Модуль OSIOCPU:

Здесь происходит обработка ввода-вывода, инициализация ввода-вывода и завершение.

Модуль OSSVTIME:

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

Модуль OSPrint:

Основная процедура PrintAll, которая внутри себя вызывает остальные более мелкие процедуры, выводящие на экран все процессы (PrintProcesses), Центральный процессор (PrintCPU) и т. д.

Модуль OSKeys:

Здесь происходит обработка директив пользователя. Главная процедура ProcessKeys, которая считывает код нажатой клавиши и вызывает соответствующую процедуру её обработки.

ИНТЕРФЕЙС МОДЕЛИ С ИМЕНАМИ, ЗНАЧЕНИЕМ ВИДИМЫХ ЭЛЕМЕНТОВ

интерфейс

ФОРМУЛЫ РАСЧЁТА ВЫХОДНЫХ ПАРАМЕТРОВ В ЗАВИСИМОСТИ ОТ ВХОДНЫХ

D_sys=D_CountSys/T_multi*100%, где D_CountSys увеличивается на 1 при каждом такте простоя процессора

T_multi: увеличивается на 1 каждый такт.

M_multi: увеличивается на 1 при выполнении задания.

T_mono: при выполнении задания увеличивается на T_mono соответствующего процесса.

M_mono: T_multi/(T_mono/M_Multi) считается приближённо.

D_multi: M_multi/M_mono*100%

 

У процессов:

T_mono=T_Load+N_cmnd*(D_InOut/100)*N_InOut+N_cmnd*((100-D_InOut)/100)

T_multi : прибавляется на 1 каждый такт нахождения процесса в списке процессов.

D_exe=T_multi/T_mono*100%

D_ready=число тактов простоя процесса/T_multi*100%

ДАННЫЕ ДЛЯ МОДЕЛИРОВАНИЯ И ПРЕДПОЛАГАЕМЫЕ РЕЗУЛЬТАТЫ

Ва-

ри-

ант

Системные затраты на процесс,% Ввод (вывод) ко времени выполнения задания,% Количество процессов Время ожидания процессора, такты Увеличение времени выполнения,% Произ-води-тель-ность
1 0 0 6 357 261% 100%
2 20 0 6 636 544% 81%
3 0 50 6 275 97% 186%
4 0 50 12 653 304% 191%
5 20 50 6 514 247% 153%
6 20 50 12 903 412% 154%
7 0 90 6 576 37% 595%
8 0 90 12 583 133% 960
9 20 90 6 533 24% 575%
10 20 90 12 526 115% 760%

График производительности при 20% системных затрат и 90% ввода-вывода:

График производительности при 20% системных затрат и 90% ввода-вывода

 

ТАБЛИЦА ХРОНОЛОГИИ РАЗРАБОТКИ С ИТОГОВЫМИ РЕЗУЛЬТАТАМИ

РАСПЕЧАТКА ГЛАВНОЙ ПРОГРАММЫ

Файл «OSMAIN.PAS»

РАСПЕЧАТКА МОДУЛЯ ДАННЫХ

Файл «OSDATA.PAS»:

РАСПЕЧАТКИ ИНТЕРФЕЙСНЫХ СЕКЦИЙ ВСЕХ МОДУЛЕЙ И РАЗМЕРЫ МОДУЛЕЙ

Интерфейсная секция файла «OSINIT.PAS»:

Размер модуля: 180 строк

Интерфейсная секция файла «OSPROC.PAS»:

Размер модуля 226 строк

 

Интерфейсная секция модуля «OSCPU.PAS»:

Размер модуля 90 строк

 

Интерфейсная секция модуля «OSIOCPU.PAS»:

Размер модуля 71 строк

 

Интерфейсная секция модуля «OSPRINT.PAS»:

Размер модуля 203 строки

 

Интерфейсная секция модуля «OSSVTIME.PAS»:

Размер модуля 96 строк

 

Интерфейсная секция модуля «OSKEYS.PAS»:

Размер модуля 163 строки

 

ZIP-архивы с исходными кодами

ZIP-архив с исходными кодами для лабораторной работы № 1

ZIP-архив с исходными кодами для лабораторной работы № 2

ZIP-архив с исходными кодами для лабораторной работы № 3

ZIP-архив с исходными кодами для лабораторной работы № 4

ZIP-архив с исходными кодами для лабораторной работы № 5

ZIP-архив с исходными кодами для лабораторной работы № 6—7

ZIP-архив с исходными кодами для лабораторной работы № 8

ZIP-архив с исходными кодами для лабораторной работы № 9

ZIP-архив с исходными кодами для лабораторной работы № 10

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *