Коммуникация и синхронизация процессов в централизованных архитектурах

Slides:



Advertisements
Similar presentations
Выпускная квалификационная работа на тему: «Применение интернет-технологий как фактор повышения эффективности функционирования организации (на примере.
Advertisements

Астрометрические каталоги К.В.Куимов, ГАИШ МГУ. Определение астрометрического каталога Астрометрический каталог – понятие неопределённое. Например, это.
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Схема распределения грантов городам-участникам программы Тасис (TCAS) Экологические гранты для муниципалитетов.
Поиск оптимального набора параметров оптимизаций компилятора Брусенцов Леонид Евгеньевич студент 4 курса ФИТ НГУ Руководители:Илья.
Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Расторгуев А.C., 545 группа Научный руководитель: Пименов А.А. Рецензент: ст. преп. Смирнова Е.А.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
ООО «Баркод Маркет».  Инвентаризация имущества – программная система, позволяющая организовать учет любого имущества компании.  Уменьшение неконтролируемых.
Грековой Марии. Играет важную роль в формулировке современных теорий. Некоторые симметрии в современной физике считаются точными, другие — лишь приближёнными.
R1R2R3R4R5R6R7R1R2R3R4R5R6R7. Аксиома R 1. В пространстве существуют плоскости. В каждой плоскости пространства выполняются все аксиомы планиметрии.
Тел. (495) Москва, а/я 212 Рабочая группа по реформе МВД Москва, 2010 Новикова Асмик, Фонд «Общественный вердикт»
Тушин Александр, ЗАО «Компания Либэр». 1) Предоставление полнотекстовых материалов 2) Поиск по внутреннему содержанию документа 3) Доступность в режиме.
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
ПРИНЦИПЫ РАЗРАБОТКИ СИСТЕМЫ КЛАССА LEARNING MANAGEMENT SYSTEM И ОПЫТ ЕЕ ИСПОЛЬЗОВАНИЯ НА ФАКУЛЬТЕТЕ МЕНЕДЖМЕНТА Афанасьева С.В. Кафедра бизнес-информатики.
Неотрицательное решение задачи Коши. Нередко постановка задачи требует чтобы фазовые переменные принимали лишь неотрицательные значения. Так, в физических.
Мягкие бюджетные ограничения и проблема стимулов
Bank ownership and lending behavior Alejandro Micco, Ugo Panizza Politicians and banks: Political influences on government-owned banks in emerging markets.
Миллер Дмитрий, 545 группа Научный руководитель: д.ф.-м.н., профессор, А.Н.Терехов Рецензент: к.ф.-м.н, доцент, А.Н. Иванов.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Сохранение суммы фазовых координат. Важный частный случай представляют системы, в которых в течение всего процесса сохраняется постоянной сумма значений.
Что за хулиган толкает пассажиров автобуса то вперед, то назад? Этот хулиган, вернее, хулиганка -
Создание сервиса синхронизации разнородных баз данных Допущена к защите зав. кафедрой: д.ф.м.н., профессор Терехов А.Н. Научный руководитель: доцент Графеева.
Обзор последних достижений биометрических методов аутентификации РусКрипто 2005.
Адаптивный метод распределения SPMD-заданий в грид Паньшенсков Михаил, 545 группа Научный руководитель: Лукичев А.С. Рецензент: Демьянович Ю.К июня.
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
1 ОПЕРАЦИОННАЯ ПЛАТФОРМА. ОПРЕДЕЛЕНИЯ И КЛАССИФИКАЦИЯ ЛЕКЦИЯ №3 Калинина А.П.
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Работа выполнена в рамках проекта "Информационные технологии в управлении образованием" 1С: ХроноГраф 2.5 Последовательность создания в программе «1С:
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Основы цифровой обработки речевых сигналов. Общая схема процесса речеобразования x[n] – дискретные отсчеты сигнала возбуждения y[n] – дискретные отсчеты.
Основы операционных систем
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 16 Методы разработки параллельных программ для многопроцессорных систем с общей.
Анализ производительности последовательного кода. Основы VTune™ Performance Analyzer ЛЕКЦИЯ №9, часть 2.
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
"The European Molecular Biology Open Software Suite"
Практические рекомендации по распараллеливанию с помощью OpenMP и измерению ускорения. Ошибки при многопоточном программировании. Распределение заданий.
1 Влияние машинной архитектуры Структура и принципы работы компьютера На разрабатываемый язык программирования машинная архитектура влияет двояко: –непосредственно.
Автор: Новитская О.В.. Об авторе: Н Новитская Ольга Владимировна Студентка Кемеровского Государственного Университета физического факультета 4 курса группы.
Поиск ошибок в многопоточном приложении (на примере Thread Checker) ЛЕКЦИЯ 9, часть 1.
Кураева Екатерина Анатольевна, заместитель директора по УВР, учитель математики сш № 29.
Маршрут, цепь, цикл Маршрутом называют последовательность вершин и ребер, в которой любые два соседних элемента инцидентны (т.е. соединены). Например:
ПОДДЕРЖКА ЗАДАЧ ОПЕРАТИВНОГО МОНИТОРИНГА ПРИРОДНЫХ ПРОЦЕССОВ В ОКЕАНОЛОГИЧЕСКОЙ ИНФОРМАЦИОННО- АНАЛИТИЧЕСКОЙ СИСТЕМЕ ДВО РАН А.В. Голик, А.Е. Суботэ, С.Г.
Методы анализа данных. Статистическая проверка гипотез.
Проект «Безопасный браузер» Визовитин Николай Научный руководитель: Д.В. Иртегов.
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 15 Методы разработки параллельных программ для многопроцессорных систем с общей.
ВВЕДЕНИЕ В ВЫЧИСЛИТЕЛЬНУЮ МАТЕМАТИКУ Лекция 5 6 октября 2009 ВЫЧИСЛИТЕЛЬНАЯ ЛИНЕЙНАЯ АЛГЕБРА.
0 + 0= = = = 10 Арифметические операции во всех позиционных системах счисления выполняются по одним и тем же хорошо известным вам правилам.
Семафоры-счетчики POSIX Программирование с использованием POSIX thread library.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Множественное выравнивание С.А.Спирин, весна
Учитель Антонова О.Я. Учитель Антонова О.Я. Зерноградская поликлиника.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
«Отгадай символы Рождества»
Алгебра логики это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических.
Рассмотрим более подробно работу управляющей компоненты. В ЭС используются нетрадиционные методы управления. Это вызвано неформализованностью решаемых.
Применение графического метода для решения различных математических задач Учитель гимназии №3 Шахова Т. А.
Jokes Jokes Jokes Teacher: Where's your text book? Student: At home. Teacher: What's it doing there? Student: Having a.
Дробление – уменьшение крупности материала под воздействием внешних сил. ПодготовительнымСамостоятельным Процессы дробления Подготовительное дробление.
Акушерское отделение. Обсервация. Выполнили студентки группы ЛД16-05 Михно Екатерина и Бабина Софья.
Presentation transcript:

Коммуникация и синхронизация процессов в централизованных архитектурах Коммуникация и синхронизация процессов в централизованных архитектурах. Планирование и диспетчеризация процессов. Приоритеты. Алгоритмы планирования. ЛЕКЦИЯ 6 Калинина А.П.

Зачем все это нужно? OpenMP – высокоуровневая надстройка над процессами и потоками операционной системы А что «там» происходит? Помимо OpenMP, есть другие технологии многопоточного программирования – «напрямую», не «надстройка» Алгоритмы управления потоками – общие: и для операционной системы, и для прикладной программы

Литература 1. И. Одинцов Профессиональное программирование. Системный подход. – «БХВ-Петербург» - 2004. – 610 с. 2. В.П. Гергель, Р.Г. Стронгин Основы параллельных вычислений для многопроцессорных вычислительных систем. Учебное пособие. Издание 2-е, дополненное. Издательство Нижегородского госуниверситета Нижний Новгород 2003

Содержание 1. Планирование и диспетчеризация процессов. Приоритеты 1.1. Алгоритмы планирования. 2. Коммуникация и синхронизация процессов в централизованных архитектурах. 2.1. Основные понятия и определения 2.2. Алгоритм Деккера 2.3. Аппаратная поддержка взаимоисключений 2.4. Крутящаяся блокировка 2.5. Семафоры 2.6. Мониторы 2.7. Решение задачи передачи данных между процессами «читатель – писатель» 2.8. Тупики 3. Презентация тренингов Intel 3.1. Задания

1. Планирование и диспетчеризация процессов [1] С точки зрения распределения процессорного времени операционные системы можно разделить на три группы. Системы с однопользовательским режимом. Система запускает одну задачу и ждет ее полного завершения. Системы с пакетным режимом. Переключение процессора с одной задачи на другую происходит лишь в том случае, если активная задача сама отказывается от процессора. Системы с многозадачным режимом. Переключение происходит по истечении некоторого кванта времени. Многозадачный режим примени в интерактивных системах и системах реального времени. Windows: как правило – переключение по истечении кванта времени (автоматическая настройка)

Три уровня планирования [1] Планирование верхнего уровня – это планирование при поступлении в систему, планирование стадии «оформления» процесса и его допуска его в систему. Планирование промежуточного уровня – это планирование при переводе процесса из очереди ожидающих ресурсы в очередь готовых к помещению на процессор. Планирование нижнего уровня (диспетчеризация) - это планирование очереди готовых к помещению на процессор процессов.

Пять основных целей планирования [1] Справедливость планирования, заключающаяся в том, что надо относиться к процессам одинаково и не откладывать бесконечно их поступление на процессор Завершение максимального количества процессов в единицу времени. Эта цель особенно актуальна для пакетных систем Обеспечение приемлемого времени ответа максимальному числу пользователей. Цель особенно актуальна для интерактивных систем. Предсказуемость планирования, определяемая тем, что одна и та же задача должна выполняться в системе за одно и то же время, независимо от условий. Цель особенно актуальна для систем реального времени. Постепенное снижение работоспособности системы.

Приоритеты [1] Приоритет – некоторое число, сопоставленное некоторому процессу из очереди готовых процессов и обозначающих важность процесса. Приоритеты бывают: Статические (не меняющиеся с момента поступления процесса в систему) и динамические; Присваемые автоматически (system defined) и назначаеиые извне (user defined); Купленные (например, в 70 годах 20 века в американских вычислительных центрах за назначение высокого приоритета платили деньги) и заслуженные Рациональные (назначенные из разумных соображений) и случайные (random)

Алгоритмы планирования, ориентированные на пакетные операционные системы [1]: Первый, пришедший в очередь процесс, обслуживается первым (First Comes, First Served - FCFS). Процессы получают процессор в порядке их поступления в очередь готовых процессов (выполняются на нем до своего полного завершения). Кратчайший процесс обслуживается первым (Shortest Job First - SJF). На процессор первым поступает процесс с минимальным оценочным временем исполнения. Заметим, что в большинстве случаев невозможно предсказать оценочное время завершения. Возможным вариантом решения является сохранение истории и анализ косвенных признаков (число обращений к внешним устройствам). Первым обслуживается процесс с наименьшим остаточным временем (Shortest Rest Time - SRT). Это случай дополнения предыдущего алгоритма квантованием времени

Алгоритмы планирования, ориентированные на интерактивные операционные системы [1]: Циклическое (круговое обслуживание) (Round Robbin - RR). Каждый процесс находится на процессоре ограниченный квант времени, по истечении которого становится в конец очереди. Разновидность кругового обслуживания – круговорот со смещением, при котором квант времени зависит от внешнего приоритета процесса. Многоуровневая очередь с обратными связями. Можно сказать, что данный алгоритм использует прошлое, чтобы предсказать будущее. Вначале каждый процесс попадает в очередь с одинаковым приоритетом. Если процесс не отработал весь квант времени, то он переходит в очередь с большим приоритетом. Высший приоритет получают те задачи, которым он, как правило, нужен (например, интерактивные). Сложные вычислительные задачи, занимающие много времени, попадают в очередь с небольшим приоритетом.

2. Коммуникация и синхронизация процессов в централизованных архитектурах. 2.1. Основные понятия и определения 2.2. Алгоритм Деккера 2.3. Аппаратная поддержка взаимоисключений 2.4. Крутящаяся блокировка 2.5. Семафоры 2.6. Мониторы 2.7. Решение задачи передачи данных между процессами «читатель – писатель» 2.8. Тупики

2.1. Основные понятия и определения [1] Процессы называются параллельными, если они существуют одновременно. Параллельные процессы можно разделить на следующие две группы: Независимые (не нуждающиеся во взаимодействии друг с другом) процессы Асинхронные (взаимодействующие и нуждающиеся в периодической синхронизации) процессы

2.1. Основные понятия и определения [1] Синхронизация процессов – использование специальных атомических операций для осуществления взаимодействия между процессами Критический ресурс – это ресурс, дающий обслуживание только одного процесса за один раз. Если несколько процессов хотят использовать критический ресурс в режиме разделения, то им следует синхронизовать свои действия, чтобы ресурс всегда находился в распоряжении не более, чем одного из них. Критические участки – это участки процесса, где происходит обращение к критическому ресурсу. Критические участки должны быть взаимоисключаемыми, т.е. каждый момент времени не более, чем один процесс может быть занят выполнением своего критического относительно некоторого ресурса участка. Обеспечение (поддержка) механизма взаимоисключения – ключевая задача параллельного программирования

2.1. Основные понятия и определения [1] Блокировка – предотвращение выполнения кем-либо чего-либо. Процесс должен устанавливать блокировку перед входом в критический участок и снимать ее после выхода. Естественно, если участок заблокирован, то другой процесс должен ждать снятия блокировки. Вход взаимоисключения и выход взаимоисключения – участки процесса, обрамляющие критический участок и служащие для обеспечения взаимоисключения. Примером входа взаимоисключения может служить блокирование, а выходом – разблокирование. Типичным примером критического ресурса является разделяемая переменная, суммирующая некоторую величину (назовем ее счетчик). Критические участки процессов тогда могут содержать следующий код: счетчик := счетчик+1

2.1. Основные понятия и определения [1] Гонки (race condition) – ситуация, когда два или более процессов обрабатывают разделяемые данные и конечный результат зависит от соотношения скоростей их исполнения. Мы будем использовать в определениях и алгоритмах этого раздела термин «процесс», следуя традиции. Более корректно было бы использовать понятие «поток управления»

Рассмотрим различные алгоритмы управления процессами (потоками) и наиболее часто встречающиеся задачи взаимодействия между процессами

2.2. Алгоритм Деккера [1] Предназначен для решения проблемы взаимного исключения. Алгоритм учитывает следующие требования: Относительные скорости параллельных процессов могут быть любыми; Процессы вне критического участка не могут препятствовать другим процессам входить в критический участок; Не должно быть бесконечного откладывания входа в критический участок.

Алгоритм Деккера [2] Алгоритм Деккера гарантирует корректное решение проблемы взаимоисключения для двух процессов. Управляющие переменные char status[2] обеспечивают взаимоисключение Переменная char turn исключает возможность бесконечного откладывания. Если оба процесса пытаются получить доступ к ресурсу, то процесс, номер которого указан в char turn , продолжает проверку возможности доступа к ресурсу (внешний цикл ожидания ресурса). Другой же процесс в этом случае снимает свой запрос на ресурс, ожидает своей очереди доступа к ресурсу (внутренний цикл ожидания) и возобновляет свой запрос на ресурс.

Алгоритм Деккера [1] (начало: необходимые переменные, функция инициализации) enum state {UNLOCKED, LOKED}; typedef struct { char status[2] /* байт статуса для каждого из двух процессов*/ char turn; /*какой из процессов будет следующим*/ } lock_t; void init_lock(lock_t* lock) lock->status[0] = UNLOCKED; lock->status[1] = UNLOCKED; lock->turn = 0; }

Алгоритм Деккера [1] (продолжение: блокировка) void lock(volatile lock_t* lock) { /*устанавливаем блокировку для текущего процесса*/ lock->status[cur_proc_id()] = LOCKED; /*проверяем, не установлена ли блокировка каким-либо другим процессом*/ while (lock->status[other_proc_id() == LOCKED]) {/*если другой процесс уже установил блокировку, проверяем, чья очередь войти в критический участок*/ if (lock->turn != cur_proc_id() ) { lock->status[cur_proc_id()] = UNLOCKED; while (lock->turn == other proc_id() ); lock->status[cur_proc_id() = LOCKED;] }

Алгоритм Деккера [1] (продолжение: функция разблокировки) void unlock(lock_t* lock) { lock->status[cur_proc_id()] =UNLOCKED; lock->turn = other_proc_id(); }

Алгоритм Деккера [2] Алгоритм Деккера может быть обобщен на случай произвольного количества процессов однако, такое обобщение приводит к заметному усложнению выполняемых действий. Кроме того, программное решение проблемы взаимоисключения процессов приводит к нерациональному использованию процессорного времени ЭВМ (процессу, ожидающему освобождения ресурса, постоянно требуется процессор для проверки возможности продолжения – активное ожидание (busy wait)).

2.3. Аппаратная поддержка взаимоисключений [1] Возможное решение поддержки проблемы взаимного исключения – это наличие неделимой команды test_and_set(a, b) (проверить и установить). Команда имеет две логические переменные в качестве параметров. Переменная a является локальной для каждого процесса, а переменная b – глобальной и разделяется процессами. Выполнение команды заключается в следующих двух действиях: Значение переменной b копируется в a; Значение переменной b устанавливается в истину. Практически все основные архитектуры имеют подобную команду в своем составе. Например, в SPARC – архитектуре существует команда ldstub (load store unsigned byte) ldstub [addr], reg

2.3. Аппаратная поддержка взаимоисключений [1] В результате выполнения этой команды содержимое памяти по адресу addr копируется в регистр reg, а все биты памяти addr устанавливаются в единицу. В листинге представлен программный интерфейс команды test_and_set с помощью реальной ассемблерной команды ldstub. Листинг. Программный интерфейс команды test_and_set int test_and_set (volatile int* addr) { asm(ldstub [addr], reg); if (reg==0) return 0; } return 1;

2.4. Крутящаяся блокировка Крутящаяся блокировка – это механизм, реализующий взаимное исключение и являющийся эффективным для коротких критических участков. Его название вытекает из того факта, что процесс будет находится в цикле, ожидая завершения блокировки, установленной другим процессом.

2.5. Блокировка с запретом прерываний Блокировка с запретом прерываний применима только на однопроцессорной архитектуре.

2.6. . Семафоры [1] Семафор – это защищенная переменная, значение которой можно запрашивать и менять только при помощи специальных операций P и V и при инициализации. Концепция семафоров была предложена Дейкстрой в начале 60гг 20 века. Применяют три основные типа семафоров: Двоичные (бинарные) семафоры, принимающие только два значения {0,1} Считающие семафоры. Их значения – целые неотрицательные числа Общие семафоры. Принимают все множество целых чисел.

2.6. Семафоры [1] Реализация операций P и V для считающих семафоров выглядит так: P(S): if (S>0) then S:=S-1 else ожидать_в_очереди (S) V(S): if (есть процессы в очереди (S)) then одному_продолжить (S) else S:=S+1. Конечно, операции P и V должны быть неделимыми (например, защищенными крутящейся блокировкой). Как правило, семафоры реализуются в ядре операционной системы. Собственно, название происходит от голландских слов Proberen – проверить и Verhogen – увеличить.

Три классические задачи, в которых применяются семафоры Решение взаимного исключения при помощи семафоров. Входом взаимоисключения будет операция P, а выходом – операция V; Синхронизация при помощи семафоров. Если одному процессу необходимо, чтобы он получал уведомление от другого процесса о наступления некоторого события и только после этого продолжал свою работу, то процессы должны иметь операции P и V соответственно, причем инициализироваться семафор должен нулем; Выделение некоторых однотипных ресурсов из пула ресурсов при помощи семафоров. В этом случае надо применять общие или считающие семафоры.

2.7. Мониторы [1] Монитор – это механизм организации параллелелизма, который содержит как данные, так и процедуры, необходимые для динамического распределения конкретного общего ресурса или группы общих ресурсов. Для выделения общего ресурса процесс должен обратиться к конкретной процедуре монитора. В каждый конкретный момент времени монитором может пользоваться только один процесс. Процессам, желающим войти в монитор в тот момент, когда он занят, приходится ждать, причем процессом ожидания управляет монитор. Монитор обладает свойством инкапсуляции данных.

Принцип работы монитора Процесс, обращающейся к монитору за получением некоторого ресурса, обнаруживает, что ресурс занят. При этом процедура монитора выдает команду «ждать» (wait), по которой процесс будет ждать вне монитора, пока ресурс не освободиться. Когда ресурс освобождается, то монитор выдаст команду «сигнал» (signal). Если очередь ждущих процессов не пуста, то по этой команде один из процессоров может воспользоваться ресурсом монитора. Обычно очередь организуется по принципу – «первый пришел – первый получил доступ к ресурсу» Существует традиционный подход к реализации мониторов и очереди процессов. Очередь поддерживается переменной условия (condition variable). При этом в команды включаются имена условий, например wait (имя условия) или signal(имя условия).

2.8. Задачи передачи данных между процессами «читатель-писатель» [1] Классическая задача, возникающая при передаче данных между процессами, это задачи типа «читатель - писатель» Процесс «писатель» генерирует информацию, а «читатель» ее потребляет. Обмен блоками информации осуществляется через специальные буферы, число которых ограничено.

2.9. Тупики [1] Процессы и потоки управления – активные объекты. Ресурсы – неактивные объекты (процессор – вытесняемый ресурс, а дисковое пространство – невытесняемый ресурс). Во время работы процесс (поток управления) может попасть в два неприятных состояния: зависание и тупик.

Тупики и зависания [1] Зависание – это состояние неопределенного ожидания каких-либо ресурсов, из которого рано или поздно все процессы выходят. Тупик – это состояние ожидания некоторого события, которое никогда не произойдет (как правило, это круговое ожидание ресурсов). Система находится в тупиковой ситуации, когда один или более процессов находятся в состоянии тупика.

Четыре необходимых условия для возникновения тупика [1] Условие взаимоисключения. Процессы требуют монопольного владения ресурсами, предоставляемых им. Условие ожидания. Процессы удерживают выделения уже выделенные им ресурсы, ожидая выделения дополнительных. Условие нераспределяемости. Ресурсы нельзя отобрать у удерживающих их процессов, пока они не будут использованы. Условие кругового ожидания. Существует кольцевая цепь процессов, в которой каждый процесс удерживает один или более ресурсов, требующихся следующему процессу.

4 основных стратегии работы с тупиками Полное игнорирование проблемы («алгоритм страуса») – подход, при котором операционные системы не осуществляют работу с тупиками. Большинство реальных систем поступает именно так, потому что ресурсов достаточно много. Предотвращение тупиков («prevention») – подход, целью которого является обеспечение условий, исключающий возможность возникновения тупиковой ситуации. Обход тупиков (avoidance) – подход, который обеспечивает рациональное распределение ресурсов по рациональным правилам. Обнаружение тупиков (detection) – подход, который допускает возникновение тупиков, определяет процессы и ресурсы, которые вовлечены в тупиковую ситуацию, и пытаются вывести систему из нее.

Предотвращение тупиков Нужно нарушить хотя бы одно необходимое условие его возникновения. Первое условие (взаимоисключение) – вполне естественно (например, для такого устройства, как накопитель на магнитной ленте) Нарушая второе условие (ожидание) – процесс может запросить сразу все ресурсы. Эффективность системы при этом может значительно ухудшиться. В качестве компромиссного решения можно предложить разделять процесс на шаги Нарушить третье условие (нераспределяемость) можно следующим образом. Процесс, удерживающий ресурсы и получивший отказ на другие ресурсы, должен освободить все ресурсы и через некоторое время запросить их заново. При этом процесс может потерять большую часть проделанной работы. Нарушая четвертое условие (кругового ожидания), следует внести линейную очередность ресурсов, пронумеровав их и выдавать их в порядке, не допускающем кругового ожидания. Данный подход требует значительных накладных расходов на хранение информации, связанной с типами ресурсов и упорядоченностью экземпляров ресурсов.

Обход тупиков - алгоритм банкира. Алгоритм банкира имитирует действия банкира, располагающим определенным источником капитала, выдающего ссуды и принимающего платежи. Алгоритм был предложен Дейкстрой. Состояние системы будем называть надежным, если операционная система может обеспечить всем пользователям завершение их задач в течение конечного промежутка времени. Суть алгоритма в том, что система удовлетворяет только те запросы, при которых ее состояние остается надежным. Остальные запросы откладываются. Существует два основных ограничения этого подхода: каждый процесс заранее должен указать максимальное количество ресурсов, которые ему понадобятся, и в каждый момент времени процесс должен захватывать только один ресурс. Данный алгоритм неприменим на практике из-за его неэффективности, т.к. необходимость в пересчете возникает непрерывно, при каждом поступлении процесса в систему и его удалении при каждой разновидности ресурсов.

Задание Изучить реализацию “Hello Threads” с помощью WinAPI По материалам предыдущего занятия: изменить параллельную реализацию задачи «Граф», пользуясь конструкциями OpenMP: single thread, barrier. Определить ускорение параллельной программы для обоих вариантов