История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Интересное:
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Проблема производителя и потребителя
Проблема производителя и потребителя, также известная как проблема ограниченного буфера, состоит в следующем. Два процесса совместно используют буфер ограниченного размера. Один из них, производитель, помещает данные в этот буфер, а другой, потребитель, считывает их оттуда.
Условия синхронизации:
- производитель должен ждать, если буфер полон;
- потребитель должен ждать, если буфер пуст;
- операции с буфером – критические секции, т.е. работать с буфером может только один процесс.
Ниже приведено решение проблемы производителя и потребителя с использованием семафоров.
#define N 100 /* количество сегментов в буфере */
typedef int semaphore;
semaphore mutex = 1; /* контроль доступа в КС */
semaphore empty = N; /* число пустых сегментов буфера */
semaphore full = 0; /* число полных сегментов буфера */
void producer(void)
{
int item;
while (TRUE) {
item = produce_item();/*создать данные, помещаемые в буфер */
wait(&empty); /* уменьшить счетчик пустых сегментов буфера */
wait(&mutex); /* вход в критическую область */
insert_item(item); /* поместить в буфер новый элемент */
signal(&mutex); /* выход из критической области */
signal(full); /*увеличить счетчик полных сегментов буфера*/
}
}
void consumer(void);
{
int item;
while (TRUE) {
wait(&full); /* уменьшить число полных сегментов буфера */
wait(&mutex); /* вход в критическую область */
item = remove_item(); /* удалить элемент из буфера */
signal(&mutex); /* выход из критичекой области */
signal(&empty); /*увеличить счетчик пустых сегментов буфера*/
consume_item(item); /* обработка элемента */
}
}
Здесь семафор mutex используется для реализации взаимного исключения, то есть для исключения одновременного обращения к буферу двух процессов. Остальные семафоры использованы для синхронизации. Семафоры full и empty необходимы, чтобы гарантировать, что производитель прекращает работу, когда буфер полон, а потребитель прекращает работу, когда буфер пуст.
Можно обобщить задачу на случай m производителей и n потребителей.
Задача о читателях и писателях
Это одна из задач синхронизации, описывающих доступ процессов к разделяемой базе данных. Процессы подразделяются на две категории: читатели никогда не модифицируют базу данных; писатели читают и модифицируют базу данных.
Правила синхронизации следующие:
- читатели могут работать параллельно, если никто из писателей не модифицирует базу данных;
- модифицировать базу может только один писатель и когда никто не читает из базы данных;
- переменные состояния может просматривать и менять только один процесс;
Ниже приведена схема решения данной задачи.
| Читатель | Писатель |
| Ждать, пока закончит работу писатель (если кто-то пишет) | Ждать, пока закончат работу все читатели (если кто-то читает) |
| Читать из базы данных | Модифицировать базу данных |
| При необходимости разбудить ожидающего писателя | При необходимости разбудить ожидающих читателей |
Задача об обедающих философах
Моделирует использование общих ресурсов несколькими процессами. Суть задачи такова. Пять философов сидят за круглым столом. На столе пять тарелок с макаронами и пять вилок по одной между тарелками. Предполагается, что есть надо двумя вилками сразу. Поведение каждого из философов таково: думает – хочет есть (пытается взять две вилки) – ест.
Ограничения:
- философ должен ждать, пока не освободятся две вилки рядом с ним;
- модификация переменных состояния должно выполняться в критической секции.
Задача о спящем парикмахере
Моделирует обслуживание потока запросов по очереди. Клиенты приходят в парикмахерскую и встают в очередь. Парикмахер приглашает и обслуживает клиентов по одному.
Ограничения:
- клиент должен ждать, если есть очередь или парикмахер занят обслуживанием;
- парикмахер спит, если нет клиентов;
- первый клиент будит парикмахера.
Задача о железнодорожном перегоне
Моделирует обмен по полудуплексному каналу связи. Поезда движутся по одноколейному участку дороги в двух направлениях. Необходимо организовать движение таким образом, чтобы избежать столкновения.
Ограничения:
- поезд, подходящий к одноколейному участку дороги должен остановиться, если по нему движется поезд во встречном направлении;
- модификация переменных состояния должно выполняться в критической секции.
Вопросы для самоконтроля
1. Приведите решение задачи производителей и потребителей при помощи семафоров.
2. Какие условия обычно связаны с задачей читателей и писателей?
3. Как решается задача читателей и писателей при помощи семафоров?
|
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!