Операционные системы. Курс лекций



Барьеры


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

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

Задачи на межпроцессное взаимодействие.

Читатель- писатель. Варианты решения:

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

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

3.         Использование семафоров.


Содержание  Назад  Вперед