![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Реализуется через средства, расположенные в супервизоре.
Семафоры – прием, позволяющий реализовать пассивное ожидание.
Бывают общие и двоичные.
Семафор – целочисленная переменная, над которой определены 2 неделимые операции: операция
– запросить ресурс либо вход в КУ, и
– вернуть ресурс или выйти из КУ.
1)
2) Если , то процесс продолжает работать
3) Если , то процесс останавливается и встает в очередь
Процесс находится в очереди ожидания, пока , выполняемая другим процессом, не вернет ресурс и не запустит другой процесс.
1)
2) Если , то процесс продолжает работу
3) Если , то один из процессов удаляется из очереди ожидания, получает ресурс и конкурирует с текущим процессом за право получить время ЦП.
Количество конкурирующих процессов ( – количество ресурсов в системе
Возврат в прикладной процесс произойдет после завершения запроса к супервизору.
Двоичный семафор
1 – ни один процесс не находится в КУ
0 – один процесс находится в своем КУ
-1 – 1 процесс в КУ, 1 процесс ожидает вход в КУ
Алгоритм синхронизации 2-х процессов:
begin
int своб; своб = 1;
parbegin
П1:
begin
<начало П1>
P(своб)
КУ П1
V(своб)
<конец П1>
end
П2:
begin
<начало П2>
P(своб)
КУ П2
V(своб)
<конец П2>
end
parend
end
Задача поставщик-потребитель (используется при вводе-выводе)
Используется общий семафор
2 процесса:
1) поставляет данные для обработки
2) ведет обработку данных
Для общения процессов используется буфер обмена.
Общие семафоры:
1) Буф – количество свободных буферов
2) Зан – количество занятых буферов
Двоичный семафор: Синхро – используется для синхронизации работы с очередями
begin int буф, зан, синхро;
буф = <количество буферов в системе, выделенных для решения задач>
зан = 0;
синхро = 1;
parbegin
П1(поставщик):
begin
do while (true)
<приготовить данные>
P(буф)
P(синхро)
<взять буфер из списка>
<послать сообщение>
V(зан)
V(синхро)
end
end
П2(потребитель):
begin
do while (true)
P(зан)
P(синхро)
<получить сообщение>
V(буф)
V(синхро)
<обработка сообщения>
end
end
parend
end
В нетривиальных системах очень часто требуется организация сложного ожидания:
1) Одного из нескольких ресурсов
2) Нескольких ресурсов
3) Одного из нескольких событий
4) Нескольких событий
5) 1+2+3+4
2 и 4 необходимо реализовывать через 1 и 3.
Дата публикования: 2015-10-09; Прочитано: 220 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!