Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Реализация взаимоисключения на аппаратном уровне

Иерархический принцип построения ОС. Простая и расширенная машины | Виртуальные машины | Цели и задачи мультипрограммирования. | Понятие ядра ОС | Понятия процесса и потока | Алгоритмы с применением прерываний процессов и без них. | Понятие ресурса. Оперативно перераспределяемые и оперативно неперераспределяемые ресурсы | Распределение ресурсов и управление ресурсами как функция ОС | Понятие взаимоисключения нескольких процессов и критические участки | Алгоритмы взаимоисключения Деккера и Петерсона. |


Читайте также:
  1. III. Контроль ошибок на канальном уровне.
  2. III. Описание Уровней Программы
  3. IV. Взаимодействие друг с другом на уровне (М) (С) и (Д)
  4. IV.Реализация государственной семейной политики на региональном уровне
  5. quot;У меня было достаточно ошибок, чтобы удержать свое самомнение на разумном уровне." М.Отуотер.
  6. Алгоритмы взаимоисключения Деккера и Петерсона.
  7. Арест и реализация имущества должника-организации

При реализации взаимоисключения на аппаратном уровне ис­пользуются специальные команды ЭВМ, позволяющие единым ак­том (без прерываний) выполнить проверку значения заданной пере­менной (ячейки памяти) и её установку в заданное значение. Этого оказывается достаточно, чтобы гарантировать простой механизм вза­имоисключения для произвольного количества процессов.

В качестве примера укажем на инструкцию процессора Intel 8086 XCHG. Инструкция позволяет обменять значения двух своих операн­дов. Механизм взаимоисключения с применением этой инструкции может базироваться на следующей последовательности команд.

mov ах,1
wait:

xchg ах,flag

test ах

jnz wait

; критическая секция

mov flag,О

Взаимоисключение реализуется с использованием переменной-флага flag. В начальный момент времени переменная flag равна 0, то есть критическая секция свободна.

Для входа в критическую секцию процесс выполняет предвари­тельную запись признака занятости критической секции (значение 1) в регистр ах, после чего обменивает значение регистра ах и пе­ременной flag. Поскольку обмен выполняется одной непрерываемой командой, ни один другой процесс не может повлиять на результат обмена.

Теперь достаточно проверить значение регистра ах. Если оно равно 0, то критическая секция была свободна, и наш процесс уже её занял, записав 1 в переменную flag. Процесс может войти в кри­тическую секцию.

Если же значение регистра ах равно 1, то критическая секция уже занята, и процесс должен ждать её освобождения. При этом наша операция обмена не испортила значение переменной flag.

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

Но у этого подхода имеются и недостатки:

- непереносимость;

- ожидание разрешения входа в критическую секцию выполняет­ся в активном цикле, то есть перерасходуется ресурс процессорного времени;

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

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


Дата добавления: 2015-07-20; просмотров: 36 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Мониторы ресурсов и реализация взаимоисключения на мониторах| Тупики и методы борьбы с ними

mybiblioteka.su - 2015-2024 год. (0.006 сек.)