Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Механизмы с пассивным ожиданием входа в КУ



Реализуется через средства, расположенные в супервизоре.

Семафоры – прием, позволяющий реализовать пассивное ожидание.

Бывают общие и двоичные.

Семафор – целочисленная переменная, над которой определены 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; Прочитано: 205 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...