пользователей: 21265
предметов: 10469
вопросов: 178036
Конспект-online
зарегистрируйся или войди через vk.com чтобы оставить конспект.
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Семафоры и семафорные примитивы. Использование семафоров для синхронизации процессов.

В общем о семафорах! см.билет№32
Пусть есть два процесса П1 и П2. Процесс П1 выполняет часть своего кода и затем запускает на 
выполнение процесс П2. На время выполнения процесса П2 процесс П1 «засыпает». Выполнение 
процесса П1 возобновляется только после полного завершения процесса П2. Упрощенная 
графическая иллюстрация взаимодействия процессов П1 и П2 представлена на рис. 2.


Рис. 2. графическая иллюстрация взаимодействия процессов П1 и П2
Решение описанной выше задачи с использованием семафоров и семафорных примитивов может 
выглядеть так:
S=0
П1: {П11; Запуск П2; P(S); П12}
П2: {П21; V(S)}
Важно отметить, что начальное значение семафора S обязательно должно быть равным 0. Именно это 
обеспечивает «засыпание» процесса П1 после запуска процесса П2: попытка выполнить примитив 
Р(S) при S=0 вызывает блокировку процесса П1. В противном случае процессы П1 и П2 развивались 
бы параллельно. Наличие в конце кода процесса П2 примитива V(S) позволяет установить значение 
семафора равным 1, что, в свою очередь, дает возможность процессу П1 возобновить свою работу.


15.06.2014; 14:38
хиты: 118
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2016. All Rights Reserved. помощь