WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Test-and-set — простая неразрывная (атомарная) процессорная инструкция, которая копирует значение переменной в регистр, и устанавливает некое новое значение. Во время исполнения данной инструкции процессор не может прервать её выполнение и переключиться на выполнение другого потока. Если используется многопроцессорная архитектура, то, пока один процессор выполняет эту инструкцию с ячейкой памяти, другие процессоры не могут получить доступ к этой ячейке, что может достигаться путём кратковременного блокирования шины памяти.

Пример:

  enter_critical_section:
  TSL REGISTER, LOCK // Значение переменной LOCK копируется в регистр
                        // и устанавливается в 1.
     CMP REGISTER, #0   // Старое значение сравнивается с нулем.
     JNE enter_critical_section // Если оно ненулевое, значит кто-то уже вошел в критическую секцию и заблокировал её.
    
     RET                // Блокировка выполнена успешно, возвращаемся в вызывающую функцию.

При этом разблокирование ячейки производится обычной процедурой MOV:

  leave_critical_section:
     MOV LOCK, #0   // Разблокирование переменной. 
     RET            // Возврат в вызывающую функцию.

См. также

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии