Файл: Курсовая работа по дисциплине операционнные системы Тема курсовой работы Исследование алгоритмов планирования многопоточных вычислительных процессов.doc
Добавлен: 29.11.2023
Просмотров: 385
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Обработка процессов здесь происходит не полностью, как во всех других алгоритмах, а по квантам (определенным промежуткам процессорного времени). Кроме того нужно выбирать не просто первый пришедший процесс, а также ориентироваться на приоритет процесса. Поэтому из общей очереди выбираются сначала процессы с наивысшим приоритетом, сравнивается время поступления и процессорное время, и или процесс «поступил», то к его времени обработки, а также ко времени процесс прибавляется время кванта. Как только время обработки процесса станет равным времени, требуемому на его обработку, можно считать процесс обработанным.Кроме обработки, на каждом шаге обработки формируется диаграмма обработки процессов. Таким образом, объект система должен вести обработку процессов, а также реализовывать сортировки и проверки, требуемые для определенного алгоритма.4.6. ПОСТРОЕНИЕ МОДЕЛИ4.6.1. Разработка программыПриступим к разработке программы, моделирующей работу многопроцессорной системы с выбором дисциплин обслуживания.В ходе объектно-ориентированного проектирования мы выделили следующие классы: Systema (Система), Process (Процесс), Processor (Процессор).Это и будут классы в нашей программе. Языком программирования выбран объектно-ориентированный язык третьего поколения С#. Разработка программы производилась на основе платформы Visual Studio.Net 2005. Для удобства все классы содержатся в отдельных файлах.КлассProcess. Процесс характеризуется главным образом во всех дисциплинах обслуживания временем готовности (временем поступления в систему после начала работы модели) и временем, необходимым для обработки. Для анализа эффективности работы системы необходимы данные о времени ожидания процесса и времени, которое он суммарно провел в системе. Для дисциплины обслуживания RR необходим такой атрибут процесса, как приоритет.Информация о том, как происходит обработка каждого процесса, отображаете в виде диаграммы. Также процесс может быть готов/не готов к обработке, обработан не обработан.В связи с этим введем следующие поля для класса Process:
private double timeOfEvaluation - время, необходимое для обработки процесса;private double timeOfReady - время готовности процесса;private double timeOfWaiting - время, которое процессор ожидал своей обработю находясь в очереди;private double timeOfServe - время, в течение которого процесс находился в системе:private bool isProcessed - флаг, показывающий, обработан ли процесс;private string diagram = "" - диаграмма обработки процесса;private int number = 0 - порядковый номер инициализации процесса.;private double timeOfProcessing - переменная-счетчик, показывающая текущее время нахождения процесса в системе;private double timeOfEvaluationConst - дополнительная переменная: время, необхс димое для обработки процесса;private int priority - приоритет процесса;private bool isReady false - флаг, показывающий, готов ли процесс к обработке да данного процессора (см. класс процессор).Для всех переменных закрытого типа созданы свойства. Среди методов класса только его конструктор, который служит для задания определенных характеристик пpоцессу при его создании.Класс Processor. Процессор производит обработку каждого отдельного процесс Процессор характеризуется временем смены контекста. Также для анализа работ системы нам необходимо запоминать время простоя процессора, время, которое сработал (производил обработку процессов), а также количество смен контекста.Таким образом, класс Processor имеет следующие поля:private double timeOfWork - время работы процессора;private double timeOfldle - время простоя процессора;private int numCont = 0 - количество смен контекста;private double timeCont - время, необходимое для смены контекста.Для всех закрытых переменных созданы свойства. Однако особенным являет свойство Time, которое содержит общее время, которое процесс функционирует с м мента начала работы всей модели. Среди методов этого класса только его конструкторClassSystema. Класс Systema выполняет создание очередей процессов и процесс ров. Также система может быть проинициализирована (т.е. создана), а впоследствр запущена. При создании системы также необходимо сразу обозначить следующие характеристики:-количество процессоров;-время, необходимое для смены контекста;-количество приоритетов (в дисциплинах обслуживания с приоритетами); -длительность (время) кванта.Таким образом, класс Systema должен содержать следующие поля: public ArrayList ALPr = new ArrayList(); - очередь процессоров;
public ArrayList AL = new ArrayList(); - очередь процессов; private int numProc = 0; - количество процессоров; private double timeCont; - время, необходимое для смены контекста private bool isStarted=false; - флаг, показывающий, запущена система или нет; private bool islnitialazed = false; - флаг, показывающий, проинициализирована ли система;private double timeOfQuantum; - время кванта; private int numberOfPriorities; - количество приоритетов;Для всех переменных закрытого типа созданы свойства. Система выполняет выборку свободных процессоров и необработанных процессов из соответствующих очередей. Для этого необходима сортировка каждой из очереди.Создаем для этого следующие методы:public ArrayList SortProc(ArrayList AList). Метод сортирует очередь процессоров по времени их работы в порядке возрастания;public ArrayList Sort(ArrayList AList, int parameter). Метод сортирует очередь процессов.Возможны три варианта обработки очереди процессов, в зависимости от передаваемого параметра.
Далее у пользователя есть два варианта. Во-первых, он может создать очередь процессов самостоятельно, задав для каждого из них все характеристики. Во-вторых, есть возможность создать очередь автоматически. При этом все атрибуты процессов создаются случайным образом при использовании объекта RandObj класса Random.После выполнения всех этих действий можно начать моделирование. Пользователь должен нажать для этого кнопку «Начать моделирование». После этого выдаются результаты работы модели.Результаты включают в себя:
Форма позволяет выбирать дисциплину обслуживания, для этого разработана система кнопок, объектов класса RadioButton. Форма также позволяет задавать характеристики системы и атрибуты процессов. Для этого созданы соответствующие текстовые поля ввода. Для инициализации системы, автоматического создания очереди Randomize) и начала моделирования, а также переключения между процессами и профессорами при выводе результатов, вывода диаграммы, сохранения в файл созданы снопки, объекты класса Button.
Форма 1
Для корректности работы программы в коде формы в обработчиках событий обозначены все необходимые проверки корректности ввода и последовательности действий, выполняемых пользователем.Форма 2 позволяет вывести результаты моделирования. В данной форме взаимодействия с пользователем не нужно, поэтому и не предусмотрено.
Форма 2
5. Анализ работы программы5.1. Пример 1. Рассмотрим пример работы программы. Для этого производим ее запуск. Далее выбираем дисциплину обслуживания FIFO. Как уже указывалось выше, ввести нужно все характеристики, в том числе и время кванта, и количество приоритетов. Выберем характеристики системы: 3 процессора, время смены контекста - 2 мс, время кванта 20 мс, количество приоритетов - 3.Создаем очередь процессов автоматически. Очередь состоит из 7 процессов. Их характеристики приведены в таблице результатов. Результаты работы с моделью показаны ниже.Результаты моделированияСразу очевидна разница в количестве смен контекста, т.к. в алгоритме FIFO смены контекста происходят только при полной обработке каждого из процессов. В алгоритме RR смена контекста в процессоре происходит после каждого кванта обработки процесса.
private double timeOfEvaluation - время, необходимое для обработки процесса;private double timeOfReady - время готовности процесса;private double timeOfWaiting - время, которое процессор ожидал своей обработю находясь в очереди;private double timeOfServe - время, в течение которого процесс находился в системе:private bool isProcessed - флаг, показывающий, обработан ли процесс;private string diagram = "" - диаграмма обработки процесса;private int number = 0 - порядковый номер инициализации процесса.;private double timeOfProcessing - переменная-счетчик, показывающая текущее время нахождения процесса в системе;private double timeOfEvaluationConst - дополнительная переменная: время, необхс димое для обработки процесса;private int priority - приоритет процесса;private bool isReady false - флаг, показывающий, готов ли процесс к обработке да данного процессора (см. класс процессор).Для всех переменных закрытого типа созданы свойства. Среди методов класса только его конструктор, который служит для задания определенных характеристик пpоцессу при его создании.Класс Processor. Процессор производит обработку каждого отдельного процесс Процессор характеризуется временем смены контекста. Также для анализа работ системы нам необходимо запоминать время простоя процессора, время, которое сработал (производил обработку процессов), а также количество смен контекста.Таким образом, класс Processor имеет следующие поля:private double timeOfWork - время работы процессора;private double timeOfldle - время простоя процессора;private int numCont = 0 - количество смен контекста;private double timeCont - время, необходимое для смены контекста.Для всех закрытых переменных созданы свойства. Однако особенным являет свойство Time, которое содержит общее время, которое процесс функционирует с м мента начала работы всей модели. Среди методов этого класса только его конструкторClassSystema. Класс Systema выполняет создание очередей процессов и процесс ров. Также система может быть проинициализирована (т.е. создана), а впоследствр запущена. При создании системы также необходимо сразу обозначить следующие характеристики:-количество процессоров;-время, необходимое для смены контекста;-количество приоритетов (в дисциплинах обслуживания с приоритетами); -длительность (время) кванта.Таким образом, класс Systema должен содержать следующие поля: public ArrayList ALPr = new ArrayList(); - очередь процессоров;
public ArrayList AL = new ArrayList(); - очередь процессов; private int numProc = 0; - количество процессоров; private double timeCont; - время, необходимое для смены контекста private bool isStarted=false; - флаг, показывающий, запущена система или нет; private bool islnitialazed = false; - флаг, показывающий, проинициализирована ли система;private double timeOfQuantum; - время кванта; private int numberOfPriorities; - количество приоритетов;Для всех переменных закрытого типа созданы свойства. Система выполняет выборку свободных процессоров и необработанных процессов из соответствующих очередей. Для этого необходима сортировка каждой из очереди.Создаем для этого следующие методы:public ArrayList SortProc(ArrayList AList). Метод сортирует очередь процессоров по времени их работы в порядке возрастания;public ArrayList Sort(ArrayList AList, int parameter). Метод сортирует очередь процессов.Возможны три варианта обработки очереди процессов, в зависимости от передаваемого параметра.
-
Сортировка очереди по времени готовности. -
Сортировка очереди процессов по времени их обработки. -
Сортировка очереди процессов по порядку, в котором они были созданы.
Далее у пользователя есть два варианта. Во-первых, он может создать очередь процессов самостоятельно, задав для каждого из них все характеристики. Во-вторых, есть возможность создать очередь автоматически. При этом все атрибуты процессов создаются случайным образом при использовании объекта RandObj класса Random.После выполнения всех этих действий можно начать моделирование. Пользователь должен нажать для этого кнопку «Начать моделирование». После этого выдаются результаты работы модели.Результаты включают в себя:
-
время ожидания каждого процесса; -
время обработки процесса (время, которое процесс провел в системе); -
время работы процессора; -
время его простоя; -
среднее время ожидания процессов; -
среднее время обработки процессов; -
среднее время работы процессоров; -
среднее время простоя процессоров.
-
Диаграмму обработки каждого из процессов. Диаграмма состоит из символов «О» «И» и «Г». Символ «О» соответствует поступлению процесса в очередь. Символ «И соответствует обработке процесса. Символ «Г» соответствует состояние процесс «Готов», когда процесс находится в очереди, но не обрабатывается в процессором. Во всех дисциплинах, кроме RR, один символ соответствует одной секунде. В R1 каждый символ соответствует кванту процессора. -
Время готовности, время ожидания, время обработки и длительность непосредственной обработки каждого из процессов. -
Время простоя, время работы, количество смен контекста и время, потраченное на смены контекста каждого из процессоров.
Форма позволяет выбирать дисциплину обслуживания, для этого разработана система кнопок, объектов класса RadioButton. Форма также позволяет задавать характеристики системы и атрибуты процессов. Для этого созданы соответствующие текстовые поля ввода. Для инициализации системы, автоматического создания очереди Randomize) и начала моделирования, а также переключения между процессами и профессорами при выводе результатов, вывода диаграммы, сохранения в файл созданы снопки, объекты класса Button.
Форма 1
Для корректности работы программы в коде формы в обработчиках событий обозначены все необходимые проверки корректности ввода и последовательности действий, выполняемых пользователем.Форма 2 позволяет вывести результаты моделирования. В данной форме взаимодействия с пользователем не нужно, поэтому и не предусмотрено.
Форма 2
5. Анализ работы программы5.1. Пример 1. Рассмотрим пример работы программы. Для этого производим ее запуск. Далее выбираем дисциплину обслуживания FIFO. Как уже указывалось выше, ввести нужно все характеристики, в том числе и время кванта, и количество приоритетов. Выберем характеристики системы: 3 процессора, время смены контекста - 2 мс, время кванта 20 мс, количество приоритетов - 3.Создаем очередь процессов автоматически. Очередь состоит из 7 процессов. Их характеристики приведены в таблице результатов. Результаты работы с моделью показаны ниже.Результаты моделированияСразу очевидна разница в количестве смен контекста, т.к. в алгоритме FIFO смены контекста происходят только при полной обработке каждого из процессов. В алгоритме RR смена контекста в процессоре происходит после каждого кванта обработки процесса.