рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Парадигма (шаблон) взаимодействия процессов: производитель – потребитель

Парадигма (шаблон) взаимодействия процессов: производитель – потребитель - Лекция, раздел Социология, Лекция: Методы взаимодействия процессов В лекции рассматриваются: взаимодействие процессов: проблема ограниченного буфера Реализация Взаимодействия Процессов Может Быть Основана На Одной Из Классичес...

Реализация взаимодействия процессов может быть основана на одной из классических парадигм (шаблонов), сложившейся за десятилетия развития программирования. В данном разделе рассмотрим одну из наиболее распространенных из парадигм взаимодействия процессов - производитель потребитель: процесс-производитель (producer) генерирует в некотором буфере информацию, которая используется процессом-потребителем (consumer).

При реализации данной парадигмы возможны схемы с неограниченным и ограниченным буфером, используемым для связи двух процессов.

  • Схема с неограниченным буфером (unbounded buffer)подразумевает, что на размер используемого буфера теоретически нет ограничений.
  • Схема с ограниченным буфером (bounded buffer)предполагается определенное ограничение размера буфера, например, константой BUFFER_SIZE.

При реализации следует учесть, что схема с ограниченным буфером, с точки зрения принципов надежных и безопасных вычислений (trustworthy computing, см. "Понятие операционной системы (ОС), цели ее работы. Классификация компьютерных систем"), представляет опасность атаки "переполнение буфера"(buffer overrun)– ошибочного или преднамеренного превышения размера буфера. Чтобы избежать этой уязвимости, при заполнении буфера необходимо проверять его размер.

Реализуем ограниченный буфер следующим образом. Информация хранится в массиве с двумя указателями: in - для считывания и использования очередного элемента информации процессом-потребителем и out - для записи очередного сгенерированного элемента информации процессом-производителем. При считывании из буфера очередной элемент удаляется, и указатель in, соответственно, продвигается. При записи в буфер продвигается указатель out. Для удобства будем считать буфер циклическим, т.е. при его заполнении следующим заполняемым элементом будет нулевой (если он освободился), следующим после него – первый и т.д. Таким образом, процесс-производитель должен вычислять индекс в буфере, по которому он записывает следующий элемент, по формуле (out + 1) % BUFFER_SIZE, где "%" операция взятия остатка от деления. Аналогично, процесс-потребитель должен вычислять индекс следующего элемента информации в буфере по формуле (in + 1) % BUFFER_SIZE. Учтем также две возможных ситуации: переполнение буфера(при генерации производителем числа элементов, большего длины буфера) и исчерпание буфера(в случае, если потребитель взял из буфера последний на данный момент сгенерированный элемент). Чтобы избежать обращения за границы буфера, при переполнении буфера производитель должен будет ждать, пока в буфере не освободится хотя бы один элемент, а при исчерпании буфера должен будет ждать потребитель, пока хотя бы один новый элемент не появится в буфере.

Реализация представления буфера на языке Си может иметь вид:

#define BUFFER_SIZE 1000 /* или другое конкретное значение */

typedef struct {

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0;

Реализация схемы алгоритма процесса-производителя имеет вид:

item nextProduced; /* следующий генерируемый элемент */

while (1) { /* бесконечный цикл */

while (((in + 1) % BUFFER_SIZE) == out)

; /* ждать, пока буфер переполнен */

buffer[in] = nextProduced; /* генерация элемента */

in = (in + 1) % BUFFER_SIZE;

}

Соответственно, реализация процесса-потребителя будет иметь вид:

item nextConsumed; /* следующий используемый элемент */

while (1) { /* бесконечный цикл */

while (in == out)

; /* ждать, пока буфер пуст */

nextConsumed = buffer[out]; /* использование элемента */

out = (out + 1) % BUFFER_SIZE;

}

Данный код может быть использован как шаблон (pattern) для реализации схемы производитель – потребитель в любой системе.

– Конец работы –

Эта тема принадлежит разделу:

Лекция: Методы взаимодействия процессов В лекции рассматриваются: взаимодействие процессов: проблема ограниченного буфера

В лекции рассматриваются взаимодействие процессов проблема ограниченного буфера проблема производитель потребитель прямая и косвенная связь... Содержание Введение Независимые и взаимодействующие процессы Виды организации взаимосвязи процессов...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Парадигма (шаблон) взаимодействия процессов: производитель – потребитель

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Независимые и взаимодействующие процессы
С точки зрения взаимосвязи, процессы подразделяются на независимыеи взаимодействующие. Независимыйпроцесс – процесс, никак не связанный с

Виды организации взаимосвязи процессов
С точки зрения видов взаимосвязи родительского и дочернего процессов, процессы подразделяются на независимые, подчиненныеи сопроцессы.

Коммуникация процессов
Рассмотрим теперь возможные механизмы для непосредственной коммуникации процессов и синхронизации их действий. Наиболее распространенный их них - система сообщений; при эт

Непосредственная коммуникация процессов
При непосредственной коммуникации (direct communication)процессы именуют друг друга явно – по именам или по адресам (указателям), которые указываются в вызовах коммуникационных при

Косвенная коммуникация процессов
При косвенной коммуникации (indirect communication)сообщения направляются и получаются через почтовые ящики(mailboxes), или порты

Буферизация и очередь сообщений
С коммуникационной линией связывается очередь сообщений, реализованная одним из трех возможных способов: Нулевая емкость очереди сообщенийозначает,

Клиент-серверная взаимосвязь – один из наиболее распространенных видов коммуникации процессов
Используются, в частности, следующие ее разновидности, которые мы и рассмотрим: Сокеты (Sockets) Удаленные вызовы процедур (Remote Procedure Calls – RPC) Удаленные

Ключевые термины
Send– операция отправки сообщения другому процессу. Receive– операция получения сообщения от другого процесса. Взаимодействующий (совмест

Краткие итоги
Процессы могут быть независимыми друг от друга и взаимодействующими. Преимущества взаимодействующих процессов – совместное использование данных, модульность, ускорение вычислений. Дочерний

Вопросы
Что такое независимый процесс? Что такое взаимодействующие процессы? В чем преимущества взаимодействующих процессов перед независимыми? Что такое подчиненный процес

Упражнения
Реализуйте модель механизма сопроцессов с операциями resume / detach. Реализуйте парадигму производитель – потребитель. Реализуйте набор операций непосредственной коммуникац

Темы для курсовых работ, рефератов, эссе
Обзор механизмов взаимодействия процессов (реферат). Сопроцессы (сопрограммы) в различных системах и их взаимодействие (реферат). Парадигма производитель – потребитель (рефе

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги