Студопедия — Cobegin
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Cobegin






Begin

P1:= 1;

while true do (* бесконечный цикл *)

begin (* процесс А *)

wait (P1);

(* защищенный ресурс *)

signal (P1);

end; (* процесс А *)

while true do (* бесконечный цикл *)

begin (* процесс В *)

wait (Pl);

(* защищенный ресурс *)

signa l(Pl);

end;(* процесс В *)

coend;

end. (* sem_example *)

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

Само по себе применение семафоров не гарантирует предотвращения тупиковых ситуаций. Если два процесса используют семафоры следующим образом

wait (Pl) wait (P2)

wait (P2) wait (Pl)

… …

(* защищенный ресурс *) (* защищенный ресурс *)

… …

signal (Pl) signa l(P2)

signal (P2) signal (Pl)

то по-прежнему существует риск возникновения тупика. Если пере­ключение процессов происходит между двумя операторами wait первой про­граммы, а вторая программа выполнит свои операторы wait, то это приводит к тупику, поскольку каждая программа ожидает от другой освобождения се­мафора. Проблема состоит в том, что, хотя семафор гарантирует неразрыв­ность проверки и установки значения, он сам остается защищенным ресур­сом. В приведенном примере явно нарушен запрет последовательного выде­ления, и это приводит к возможности тупиковых ситуаций.

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

Process "Чтение данных" Process "Обработка данных"







Дата добавления: 2015-09-04; просмотров: 307. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия