Команда TSL
TSL rx,LOCK
Эта команда действует следующим образом.
Она считывает содержимое слова памяти LOCK в регистр RX, а затем сохраняет по адресу LOCK ненулевое значение. Операция чтения слова и сохранения в него значения гарантированно является неделимой — ни один другой процесс не может получить доступ к слову до окончания исполнения команды. Процессор, исполняющий команду TSL, блокирует для этой цели шину памяти.Чтобы применить команду TSL, мы воспользуемся общедоступной переменной LOCK, координирующей доступ к общей памяти. Когда значение LOCK равно 0, любой процесс может установить ее в 1 с помощью TSL, а затем выполнить чтение или запись общей памяти. Закончив действие, процесс снова устанавливает LOCK в 0 при помощи обычной команды MOVE.
Итак, как же использовать команду TSL для реализации взаимного исключения? Решение приведено в листинге 2.3.
Здесь представлена подпрограмма из четырех команд, написанная на некотором обобщенном (но типичном) ассемблере. Первая команда копирует старое значение LOCK в регистр и затем устанавливает значение переменной в 1. Потом старое значение сравнивается с нулем. Если оно ненулевое, значит, блокировка уже была произведена, и проверка начинается сначала. Рано или поздно значение окажется нулевым (это означает, что процесс, находившийся в критической секции, покинул ее), и подпрограмма вернет управление в вызвавшую программу, установив блокировку. Сброс блокировки не представляет собой ничего сложного — просто в переменную LOCK помещается 0. Специальной команды процессора не требуется.Листинг 2.3, Вход и выход из критической секции с помощью команды ТвЬ |
Одно из решений проблемы критических секций теперь очевидно. Прежде чем попасть в критическую секцию, процесс вызывает процедуру enter_region, которая выполняет активное ожидание вплоть до снятия блокировки, затем она устанавливает блокировку и возвращает управление. По выходу из критической секции процесс вызывает процедуру leave_region, помещающую 0 в переменную LOCK. Как и во всех остальных решениях проблемы критической секции, для корректной работы процесс должен вызывать эти процедуры своевременно, в противном случае обойти взаимное исключение не удастся.
2.2.4.
Еще по теме Команда TSL:
- Определение команды.
- § 4.5. Деятельность команд в организации
- Признаки команды.
- Пример настройки и реабилитации в футбольной команде
- Работа с другими командами
- Четыре шага по созданию эффективной команды
- ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
- Кто становится лидером команды
- Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
- Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
- Проведение интервью
- Алистэр Коуберн. Каждому проекту своя методология, 1999
- ESTP и ESFP Экстраверты-сенсорики