Мегаобучалка Главная | О нас | Обратная связь


Решение классических задач синхронизации с помощью семафоров



2019-07-04 271 Обсуждений (0)
Решение классических задач синхронизации с помощью семафоров 0.00 из 5.00 0 оценок




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

ограниченныйбуфер (bounded buffer problem)

читатели – писатели (readers – writers problem)

- обедающиефилософы (diningphilosophersproblem).

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

Будем использовать три общих семафора:

semaphore full = n;

semaphore empty = 0;

semaphore mutex = 1;

Семафор full сигнализирует о переполнении буфера, empty – об исчерпании буфера, mutex – используется для взаимного исключения действий над буфером.

Поясним использование семафоров. Семафор mutex используется "симметрично"; над ним выполняется пара операций: wait … signal – семафорные скобки. Его роль – чисто взаимное исключение критических секций. Семафор empty сигнализирует об исчерпании буфера. В начале он закрыт, так как элементов в буфере нет. Поэтому при закрытом семафоре empty потребитель вынужден ждать. Открывает семафор empty производитель, после того, как он записывает в буфер очередной элемент. Семафор full сигнализирует о переполнении буфера. В начале он равен n – максимальному числу элементов в буфере. Производитель перед записью элемента в буфер выполняет операцию wait (full),гарантируя, что, если буфер переполнен, записи нового элемента в буфер не будет. Открывает семафор full потребитель, после того, как он освободил очередной элемент буфера.

Решение задачи писателя-читателя.

Процедура инициализации Процесс-производитель Процесс-потребитель
     
procedure INIT; process P1; process P2;
binary semaphore B ; binary semaphore B ; binary semaphore B ;
integer semaphore E, F; integer semaphore E, F; integer semaphore E, F;
begin begin begin
B := 1 ; {Буфер открыт} while true do while true do
E := N ; {Все записи} begin begin
{в буфере пусты} ... ...
F := 0 ; {В буфере нет} produce_next_record ; P(F) ;
{ни одной записи} P(E) ; P(B) ;
start(P1) ; P(B) ; read_record_from_buffer;
start(P2) write_record_to_buffer ; V(B);
end INIT . V(B); V(E);
  V(F); process_new_record ;
  ... ...
  end end
  end P1 . end P2 .
     

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

 Для процесса P1 ресурсом являются незаполненные записи в буфере, для их учета можно использовать считающий семафор E, а для процесса P2 необходимым для работы ресурсом являются сформированные процессом P1 записи, для учета их числа можно также использовать считающий семафор F. Кроме того, выполнение операций с буфером, который является разделяемым ресурсом, требует обычно взаимного исключения (последовательность операций над данными в буфере - критическая секция), для реализации которого можно использовать бинарный семафор.

Описание процедуры инициализации и программ, соответствующих процессам P1 и P2, приведено ниже.

Процесс-производительресурса может получить доступ к буферу только в том

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

 

 

35. Что такое облачные вычисления? Что понимается в облачных вычислений под "облаком"? (ОПК-1)

Облачные вычисления (англ. cloud computing) — модель обеспечения удобного сетевого доступа по требованию к некоторому общему фонду конфигурируемых вычислительных ресурсов (например, сетям передачи данных, серверам, устройствам хранения данных, приложениям и сервисам — как вместе, так и по отдельности), которые могут быть оперативно предоставлены и освобождены с минимальными эксплуатационными затратами или обращениями к провайдеру.

Cloud computing (англ. Cloud — облако; computing — вычисления) — «облачные вычисления» — концепция «вычислительного облака», согласно которой программы запускаются и выдают результаты работы в окно стандартного веб-браузера на локальном ПК, при этом все приложения и их данные, необходимые для работы, находятся на удаленном сервере в интернете.

Компьютеры, осуществляющие такие вычисления, называются «вычислительным облаком». При этом нагрузка между компьютерами, входящими в «вычислительное облако», распределяется автоматически. Простейшим примером cloud computing являются p2p-сети.

 



2019-07-04 271 Обсуждений (0)
Решение классических задач синхронизации с помощью семафоров 0.00 из 5.00 0 оценок









Обсуждение в статье: Решение классических задач синхронизации с помощью семафоров

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (271)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.011 сек.)