- •«Теория расписаний и параллельное программирование»
- •Классификация задач теории расписаний. Статические и динамические задачи. Запись вида a|b|c|d.
- •Исходные данные и искомые величины при составлении расписаний. Понятие регулярного критерия.
- •3. Упорядочение работ для одной машины. Искусственные простои и прерывания. Перестановочные расписания.
- •Составление расписаний в системах n|1 при заданном отношении предшествования (цепочки, которые можно разрывать).
- •Расписания для систем конвейерного типа. Теорема о порядке выполнения на двух первых машинах. Теорема о порядке выполнения на двух первых и двух последних машинах в системе n|m|f|Fmax .
- •Задача Джонсона. Теорема Джонсона. Алгоритм, основанный на теореме Джонсона.
- •Оптимальные расписания для системы n|m|f|Fmax.
- •13. Параллельные приборы. Система заданий с древовидной структурой.
- •14. Многопроцессорные системы с общей памятью.
- •15. Многопроцессорные системы с распределенной памятью.
- •16. Топологии многопроцессорных систем.
- •17. Классификация параллельных систем Флинна.
- •18. Классификация параллельных систем Хокни.
- •19. Классификация параллельных систем Скилликорна.
- •20. Последовательные процессы и их взаимодействие. Задача о критической секции. Алгоритм Деккера.
- •21. Семафоры. Общие и бинарные семафоры. Решение задачи о критической секции с помощью семафоров.
- •22. Решение задачи о производителях и потребителях с помощью семафоров.
- •23. Задача об обедающих философах и ее решение с помощью семафоров.
16. Топологии многопроцессорных систем.
Топология – способ организации связей.
17. Классификация параллельных систем Флинна.
Одним из наиболее распространенных способов классификации ЭВМ является систематика Флинна (Flynn), в рамках которой основное внимание при анализе архитектуры вычислительных систем уделяется способам взаимодействия последовательностей (потоков) выполняемых команд и 28 29 обрабатываемых данных. В результате такого подхода различают следующие основные типы систем
- SISD (Single Instruction, Single Data) – системы, в которых существует одиночный поток команд и одиночный поток данных; к данному типу систем можно отнести обычные последовательные ЭВМ. Все команды выполняются последовательно, и каждая инициализирует выполнение скалярной операции. Тот факт, что для увеличения скорости выполнения команд, может использоваться конвейерная обработка значения не имеет.
- SIMD (Single Instruction, Multiple Data) – системы c одиночным потоком команд и множественным потоком данных; подобный класс систем составляют МВС, в которых в каждый момент времени может выполняться одна и та же команда для обработки нескольких информационных элементов. В архитектурах этого типа существует единственный набор команд, который может включать в себя и векторные команды.
- MISD (Multiple Instruction, Single Data) – системы, в которых существует множественный поток команд и одиночный поток данных; примеров конкретных ЭВМ, соответствующих данному типу вычислительных систем, не существует; введение подобного класса предпринимается для полноты системы классификации;
- MIMD (Multiple Instruction, Multiple Data) – системы c множественным потоком команд и множественным потоком данных; к подобному классу систем относится большинство параллельных многопроцессорных вычислительных систем. Существует несколько процессоров, каждый из которых выполняет свой поток команд над своим потоком данных.
18. Классификация параллельных систем Хокни.
19. Классификация параллельных систем Скилликорна.
20. Последовательные процессы и их взаимодействие. Задача о критической секции. Алгоритм Деккера.
Процесс — экземпляр программы во время выполнения, независимый объект, которому выделены системные ресурсы (например, процессорное время и память). Каждый процесс выполняется в отдельном адресном пространстве: один процесс не может получить доступ к переменным и структурам данных другого. Если процесс хочет получить доступ к чужим ресурсам, необходимо использовать межпроцессное взаимодействие(«трубы» pipe).
Поток(облегченный процесс) использует то же самое пространства стека, что и процесс, а множество потоков совместно используют данные своих состояний. Как правило, каждый поток может работать (читать и писать) с одной и той же областью памяти, в отличие от процессов, которые не могут просто так получить доступ к памяти другого процесса. У каждого потока есть собственные регистры и собственный стек, но другие потоки могут их использовать.
Одной из причин зависимости результатов выполнения программ от порядка чередования команд может быть разделение одних и тех же данных между одновременно исполняемыми процессами (например, как это осуществляется в выше рассмотренном примере). Данная ситуация может рассматриваться как проявление общей проблемы использования разделяемых ресурсов (общих данных, файлов, устройств и т.п.).
Для организации разделения ресурсов между несколькими процессами необходимо иметь возможность:
определения доступности запрашиваемых ресурсов (ресурс свободен и может быть выделен для использования, ресурс уже занят одним из процессов программы и не может использоваться дополнительно каким-либо другим процессом);
выделения свободного ресурса одному из процессов, запросивших ресурс для использования;
приостановки (блокировки) процессов, выдавших запросы на ресурсы, занятые другими процессами.
Главным требованием к механизмам разделения ресурсов является гарантированное обеспечение использования каждого разделяемого ресурса только одним процессом от момента выделения ресурса этому процессу до момента освобождения ресурса. Данное требование в литературе обычно именуется взаимоисключением процессов; командные последовательности процессов, в ходе которых процесс использует ресурс, называется критической секцией процесса. С использованием последнего понятия условие взаимоисключения процессов может быть сформулировано как требование нахождения в критических секциях по использованию одного и того же разделяемого ресурса не более чем одного процесса.
Задача о крит секции: пусть есть несколько потоков, параллельно функционирующих. У каждого потока есть часть, которая обладает следующим свойством: если какой-то из потоков находится в этой части(кри секция), то никакой другой поток внутри своей критической секции находиться не должен.
