Четверг, 29.01.2026
Шпаргалка :)
Меню сайта
Категории раздела
Мои статьи [172]
Наш опрос
Оцените мой сайт
Всего ответов: 259
Форма входа
Главная » Статьи » Мои статьи

18. Примитивы межпроцессного взаимодействия. Семафоры. Мьютексы. Мониторы. Передача сообщений. Барьеры.

18. Примитивы межпроцессного взаимодействия. Семафоры. Мьютексы. Мониторы. Передача сообщений. Барьеры.

Вводится понятия двух примитивов.

sleep - системный запрос, в результате которого вызывающий процесс блокируется, пока его не запустит другой процесс.

wakeup - системный запрос, в результате которого блокированный процесс будет запущен.

Применение примитивов Основное преимущество - это отсутствие активного ожидания.

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

Проблема переполненного буфера (проблема производителя и потребителя)

Чтобы первый процесс не писал, когда буфер полный, а второй не считывал, когда он пуст, вводится переменная count для подсчета количества элементов в буфере.

Проблема переполненного буфера

Семафоры - средство управления процессами

Семафо́р — объект, позволяющий войти в заданный участок кода не более чем n потокам
Семафоры используются при передаче данных через разделяемую память.

Семафор представляет собой целую переменную, принимающую неотрицательные значения, доступ любого процесса к которой, за исключением момента ее инициализации, может осуществляться только через две атомарные операции: P (от датского слова proberen — проверять) и V (от verhogen — увеличивать).  переменные-семафоры могут быть применены для организации взаимодействия процессов.

Мьютекс — упрощенная версия семафора, которая может находиться в одном из двух состояний — блокированном или неблокированном.POSIX mutex_init(), mutex_lock(), mutex_unlock(), mutex_destroy().

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

Передача сообщений

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

Барьеры

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

Категория: Мои статьи | Добавил: Eskander (14.06.2012)
Просмотров: 5420 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2026
    Бесплатный конструктор сайтовuCoz