Задача о производителе и потребителе.

Выполнен
Заказ
3770657
Раздел
Программирование
Предмет
Другое
Тип работы
Антиплагиат
Не указан
Срок сдачи
28 Дек 2020 в 01:00
Цена
400 ₽
Блокировка
10 дней
Размещен
25 Дек 2020 в 04:45
Просмотров
147
Описание работы

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

· каждый блок данных можно послать только один раз;

· блоки данных не могут быть потеряны – если в буфере содержится N блоков данных, то в него нельзя записывать новый блок данных;

· нельзя читать из пустого буфера.

Эти блоки данных называются сообщениями.

Для решения этой задачи объявляются три семафора:

· семафор s исключает одновременную работу процессов с общей областью;

· семафор full равен числу записанных и пока еще не прочитанных сообщений;

· семафор empty закрыт, когда в буфере нет места для записи.

Производитель должен перед записью ждать ненулевого значения empty, которое вначале устанавливается равным N. Затем вычитать от empty единицу, захватывать буфер с помощью семафора s, записывать данные, освобождать доступ к буферу и увеличивать число full записанных и не прочитанных на единицу. Потребитель ждет, пока не появится хотя бы одно сообщение, затем захватывает буфер, читает сообщение, освобождает буфер и увеличивает число свободных мест на единицу. Приведём схему программы:

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Время выполнения заказа:
2 дня 1 час 48 минут
Выполнен
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир