Операционные системы. Курс лекций



Аппаратная поддержка взаимоисключений - часть 2


Ее действие заключается в том, что процессор присваивает значение второго операнда первому, после чего второму операнду присваивается значение 1. Команда TS является неделимой операцией, так как между ее началом и концом не могут выполняться никакие другие операции. Чтобы использовать команду TS для решения проблемы критического интервала, с ней связывают переменную, которая является общей для всех процессов, использующих некий критический ресурс. Данная переменная будет принимать единичное значение, если какой-либо из взаимодействующих процессов находится в своем критическом интервале.

С каждым процессом связана своя локальная переменная, которая принимает значение 1, если данный процесс хочет войти в свой критический интервал. Если общая переменная содержит значение «свободно», ей присваивается значение «занято» и процесс входит в критическую секцию. Если же общая переменная содержит значение «занято», процесс выполняет команду перехода назад для повторного выполнения команды TS, либо выполняется примитив «ждать», блокирующий процесс для освобождения структуры данных.

При помощи команды TS возможна синхронизация только двух процессов.

Современные ЦП поддерживают либо атомарную операцию CAS (compare and swap), либо атомарную операцию LL/SC (linked loading/save condition). Предназначены для операций взаимного исключения. Команда считывает значение флага и помещает его в регистр назначения, а затем очищает флаг. Если исходное значение флага было 0, это говорит о том, что структура данных используется другим процессом. Соответственно процесс не может обращаться к общим данным и может цикле проверять значение флага, пока не обнаружит, что структура данных свободна.

Если же исходное значение флага было отличным от 0, это означает, что структура данных свободна, тогда процесс входит в критическую секцию, очищает флаг, указывающий другим процессам, что структура данных занята. Данная операция поддерживается процессами PR RISC и совместима с архитектурами процессоров RISC.

В микропроцессорах, начиная с i8086 также используются специальные команды BTC, BTS и BTR.

Подход, основанный на использовании специальных машинных инструкций для осуществления взаимных исключений имеет ряд преимуществ:

1) этот подход очень простой, поэтому легко проверяем;

2)    применим к любому количеству процессов;

3)    может использоваться для поддержки множества критических разделов, каждый из которых может быть определен при помощи своей собственной переменной.

Недостатки:

1)    используется активное ожидание, т.е. процессы, находящиеся в ожидании доступа к критическому разделу, продолжают потреблять процессорное время;

2)    возможно голодание, т.е. выбор ожидающего процесса произволен и может оказаться, что какой-то из процессов будет ожидать входа в критический раздел бесконечно;

3)    возможна взаимоблокировка.

 




Начало  Назад  Вперед