з

К предыдущей странице

л

К предыдущей главе

о

К следующей главе

и

К следующей странице


4.4.1. Алгоритм "Производитель-Потребитель" с буфером на одну запись

Введем переменные (семафоры):

  • ПУСТО = 1 - сигнал для производителя "поместить в буфер запись"
  • ПОЛНО = 1 - сигнал для потребителя "читать запись"
ПУСТО ПОЛНОСостояния
0 0 Какой-то процесс находится в CS
0 1 Потребитель может войти в CS, буфер полон
1 0 Производитель может войти в CS, буфер пуст
1 1 Не определено

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

Pr1(производитель) Pr2(потребитель)
  • DO(TRUE)
  • DO(TRUE)
               
  • подготовить "ЗАПИСЬ"
  • Р(ПУСТО)(ждать, пока "ПУСТО" станет =1)
  • "ЗАПИСЬ" в буфер
  • V(ПОЛНО)
                 
  • (ПОЛНО)(ждать, пока "ПОЛНО" станет =1)
  • читать из буфера
  • V(ПУСТО)
  • использовать "ЗАПИСЬ"
  • OD
  • OD(TRUE)


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

GLB буфер (глобальная переменная)

Semaphore ПОЛНО, ПУСТО

ПОЛНО = 0

ПУСТО = 1

CO BEGIN (Corporation Begin)

CO{

Вызвать "Производитель";

Вызвать "Потребитель"

СО}

COEND


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


з

К предыдущей странице

л

К предыдущей главе

о

К следующей главе

и

К следующей странице