Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОСЫ К ЭКЗАМЕНУ ОС.doc
Скачиваний:
11
Добавлен:
23.09.2019
Размер:
612.35 Кб
Скачать

33 Методы решения проблем межпроцессорного взаимодействия с активным ожиданием. Запрещение прерываний, переменные блокировки, строгое чередование.

Запрещение прерываний, в одно процессорных системах простейшим решением является запрет всех прерываний каждым процессом после входа в критическую область и их разрешение сразу же после выхода из критической области. При запрете прерывание не могут осуществляться никакие прерывания по таймеру. Поскольку центральный процессор переключается с одного процесса на другой в результате таймерных или каких-нибудь других прерываний, то при выключенных прерываниях он не сможет переключаться на другой процесс. Поскольку процесс запретил прерывания, он может использовать и обнавлять общую память, не опасаясь вмешательства со стороны другого процесса. Блокирующие переменные. Когда процессу требуется войти в свою критическую область, сначала он проверяет значение блокирующей переменой, если оно равно 0, процесс устанавливает его в 1 и входит в критическуюобласть, если же значение уже равно 1, процесс просто ждёт, пока она не станет равна нулю. Таким образом, нулевое значение означает что в критической области нет ни одного процесса, а 1 означ. Что како то процесс находиться в критической области.

34 Алгоритм Петерсона и команда tsl.

TSL – (Test and Set Lock, то есть проверь и установи блокировку) работает следующим образом. Она считывает содержимое слова памяти Lock в регистр, а по адресу памяти, отведенному для lock, записывает нулевое значение. При этом гарантируется неделимость операций чтения слова и сохранение в нем нового значения – никакой другой процесс не может получить доступ к слову в памяти пока команда не завершит свою работу. Центральный процессор, выполняющий команду TSL, блокирует шину памяти, запрещая другим центральным процессорам доступ к памяти до тех пор, пока не будет выполнена команда.

Алгоритм Петерсона — программный алгоритм взаимного исключения потоков исполнения кода, разработанный Г. Петерсоном в 1981 г. Хотя изначально был сформулирован для 2-х поточного случая, алгоритм может быть обобщён для произвольного количества потоков. Алгоритм условно называется программным, так как не основан на использовании специальных команд процессора для запрета прерываний, блокировки шины памяти и т. д., используются только общие переменные памяти и цикл для ожидания входа в критическую секцию исполняемого кода.

35 Примитивы межпроцессорного взаимодействия. Проблема производителя и потребителя.

В качестве примера применения этих примитивов рассмотрим задачу производителя и потребителя (также известную как задача ограниченного буфера). Два процесса используют общий буфер фиксированного размера. Один из них, производитель, помещает информацию в буфер, а другой, потребитель, извлекает ее

оттуда. (Можно также расширить проблему до т производителей и п потребителей, но мы будем рассматривать только случай с одним производителем и одним потребителем, поскольку такое допущение упрощает решение.) Проблемы возникают в тот момент, когда производителю требуется поместить новую запись в уже заполненный буфер. Решение заключается в блокировании производителя до тех пор, пока потребитель не извлечет как минимум одну запись. Также, если потребителю нужно извлечь запись из буфера и он видит, что буфер пуст, он блокируется до тех пор, пока производитель не поместит что-нибудь в буфер и не активизирует этого потребителя.