| ||||||
4.4.2. Алгоритм "Производитель-Потребитель" с буфером большого размера (бесконечным)Производитель и Потребитель пользуются буфером большого размера, который представляет собой бесконечную очередь. Действия: как только Производитель подготовит запись он добавляет ее в конец очереди. Как только Потребитель готов использовать запись он берет первую запись из начала очереди. Необходимо предусмотреть ситуацию чтобы Потребитель не читал из пустой очереди. Для этого необходимо хранить информацию о числе записей в очереди. Алгоритм исполнения процессов "Производитель-Потребитель" с буфером большого размера: GLB buffer GLB namber(N) N=0 CO{ Вызвать "Производитель" Вызвать "Потребитель"
СО}
Описание (определение) процессов "Производитель- Потребитель" с буфером большого размера | ||||||
| ||||||
Этот алгоритм некорректен по 2 причинам:
Введем необходимые взаимные исключения. Предположим, что "ждать" и "свершить" являются CS по отношению к числу (N), тогда все действия, связанные с событием "число (N)", выполняются в этих критических участках. Алгоритм исполнения процессов "Производитель-Потребитель" с буфером большого размера (2-ой вариант) GLB buffer GLB namber(N) SEMAPHORE (interexeption) N=0 CO{ Вызвать MAKER Вызвать USER СО} Описание (определение) процессов "Потребитель- Производитель" с буфером большого размера (2-ой вариант) | ||||||
| ||||||
| ||||||
|