Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Вводится понятия двух примитивов.
sleep - системный запрос, в результате которого вызывающий процесс блокируется, пока его не запустит другой процесс.
wakeup - системный запрос, в результате которого блокированный процесс будет запущен.
Применение примитивов
Основное преимущество - это отсутствие активного ожидания.
Проблема заключается в следующем, если спулер пуст, то wakeup срабатывает в пустую.
Проблема переполненного буфера (проблема производителя и потребителя)
Рассмотрим два процесса, которые совместно используют буфер ограниченного размера, один процесс пишет в буфер, другой считывает данные.
Чтобы первый процесс не писал, когда буфер полный, а второй не считывал, когда он пуст, вводится переменная count для подсчета количества элементов в буфере.
Проблема переполненного буфера
В этой ситуации оба процесса могут попасть в состояние ожидания, если пропадет сигнал активации.
Алгоритм такой ситуации:
Дата публикования: 2014-11-04; Прочитано: 330 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!