Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Активное ожидание — это постоянная проверка значения переменной в ожидании некоторого значения.
Спин-блокировка — это блокировка, использующая активное ожидание.
Часть программы, в которой есть обращение к совместно используемым данным, называется критической областью.
Чтобы избежать вмешательства в критическую область одного процесса при нахождении там другого, необходимо воспользоваться реализациями взаимного исключения:
— запрещение прерываний при входе процесса в критическую область (полезно в режиме ядра, но не в пользовательском режиме);
— переменные блокировки (программное решение: введение дополнительной переменной, которая меняет свое значение в зависимости от состояния процесса; недостаток: возможен неверный вывод о состоянии процесса при переключении от одного процесса к другому);
— строгое чередование (процессы попадают в критические области строго по очереди; недостаток – возможно нарушение третьего условия: процесс, находящийся вне критической области, не может блокировать другие процессы)
— алгоритм Петерсона (Прежде чем обратиться к совместно используемым переменным (то есть перед тем, как войти в критическую область), процесс вызывает процедуру enter_region со своим номером (0 или 1) в качестве параметра. Поэтому процессу при необходимости придется подождать, прежде чем входить в критическую область. После выхода из критической области процесс вызывает процедуру leave_region, чтобы обозначить свой выход и тем самым разрешить другому процессу вход в критическую область)
— Команда TSL
Решение, требующее участия аппаратного обеспечения. Многие компьютеры, особенно разработанные с расчетом на несколько процессоров, имеют команду TSL RX, LOCK
(test and set lock— проверить и заблокировать), которая действует следующим образом. В регистр RX считывается содержимое слова памяти lock, а в ячейке памяти lock сохраняется некоторое ненулевое значение. Гарантируется, что операция считывания слова и сохранения неделима — другой процесс не может обратиться к слову в памяти, пока команда не выполнена. Процессор, выполняющий команду ТSL, блокирует шину памяти, чтобы остальные процессоры не могли обратиться к памяти.
Таким образом, суть представленных методов — перед входом в критическую область процесс проверяет, можно ли это сделать или нет. Если нельзя, то процесс входит в цикл, ожидая возможности войти в критическую область.
Недостатки:
— Неэффективное использование времени процесса
— проблема инверсии приоритета.
Дата публикования: 2015-01-26; Прочитано: 1475 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!