Четверг, 19.09.2024
Kober
Меню сайта
Поиск
Категории раздела
Шпоры Орг ЭВМ [42]
Шпоры ОС [22]
Главная » Статьи » Шпоры ОС

18 Алгоритм синхронизации процессов на примере USER-MAKER с буфером неограниченной емкости.

18.  Алгоритм   синхронизации  процессов   на   примере   USER-MAKER   с   буфером неограниченной емкости.

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

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

Введем необходимые взаимные исключения. Предположим, что "ждать" и "свершить" являются CS по отношению к числу (N), тогда все действия, связанные с событием "число (N)", выполняются в этих критических участках.

Алгоритм исполнения процессов "Производитель-Потребитель" с буфером большого размера:

 

GLB buffer

GLB namber(N)

SEMAPHORE (interexeption)

N=0

CO{Вызвать MAKER Вызвать USER

СО}

 

Описание (определение) процессов "Потребитель- Производитель" с буфером большого размера:

MAKER

USER

Local record
{
    make (record)
    P(interexeption);
    Add(buffer, record);
    V(interexeption);
    Doit(N++);
}

Local record
{
    wait (0<N=N-1);
    P(interexeption);
    get(buffer, record);
    V(interexeption);
    Use(record);
}

 



Временная диаграмма синхронизации процессов "Производитель-Потребитель"

с буфером большого размера.

Категория: Шпоры ОС | Добавил: Kober (13.06.2013)
Просмотров: 505
Архив записей
Copyright MyCorp © 2024
Бесплатный хостинг uCoz