Лабораторная работа – Параллельное программирование

ОГЛАВЛЕНИЕ
Может быть интересно
ВВЕДЕНИЕ…………………………………………………………………………………….. 5
1.Задание ………………………………………………………………………………………. ..7
Результаты работы…………………………………………………………9
Заключение…………………………………………………………………….17
СПИСОК ЛИТЕРАТУРЫ……………………………………………………………… ..20
ВВЕДЕНИЕ
Для разделения различных выполняемых приложений в операцион- ных системах используются процессы. Потоки являются основными эле- ментами, для которых операционная система выделяет время процессора; внутри процесса может выполняться более одного потока. Каждый поток поддерживает обработчик исключений, планируемый приоритет и набор структур, используемых системой для сохранения контекста потока во время его планирования. Контекст потока содержит все необходимые данные для возобновления выполнения (включая набор регистров процес- сора и стек) в адресном пространстве ведущего процесса.
По умолчанию все разрабатываемые приложения являются однопо- точными. Многопоточность позволяет приложениям разделять задачи и ра- ботать над каждой независимо, чтобы максимально эффективно задейство- вать процессор и пользовательское время. Однако чрезмерное злоупотребле- ние многопоточностью может снизить эффективность программы. Разделять процесс на потоки следует только в том случае, если это оправданно.
1.ЗАДАНИЕ № 1
Вариант 14. Ресурс – оборудование (станки) на заводе. Атрибуты –
наименование оборудования (станка), а также количество изделий (деталей)
P (P ≥ 1), которое оно может обрабатывать одновременно. Количество стан- ков – S (S ≥ 1). Атрибуты деталей – наименование, количество, а также спи- сок оборудования (причем заданный в требуемом порядке обработки). Ал- горитмы планирования:
- LCFS, nonpreemptive;
- Round Robin с очередью типа LCFS, относительный приоритет.
Для блокировки доступа к оборудованию (станкам) использовать сеть Петри.
Цель: освоить реализацию алгоритмов планирования использования ресурсов с вытесняющей и невытесняющей многозадачностью, с абсолютным и относительным приоритетом. Освоить реализацию механизмов безопасности и синхронизации потоков, а также механизмов исключения тупиковых ситуаций. В работе необходимо реализовать ряд алгоритмов распределения ресурсов между конкурирующими потоками. Каждый поток характеризуется: – уникальным идентификатором; – приоритетом; – временем CPU burst; – списком требуемых ресурсов; – дополнительными атрибутами (согласно индивидуальному варианту задания). Характеристики ресурса: – уникальный идентификатор; – наименование ресурса; – дополнительные атрибуты (согласно индивидуальному варианту задания). Для имитации времени CPU burst (заданного в миллисекундах) поток при получении кванта времени на доступ к ресурсу должен делать паузу на указанное количество миллисекунд (или имитировать рабочую нагрузку на процессор в течение этого времени). Входной файл должен иметь имя «input.txt», «input.xml», «input.json» и т. п. Если оба задания контрольной или лабораторной работы реализуются в одной и той же программе, имена входных файлов для разных заданий должны отличаться (например, для задания № 1 входной файл может иметь имя «input1.txt», «input1.xml», «input1.json» и т. п.).
- . Результаты работы
Характеристики ресурса: – уникальный идентификатор; – наименование ресурса; – дополнительные атрибуты (согласно индивидуальному варианту задания).
Для имитации времени CPU burst (заданного в миллисекундах) поток при получении кванта времени на доступ к ресурсу должен делать паузу на указанное количество миллисекунд.
Сеть Петри — это направленный двудольный граф (т.е. граф, вершины которого можно разбить на две части таким образом, что каждое ребро графа соединяет какую-то вершину из одной части с какой-то вершиной другой части, при этом нет ребер, которые соединяют две вершины одной части), где вершины представляют переходы и позиции. Событие – это срабатывание перехода, когда метки из входных позиций перехода перемещаются в выходные.
Сети Петри разрабатывались для моделирования систем с параллельными взаимодействующими компонентами и динамических систем. Также являются одним из видов графов в библиотеке main.py, с помощью которых можно изобразить процесс. В случае с main.py переходами являются прямоугольники со стадиями процесса, а окружности – позициями. Сеть Петри можно создать как с помощью логов процесса, так и вручную. Логи файла могут быть xes-файлами или csv-файлами.
Пример создания сети Петри из логов:
<code>
#Импорт библиотеки для работы с csv-файлом
from main.py.objects.log.importer.csv import factory as csv_import
#Создание сети Петри из лога
log = csv_import.import_event_stream(os.getcwd()+”\\Data.csv”)
from main.py.algo.discovery. inductive import factory as inductive_miner
net, initial_marking, final_marking = inductive_miner.apply(log)
</code>
Пример создания сети Петри вручную:
<code>
# создание пустой сети Петри
from main.py.objects.petri.petrinet import PetriNet, Marking
net = PetriNet(“new_petri_net”)
# создание источника
source = PetriNet.Place(“source”)
sink = PetriNet.Place(“sink”)
#Создание позиции
p_1 = PetriNet.Place(“p_1”)
# добавления в Сеть Петри
net.places.add(source)
net.places.add(sink)
net.places.add(p_1)
</code>
Также можно определить циклы в сети Петри. Цикл в сети Петри — это набор позиций и переходов, которые могут повторяться несколько раз (во время выполнения процесса).
Сначала применяется индуктивный майнер (один из видов сети Петри, направлена на построение надёжной сети.), потом мы получаем циклы. Переменная cylces содержит списки позиций, которые входят в циклы.
<code>
from main.py.algo.discovery.inductive import factory as inductive_miner
net, initial_marking, final_marking = inductive_miner.apply(log)
from main.py.objects.petri import utils
cycles = utils.get_cycles_petri_net_places(net)
</code>
Результатом является список циклов.
Кроме этого, в данном графе можно определить «сильно связанные» компоненты (подсети, в которых путь в графе существует между каждым элементом).
Для этого также необходимо использовать индуктивный майнер.
<code>
net, initial_marking, final_marking = inductive_miner.apply(log)
from main.py.objects.petri import utils
scc = utils.get_strongly_connected_subnets(net)
</code>
Пример вы можете увидеть на рисунке 1.
Рисунок 1 «Сильно связанные» элементы графа
В итоге мы рассмотрели основные операции, которые можно произвести с сетями Петри с помощью библиотеки main.py.
Заключение
В данном проекте рассмотрены теория схем программ, семантическая теория программ и теория параллельных вычислений. Построение схем программ позволяет изучить структурные свойства программы, а также проводить эквивалентные преобразования программ. Методы формального описания семантики программ, семантические методы преобразования и доказательства утверждений о программах позволяют оценить математический смысл программы и, в перспективе, автоматизировать отладку и даже синтез программ. Параллельное программирование используется уже довольно давно, тем не менее, именно сейчас оно переживает настоящий всплеск. Активно строятся новые суперкомпьютерные системы, и даже самые маленькие компьютерные устройства (ноутбуки, смартфоны и т. д.) имеют возможность проведения параллельных вычислений. В связи с этим исследование методов распараллеливания алгоритмов и программ актуально как никогда.
Литература
- Ершов, А. П. Введение в теоретическое программирование / А. П. Ершов. – М. : Наука, 1977. – 228 с.
- Котов, В. Е. Теория схем программ / В. Е. Котов, В. К. Сабельфельд. – М. : Наука, 1991. – 248 с.
- Котов, В. Е. Введение в теорию схем программ / В. Е. Котов. – Новосибирск : Наука, 1978. – 257 с.
- Минский, М. Вычисления и автоматы / М. Минский. – М. : Мир, 1971. – 366 с.
- Непомнящий, В. А. Прикладные методы верификации программ / В. А. Непомнящий, О. М. Рякин ; под ред. А. П. Ершова. – М. : Радио и связь, 1988. – 356 с.
- Андерсон, Р. Доказательство правильности программ : пер. с англ. / Р. Андерсон. – М. : Мир, 1982. – 186 с.
- Хоар, Ч. Взаимодействующие последовательные процессы / Ч. Хоар. – М. : Мир, 1988. – 264 с.
- Питерсон, Дж. Теория сетей Петри и моделирование систем / Дж. Питерсон. – М. : Наука, 1984. – 264 с.
- Котов, В. Е. Сети Петри / В. Е. Котов. – М. : Наука, 1984. – 161 с.
- Грис, Д. Конструирование компиляторов для цифровых вычислительных систем / Д. Грис. – М. : Мир, 1975. – 554 с.
- Донован, Дж. Системное программирование / Дж. Донован. – М. : Мир, 1975. – 540 с.
- Кнут, Д. Искусство программирования для ЭВМ / Д. Кнут. – М. : Мир, 1976–1978. – Т. 1–3.
- Рейуорд-Смит, В. Дж. Теория формальных языков / В. Дж. РейуордСмит. – М. : Мир, 1988. – 128 с.
- Бек, Л. Введение в системное программирование / Л. Бек. – М. : Мир, 1988. – 448 с.
- Вишняков, В. А. Организация вычислительных процессов / В. А. Вишняков. – Минск : Вышэйшая школа, 1988. – 207 с.
- Шпаковский, Г. И. Организация параллельных ЭВМ и суперскалярных процессоров / Г. И. Шпаковский. – Минск : Белгосуниверситет, 1996. – 296 с. 160
- Ахо, А. Построение и анализ вычислительных алгоритмов / А. Ахо, Дж. Хопкрофт, Дж. Ульман. – М. : Мир, 1979. – 536 с.
- Дейтл, Г. Введение в операционные системы / Г. Дейтл. – М. : Мир, 1987. – Т. 1. – 398 с.
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.