КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Курсовая работа по дисциплине
«ОПЕРАЦИОНННЫЕ СИСТЕМЫ»
Тема курсовой работы: Исследование алгоритмов планирования многопоточных вычислительных процессов
Выполнила: студентка 273 (1) групы ___________________ Иванова А.А. e-mail адрес: aaaaaa@mail.ru
Руководитель: доцент кафедры Математики и информатики ________________ Горелов С.В.
Москва 2011 Образец задания
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ СОЦИАЛЬНЫЙ УНИВЕРСИТЕТ
Факультет Информационных технологий Кафедра Математики и информатики
ЗАДАНИЕ на курсовую работу студенту(ке) 173 группы Ивановой Лидии Александровне
Тема курсовой работы: "Исследование алгоритмов планирования многопоточных вычислительных процессов"
Целевая установка и исходные данные: На основе анализа предметной области разработать программу, моделирующую многопоточные вычислительные процессы с различными алгоритмами планирования. Входящий поток - простейший, интенсивность потока - 100-1000 1/с. среднее время обслуживания потока - 10 мс (усеченное нормальное распределение), микропроцессор – двухядерный, алгоритмы планирования - FIFO, кратчайший - первым.
Основные вопросы, подлежащие разработке (исследованию): 1. Аначиз предметной области. 2. Постановка задачи моделирования. 3. Определение (уточнение) требований к исходной информации. 4. Определение параметров и переменных модели. 5. Выбор и обоснование показателей и критериев эффективности системы. 7. Разработка содержательного описания модели. 8. Разработка алгоритма модели системы. 9. Разработка программы модели системы. 10. Тестирование программы. 11. Проведение экспериментов с моделью и анапиз полученных результатов 12. Разработка пояснительной записки и презентации для представления результатов работы и их зашиты
Ожидаемые результаты и предполагаемая практическая реализация 1. Рекомендации по организации многопоточных вычислительных процессов 2. Предполагается реализовать в учебном процессе кафедры при изучении дисциплины «Операционные системы» К защите представить (указать объем пояснительной записки, перечень чертежей, схем и т.д.) 1. Пояснительную записку. 15-25 с. 2. Распечатку исходных текстов программ с комментариями (в приложении к Пояснительной записке). 3. Иллюстративный материал. 10-15 (слайдов) 4. Программу модели и презентацию на носителе информации 5. Другие материалы (по необходимости), например, об использовании выполненной работы на других кафедрах или в других вузах
Консультанты профессор Сидоров В. А.__________
Место выполнения курсовой работы РГСУ, факультет Информационных технологий
Руководитель доцент кафедры математики и информатики, кандидат технических наук, доцент_______________________ А. В. Сергеев
Задание получил(а) студент(ка) 273 (1) группы Иванова JI.A.
Пример курсовой работы по дисциплине «Операционные системы»
СОДЕРЖАНИЕ Введение 1. Объектно-ориентированный анализ предметной области 1.1. Описание системы в терминах теории массового обслуживания 1.2. Дисциплины обслуживания 2. Технические требования к системе в терминах классов и взаимодействия 2.1. Отождествление действующих субъектов 2.2. Создание предварительного списка прецедентов 2.2. Создание предварительного списка прецедентов 2.3. Уточнение и присвоение имен прецедентам 2.4. Разделение прецедентов 2.5. Объединение прецедентов 2.6. Конечный список прецедентов 2.7. Определение последовательности событий для каждого прецедента 2.8. Диаграмма прецедентов 2.9. Диаграмма последовательности событий 2.10. Диаграмма сотрудничества 2.11. Концептуальная модель 2.12. Общие технические характеристики 4. Объектно-ориентированное проектирование и программирование 4.1. Проектирование вывода 4.2. Проектирование ввода 4.3. Проектирования графического интерфейса 4.4. Определение функциональных составляющих модели 4.5. Проектирование обработки данных 4.6. Построение модели Разработка программы Разработка пользовательского интерфейса 5. Анализ работы программы Заключение
Введение
Операционная система не только предоставляет пользователям и программистам удобный интерфейс к аппаратным средствам компьютера, но и является механизмом, распределяющим ресурсы компьютера. Это и является ее важнейшей функцией. В частности, в операционных системах должно выполняться планирование процессов и потоков. Планирование - это работа ОС по определению того, в какой момент необходимо прервать выполнение текущего активного потока и какому потоку предоставить возможность выполняться. При планировании могут приниматься во внимание приоритет потоков, время их ожидания в очереди, накопленное время выполнения, интенсивность обращений к вводу-выводу и другие факторы. Существует множество различных алгоритмов планирования процессов. Все они преследуют различные цели в зависимости от поставленной задачи. Зачастую особенности реализации планирования потоков определяют специфику операционной системы. Планирование в системе может осуществляться статически или динамически. Динамическое планирование заключается в том, что решения о типе планирования принимаются во время работы системы на основе анализа текущей ситуации. Статический тип планирования может быть использован в особых системах, в которых весь набор одновременно выполняемых задач определен заранее. Такой планировщик принимает решения о планировании до начала работы системы. Существующие алгоритмы планирования можно разделить на вытесняющие и невытесняющие; алгоритмы, основанные на квантовании; алгоритмы, основанные на приоритетах; смешанные. Тема данной работы актуальна в связи с проектированием и разработкой физических и логических компонент компьютерной системы. Как выбрать оптимальное количество процессоров? Как распределить приоритеты между различными задачами? Как зависит время фактического решения задачи от ее теоретически предполагаемого времени решения? Какой алгоритм планирования лучше в определенной данной ситуации? Для анализа и решения данных задач применяются модели, которые представляют собой программы, имитирующие работу компьютерной системы. Полученные результаты также можно использовать для изучения (анализа) различных дисциплин обслуживания процессов в учебном процессе. Эту цель мы и преследовали в своей работе.
1. Объектно-ориентированный анализ предметной области
Предметной областью рассматриваемой задачи является компьютерная система. Ее особенность состоит в том, что она состоит из нескольких процессоров. Все процессы поступают в очередь с разной задержкой. Для каждого из них определено время, необходимое для полной обработки. Процессы формируют очередь задач. Выборка задач из очереди и их обработка определяется в системе в соответствии с дисциплиной обслуживания.
1.1 ОПИСАНИЕ СИСТЕМЫ В ТЕРМИНАХ ТЕОРИИ МАССОВОГО ОБСЛУЖИВАНИЯ
Алгоритм планирования процессов и потоков может быть описан в терминах теории массового обслуживания. Теория массового обслуживания - это математическая дисциплина, изучающая системы, предназначенные для обслуживания массового потока требований случайного характера (случайными могут быть как моменты появления требований, так и затраты времени на их обслуживание). В рассматриваемой системе роль обслуживающего прибора играет центральный процессор, роль заявок - решаемые задачи. Источником заявок служит их очередь. Операционная система исполняет роль диспетчера: определяет очередность решения задач. Моделью очереди заявок может служить система массового обслуживания. Здесь ключевыми являются характеристики заявок. Часто различают заявки по их приоритету, т.е. по важности. Заявки высокого приоритета обслуживаются в первую очередь. Абсолютный приоритет дает право прервать обслуживание менее важной заявки и занять ее место в обслуживающем приборе. Вытесненная заявка либо теряется, либо поступает в очередь, где ждет дообслуживания. Иногда приходится возобновлять обслуживание вытесненной заявки с начала, а не продолжать с точки прерывания. Если заявка вытеснена на из буфера, она, естественно, теряется. Примером заявки с абсолютным приоритетом является судно, получившее пробоину и нуждающееся в срочной разгрузке. В вычислительных системах абсолютным приоритетом обладают команды оператора. Относительный приоритет дает право первоочередного занятия освободившегося прибора. Он дает право на вытеснение заявки из прибора или буфера. Абсолютный и относительные приоритеты различаются и моментом действия: абсолютный реализуется в момент поступления, а относительный - в момент освобождения прибора. Различают фиксированные и динамические приоритеты. Фиксированные приоритеты чаще называют дисциплиной обслуживания. Дисциплина обслуживания задает порядок выбора из очереди в освободившийся прибор заявок одинакового приоритета. Нашей задачей является разработка программы, моделирующей работу многопроцессорной системы для четырех дисциплин обслуживания FIFO, LIFO, SJF, RR. Первые три алгоритма являются невытесняющими. RR является в данной системе вытесняющим алгоритмом, основанным на квантовании и приоритетах.
2.3. ДИСЦИПЛИНЫ ОБСЛУЖИВАНИЯ
Рассмотрим каждую из дисциплин в отдельности. FIFO (First- in-First-Out) При данной дисциплине обслуживания процессы выбираются из очереди в порядке их поступления. Каждый вновь пришедший процесс занимает свободный процесс если такой имеется в системе, либо остается в очереди до тех пор, пока не освободится какой-либо из процессоров. Задача покидает систему после полно окончания е обработки, т.е. по истечении времени, необходимого для ее обслуживания. LIFO (Last-In-Fist-Out) Данная дисциплина обслуживания заключается в том, что процессоры выбираю из очереди в порядке, обратном их поступлению. Процессы также занимают свободные процессоры либо ожидают момента, когда они освободятся. Задача покидает систему по окончании обработки. SJF (Shortest Job First) При дисциплине обслуживания SJF выборка процессов из очереди осуществляется на основании времени, необходимого для выполнения задачи. Приоритет отдается наиболее коротким. Задача покидает систему после полно окончания е обработки, т.е. по истечении времени, необходимого для ее обслуживания. RR (Round Robin) Данный алгоритм представляет собой наиболее сложную дисциплину обслуживания процессов. Задачи поступают в очередь. В порядке их поступления они занимают свободные процессоры, которые в свою очередь выделяют каждому из них квант времени для обработки. По окончании кванта времени процесс покидает процессор и отправляется в конец очереди.
2. Технические требования к системе в терминах классов и взаимодействия
Данную систему предполагается использовать в учебном процессе для наглядности при рассмотрении различных алгоритмов обработки процессов. Она позволяется создать необходимую систему для моделирования (многопроцессорная система, без учета ввода-вывода), ввести необходимые параметры процессов и получить результаты для анализа и сравнения. Используем технологию прецедентов для определения возможного применения системы.
2.1ОТОЖДЕСТВЛЕНИЕ ДЕЙСТВУЮЩИХ СУБЪЕКТОВ
1. Основные пользователи данной системы - учащиеся и преподаватели. 2. Не предусматривается использование данной системы какой-нибудь другой системой. 3. Проектируемая система не будет связана с другими системами. Она представляет собой самостоятельный программный продукт. Также в системе не предусматривает использование баз данных. 4. Система не должна реагировать на события, не связанные с пользователем. Проектируемая система будет использоваться как учащимися, так и преподавателями, но различий в полномочиях этих групп пользователей нет, поэтому их можно объединить в один субъект «Пользователь».
2.2. СОЗДАНИЕ ПРЕДВАРИТЕЛЬНОГО СПИСКА ПРЕЦЕДЕНТОВ
Пользователь может следующее: 1. Вводить данные о системе, проектировать систему. 5. Выбирать алгоритм обслуживания процессов. 6. Определять характеристики обслуживаемых процессов. 7. Просматривать результаты обработки процессов. 8. Просматривать диаграмму обслуживания процессов. 9. Сохранять полученные результаты и диаграмму. Теперь рассмотрим объекты, с которыми имеет дело пользователь. В данной системе это информация о процессах, данные о процессорах, результаты работы системы. Обработка полученных данных и получение конечных результатов производится самой системой. Таким образом, система делает следующее: 1. Создает очередь процессоров (если их несколько). 2. Передает процессорам данные о времени кванта, времени, затрачиваемом на смену контекста. 3. Создает очередь процессов и передает каждому данные о времени прихода в систему, о времени обработки, приоритет. 4. Запускает обработку по выбранному алгоритму. Получает результаты обработки.
2.3. УТОЧНЕНИЕ И ПРИСВОЕНИЕ ИМЕН ПРЕЦЕДЕНТА
1. Пользователь может осуществить ввод данных о системе (процессорах). 2. Пользователь может осуществить выбор требуемого алгоритма. 3. Пользователь может осуществить ввод данных о процессах. 4. Пользователь может получить результаты обработки.
3.4. РАЗДЕЛЕНИЕ ПРЕЦЕДЕНТОВ
1. Пользователь может определить количество процессоров в системе. 2. Пользователь может определить время смены контекста. 3. Пользователь может определить время кванта. 4. Пользователь может определить количество приоритетов. 5. Пользователь может определить количество процессов в системе. 6. Пользователь может определить время прихода каждого процесса. 7. Пользователь может определить время обслуживания каждого процесса. 8. Пользователь может определить приоритет каждого процесса. 9. Пользователь может осуществить выбор требуемого алгоритма. 10. Система может создать очередь процессоров. 11. Система может передать сведения о времени кванта, времени, затрачиваемом на смену контекста процессорам. 12. Система может создать очередь процессов. 13. Система может передать сведения о времени прихода в систему, о времени обработки, приоритете процессам. 14. Пользователь может получить результаты обработки.
3.5. ОБЪЕДИНЕНИЕ ПРЕЦЕДЕНТОВ
1. Пользователь может определить количество процессоров в системе. 2. Пользователь может определить параметры системы (время смены контекста, время кванта, количество приоритетов). 3. Пользователь может определить количество процессов в системе. 4. Пользователь может определить параметры процессов (время прихода, время обслуживания, приоритет). 5. Пользователь может осуществить выбор требуемого алгоритма. 6. Система может инициализировать очередь процессоров. 7. Система может инициализировать очередь процессов. 8. Пользователь может получить результаты обработки.
3.6. КОНЕЧНЫЙ СПИСОК ПРЕЦЕДЕНТОВ
Пользователь 1. Определение количества процессоров в системе. 2. Определение параметров системы. 3. Определение количества процессов в системе. 4. Определение параметров процессов. 5. Определение алгоритма. 6. Получение результатов работы системы. Система 1. Инициализация очереди процессоров. 2. Инициализация очереди процессов.
3.7. ОПРЕДЕЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СОБЫТИЙ ДЛЯ КАЖДОГО ПРЕЦЕДЕНТА
1. Определение количества процессоров в системе. Ввод необходимого количества процессоров в систему (числом). Предпосылки - не требуются. Последствия - создание очереди процессоров. Альтернатива: окончание работы с системой. 2. Определение параметров системы. Ввод необходимых параметров системы, Предпосылки - не требуются. Последствия - инициализация процессоров. Альтернатива: окончание работы с системой. 3. Определение количества процессов в системе. Ввод необходимого количества процессов в систему (числом). Предпосылки: инициализация системы, Последствия: создание очереди процессов. Альтернатива: окончание работы с системой. 4. Определение параметров процессов. Ввод необходимых параметров процессов. Предпосылки: инициализация системы, создание очереди процессов. Последствия: инициализация процессов. Альтернатива: окончание работы с системой. 5. Определение алгоритма. Выбор алгоритма обслуживания. Предпосылки: инициализация системы, инициализация процессов. Последствия: обработка данных. Альтернатива: обработка по алгоритму FIFO (по умолчанию). 6. Получение результатов работы системы. Просмотр результатов работы системы. Предпосылки: определение алгоритма, обработка данных. Последствия: получение результатов. Альтернатива: инициализация системы с другими параметрами. 7. Инициализация очереди процессоров, Получение данных о процессорах, Создание очереди процессоров, Передача процессорам данных. Предпосылки - ввод данных о процессорах. Последствия - инициализация системы. Альтернатива - нет. 8. Инициализация очереди процессов. Получение данных о процессах, Создание очереди процессов, Передача процессам данных. Предпосылки - ввод данных о процессах. Последствия - инициализация процессов. Альтернатива - нет.
3.8. ДИАГРАММА ПРЕЦЕДЕНТОВ
3.12. ОБЩИЕ ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ
1. Поскольку система создается в учебных целях, то необходимо, чтобы она представляла простой и удобный графический интерфейс (GUI - Graphical User Interface). 2. Пользователю будет предложено ввести параметры системы, в которой он хочет работать: количество процессоров в системе, время, затрачиваемое на переключения контекста, количество приоритетов и время кванта (для алгоритма RoundRobin). После чего происходит инициализация данной системы. 3. Далее ему будет необходимо определить алгоритм, по которому будут обрабатываться процессы. В системе будет реализовано четыре основных алгоритма: FIFO, LIFO, SJF и RoundRobin, особенности которых уже были описаны выше. Для удобства работы с системой предполагается, что у пользователя будет возможность изменить алгоритм обработки вплоть для начала работы системы (нажатия специальной клавиши), т.е. даже введя данные о системе и процессах, пользователь может изменить алгоритм. Он также может изменить алгоритм обработки и после начала обработки, но в этом случае данные о предыдущей обработке будут утеряны. 4. Затем пользователь должен будет ввести параметры процессов для обработки. В системе предполагается использовать следующие параметры: время до начала процесса (или время прихода процесса в систему, в секундах, отсчет времени ведется от начала инициализации), время, необходимое для обработки процесса, приоритет процесса. Следует заметить, что приоритет используется лишь в алгоритме RoundRobin, но вводить его необходимо даже при работе с другими алгоритмами. Это связано с тем, что программа предполагает работу с различными алгоритмами без потери данных о системе и введенных процессах. Поэтому если пользователь после обработки алгоритмом FIFO, LIFO или SJF захочет посмотреть на результат работы алгоритма RR, а приоритет не будет введен, данная обработка не будет иметь смысла. 5. После ввода всех необходимых сведений о системе пользователь может начать обработку процессов по выбранному алгоритму. 6. После обработки на экран будут выведены сведения о результатах. Также предполагается вывод диаграммы обслуживания процессов. 7. Для удобства анализа и сравнения должна быть возможность сохранения полученных данных в файл. 8. После завершения обработки пользователь может изменить алгоритм обработки (для сравнения полученных данных). При изменении алгоритма обработки результаты прошлой обработки теряются. Для того чтобы пользователь мог сравнить полученные результаты, предусматривается запись в файл (см. предыдущий пункт). Пользователь также может изменить параметры системы, при этом данные о процессах не теряются и пользователь может по полученным результатам определить оптимальные параметры системы. При изменении данных о процессах не меняются все остальные данные, т.е. подобрав необходимую систему, есть возможность проверить ее на различных очередях.
4. Объектно-ориентированное проектирование и программирование 4.1. ПРОЕКТИРОВАНИЕ ВЫВОДА В качестве результатов моделирования (выводимых данных) рассматриваются; 1) время ожидания каждого из процессов; 2) время нахождения в системе каждого из процессов; 3) среднее время ожидание процессов в системе; 4) среднее время нахождения процессов в системе; 5) время простоя каждого процессора; 6) время работы каждого процессора; 7) время, затраченное на смену контекста каждого процессора; 8) среднее время простоя процессоров в системе; 9) среднее время работы процессоров в системе; 10) среднее время, затраченное на смену контекста в системе; 11) диаграмма обслуживания процессов.
4.2. ПРОЕКТИРОВАНИЕ ВВОДА
Для правильного функционирования системы необходим ввод следующих данны: 1. количество процессоров 2. время на смену контекста 3. количество приоритетов 4. время кванта 5. количество процессов 6. время прихода процесса в систему 7. время обслуживания процесса 8. приоритет процесса
ОПРЕДЕЛЕНИЕ ФУНКЦИОНАЛЬНЫХ СОСТАВЛЯЮЩИХ МОДЕЛИ
Систему составляют три основные сущности: Система, Процессор, Процесс. Основная обработка данных производится объектом Система. Система принимает данные о процессорах и процессах от пользователя, создает очереди процессоров и процессов, передает процессорам и процессам необходимые данные, осуществляет необходимую обработку данных. Объект Процессор содержит всю необходимую информацию (как исходную, так и вычисляемую) о процессорах. Объект Процесс содержит всю необходимую информацию (как исходную, так и вычисляемую) о процессах.
9. ПРОЕКТИРОВАНИЕ ОБРАБОТКИ ДАННЫХ
При инициализации системы процессы и процессоры формируются в очереди. Объект система начинает обработку этих очередей. В ходе обработки основной задачей является решить, какой процесс должен получить процессорное время, а также какой из процессоров должен это время выделить. Этот выбор зависит от алгоритма обслуживания. Так, при алгоритме FIFO достаточно перегруппировать процесс в очереди по времени прихода и обслуживать поочередно. Для других алгоритмов задача существенно усложняется, так как в алгоритме LI] система должна брать процесс, пришедший последним. Но также нельзя брать процесс, который еще «не пришел», т.е. необходимо ввести некоторое процессорное Bf мя, с которым будут сравниваться времена прихода процессов в систему. Для удобства обработка будет вестись до тех пор, пока в очереди будут «не обслуженные» процесс. Для простоты в определение процесса необходимо будет ввести индикатор, который и будет говорить системе, обслуживался ли уже этот процесс, или еще нет. Кроме того, предполагается, что система будет многопроцессорной. Поэтому на каждом шаге необходимо будет определить, какой из процессоров должен обслужить следующий процесс. Для этого в начале каждого шага очередь процессоров будет сортироваться процессорному времени, процессор с наименьшим процессорным временем и будет бр; следующий процесс. После того как определен процессор обслуживания, необходимо определить процесс для обслуживания. По-видимому, должна будет формироваться резервная очередь «пришедших» процессов, которая будет отсортирована по времени прихода процессора в систему. Из нее должен будет последний пришедший процесс. Данная очередь формируется на основе сравнения времени прихода процесса в систему и процессорного времени отобранного процессора. Возможен случай, когда в очереди не идет не одного процесса, т.е. существует разрыв между временем прихода процесса и процессорным временем (процессор простаивал). В этом случае из общей очереди берется первый пришедший процесс, а время простоя процессора продвигается на величину разрыва, вместе со временем простоя продвигается и процессорное время. Поскольку в системе участвует несколько процессоров, и их процессорное время движется не синхронно, то возможно шествование процессов, которые уже «поступили» в один процессор, но еще не «поступи, в другой, во избежание возможных ошибок, на каждом шаге, для каждого процессора фомируется новая очередь «поступивших» процессов. В конце шага эта очередь очищается. Отличие алгоритма SJF от описанного выше LIFO заключается в том, что обслуживаться должен не последний поступивший процесс, а процесс с наименьшей длинной. Таким образом обслуживание при алгоритме обслуживания SJF отличается ли в способе сортировке очереди «поступивших» процессов. Алгоритм RR имеет наибольшие отличия от всех остальных алгоритмов. Обработка процессов здесь происходит не полностью, как во всех других алгоритмах, а по квантам (определенным промежуткам процессорного времени). Кроме того нужно выбирать не просто первый пришедший процесс, а также ориентироваться на приоритет процесса. Поэтому из общей очереди выбираются сначала процессы с наивысшим приоритетом, сравнивается время поступления и процессорное время, и или процесс «поступил», то к его времени обработки, а также ко времени процесс прибавляется время кванта. Как только время обработки процесса станет равным времени, требуемому на его обработку, можно считать процесс обработанным. Кроме обработки, на каждом шаге обработки формируется диаграмма обработки процессов. Таким образом, объект система должен вести обработку процессов, а также реализовывать сортировки и проверки, требуемые для определенного алгоритма.
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, которое содержит общее время, которое процесс функционирует с м мента начала работы всей модели. Среди методов этого класса только его конструктор Class Systema. Класс 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). Метод сортирует очередь процессов. Возможны три варианта обработки очереди процессов, в зависимости от передаваемого параметра. 1. Сортировка очереди по времени готовности. 2. Сортировка очереди процессов по времени их обработки. 3. Сортировка очереди процессов по порядку, в котором они были созданы. Система также проводит обработку процессов. Это выполняется методом public void Handle(string Discipline). Метод принимает параметр Discipline, который обозначает дисциплину обслуживания. В зависимости от принятого параметра система проводит выборку процессов из очереди и их обработку. Система проводит также проверку очереди процессов на наличие необработанных процессов. Данная функция осуществляется методом public bool IsAny(), который возвращает значение «Истина» в случае, если необработанные процессы еще существуют, и значение «Ложь», если такие процессы отсутствуют. Методы WriteToFile(), InformationOfProcesses(), InformationOfProcessors() формируют строку, содержащую соответственно информацию по диаграмме обработки каждого процесса, общую информацию о каждом процессе из очереди и каждом процессоре из очереди.
4.6.2. Разработка пользовательского интерфейса
Для того чтобы проводить анализ работы системы, максимально удобно создан графический интерфейс программы. При запуске программы пользователю открывается окно, где ему предлагается сначала выбрать дисциплину обслуживания. Далее он должен задать характеристики системы. Пользователь определяет количество процессоров в системе, время смены контекста, количество приоритетов, время кванта. Причем даже в дисциплинах обслуживания, в которых не требуется задание количества приоритетов и времени кванта, необходимо ввести эти характеристики для сравнения дисциплин обслуживания в будущем. Для дальнейшей работы необходимо проиници- ализировать систему нажатием клавиши с одноименной надписью. Далее у пользователя есть два варианта. Во-первых, он может создать очередь процессов самостоятельно, задав для каждого из них все характеристики. Во-вторых, есть возможность создать очередь автоматически. При этом все атрибуты процессов создаются случайным образом при использовании объекта RandObj класса Random. После выполнения всех этих действий можно начать моделирование. Пользователь должен нажать для этого кнопку «Начать моделирование». После этого выдаются результаты работы модели. Результаты включают в себя: • время ожидания каждого процесса; • время обработки процесса (время, которое процесс провел в системе); • время работы процессора; • время его простоя; • среднее время ожидания процессов; • среднее время обработки процессов; • среднее время работы процессоров; • среднее время простоя процессоров. Все эти показатели выводятся в форме сразу после окончания моделирования. Ест: возможность просмотреть диаграммы обработки процессов. Для этого необходимо нажать на кнопку «Вывести диаграмму». В этом случае открывается вторая форма. Она содержит следующее. 1. Диаграмму обработки каждого из процессов. Диаграмма состоит из символов «О» «И» и «Г». Символ «О» соответствует поступлению процесса в очередь. Символ «И соответствует обработке процесса. Символ «Г» соответствует состояние процесс «Готов», когда процесс находится в очереди, но не обрабатывается в процессором. Во всех дисциплинах, кроме RR, один символ соответствует одной секунде. В R1 каждый символ соответствует кванту процессора. 2. Время готовности, время ожидания, время обработки и длительность непосредственной обработки каждого из процессов. 3. Время простоя, время работы, количество смен контекста и время, потраченное на смены контекста каждого из процессоров. Все эти данные можно записать в файл. Для этого пользователю необходимо нажать на кнопку «Сохранить в файл», после чего выведется диалоговое окно с возможностью ввода имени файла или выбора существующего файла для сохранения. По окончании работы модели можно завершить работу с моделью и закрыть форму. Имеется возможность продолжить работу с моделью. Следует заметить, что продолжить работу можно и с исходными данными, заданными в предыдущем моделировании. Это очень важно при сравнении и анализе работы разных дисциплин обслуживания. Для этого создается глобальный экземпляр Sys класса Systema, который содержит в себе всю информацию и производит обработку в соответствии с выбранной дисциплиной обслуживания. Форма позволяет выбирать дисциплину обслуживания, для этого разработана система кнопок, объектов класса RadioButton. Форма также позволяет задавать характеристики системы и атрибуты процессов. Для этого созданы соответствующие текстовые поля ввода. Для инициализации системы, автоматического создания очереди Randomize) и начала моделирования, а также переключения между процессами и профессорами при выводе результатов, вывода диаграммы, сохранения в файл созданы снопки, объекты класса Button.
Для корректности работы программы в коде формы в обработчиках событий обозначены все необходимые проверки корректности ввода и последовательности действий, выполняемых пользователем. Форма 2 позволяет вывести результаты моделирования. В данной форме взаимодействия с пользователем не нужно, поэтому и не предусмотрено.
5. Анализ работы программы
5.1. Пример 1. Рассмотрим пример работы программы. Для этого производим ее запуск. Далее выбираем дисциплину обслуживания FIFO. Как уже указывалось выше, ввести нужно все характеристики, в том числе и время кванта, и количество приоритетов. Выберем характеристики системы: 3 процессора, время смены контекста - 2 мс, время кванта 20 мс, количество приоритетов - 3. Создаем очередь процессов автоматически. Очередь состоит из 7 процессов. Их характеристики приведены в таблице результатов. Результаты работы с моделью показаны ниже.
Результаты моделирования Сразу очевидна разница в количестве смен контекста, т.к. в алгоритме FIFO смены контекста происходят только при полной обработке каждого из процессов. В алгоритме RR смена контекста в процессоре происходит после каждого кванта обработки процесса. Ни в одной дисциплине процессы не сформировались так, что ни один из них не ожидал поступления в процессор, находясь в очереди. Среднее время работы процессоров оказалось одинаковым, однако для некоторых процессоров в дисциплине FIFO время работы сильно превышает среднее значение. Этого не наблюдается в дисциплине RR. Время простоя в RR также меньше. 5.2. Пример 2. Рассмотрим работу алгоритма RR, который сильно отличается от всех остальных. Выберем характеристики системы: 1 процессор, время смены контекста - 2 мс, время кванта 20 мс, количество приоритетов - 3. Очередь формируем автоматически, она состоит из 6 процессов.
Заключение Разработанная модель предоставляет средства для моделирования и сравнения различных дисциплин обслуживания. Получив входные данные, она моделирует работу многопроцессорной системы, выдает результаты в удобной для последующего анализа форме в виде диаграмм и числовых характеристик, а также позволяет сохранять полученные результаты в файле. Модель можно использовать в целях оптимизации планирования процессов, а также в учебном процессе, например при решении задач по теме «Мультипрограммные вычислительные процессы».
Литература:
1. Армстронг (мл.), Джеймс. Секреты Unix: 2-е изд.: Пер. с англ. - М.: Издательский дом «Вильяме», 2001 -1072 е.: ил. - Парал. тит. англ. 2. Брюс У, Туррот П., Черникофф Д. Microsoft Windows ХР. Средства повышения производительности. /Пер. с англ., - М.: Издательство «СП ЭКОМ», 2003. - 672с.: ил. 3. Гультяев А.К. Виртуальные машины: несколько компьютеров - в одном (+ CD). - СПб.: Питер, 2006. - 224 с. 4. Кэррие Б. Криминалистический анализ файловых систем. - СПб.: Питер, 2007. - 480с.: ил. 5. Мюллер Дж. Оптимизация Windows ХР. - СПб.: Питер, 2006. - 480 с. 6. Мюллер Дж., Чоудри И. Microsoft Windows 2000. Настройка и оптимизация произво- дительностию./ Пер. с англ.. - М.: Издательство ЭКОМ, 2001. - 512 с. 7. Назаров С.В. Администрирование локальных сетей Windows NT/2000/.NET. - М.: Финансы и статистика, 2003. - 480 с. 8. Назаров С.В. Операционные среды, системы и оболочки. Основы структурной и функциональной организации: Учеб. Пособие. - М.: КУДИЦ-ПРЕСС, 2007. - 504 с. 9. Негус Кристофер. Linux. Библия пользователя, 5-е издание.: Пер. с англ. - М.: ООО «И.Д. Вильяме», 2007. -704с.: ил. - Парал. тит. англ. 10. Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство.: Пер. с англ. - К.: ВЕК+, СПб.: КОРОНА принт, К.: НТИ, М.: Энтроп, 2004. - 960 с. 11. Рихтер Дж. Windows для профессионалов / Пер. с англ. - 4-е изд. - СПб: Питер; М.: Издательско-торговый дом «Русская редакция», 2003. - 752 с. 12. Русинович М„ Соломон Д. «Внутреннее устройство Mikrisoft Windows: Windows Server 2003, Windows ХР и Windows 2000. Мастер-класс. / Пер с англ. - 4-е изд. - М.: Издательство «Русская редакция»; СПб.: Питер, 2006. - 992 стр.: ил. 13. Синчак С. Windows ХР. Настройка и разгон (+ CD). - СПб.: Питер, 2006. - 352 с. 14. Смит Д., Наир Р. Архитектура виртуальных машин. - «Открытые системы», № 05- 06, 2005 15. Стахнов А.А. Сетевое администрирование Linux, — СПб.: БХВ-Петербург, 2004. - 480с.: ил. 16. Таненбаум Э. Современные операционные системы.: Пер. с англ. 2-е изд. - СПб.: Питер, 2002. - 1040 с. 17. Чекмарев А.Н., Вишневский А.В., Кокорева О.И. Microsoft Windows Server 2003. Русская версия / Под общ. Ред. А.Н. Чекмарева. - СПб.: БХВ-Петербург, 2005. - 1120 с. 18. Шалин П.А. Реестр Windows ХР. Специальный справочник. - СПб.: Питер, 2006. - 175 с. 19. Шрайбер С. Недокументированные возможности Windows 2000. Библиотека программиста / Пер. с англ. - СПб: Питер, 2002. - 544 с.
Дата добавления: 2015-05-07; Просмотров: 1821; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |