Читайте также:
|
|
Когда процесс обращается к разделяемым ресурсам, то говорят, что он находится в своем критическом интервале, критическом участке, критической области. Концепция критического интервала была предложена Дейкстра в 1965 году.
Очевидно, необходимо исключать вхождения в критические интервалы всех других процессов, если один из процессов вошел в критический интервал. Их необходимо блокировать через ОС (перевести в состояние "ожидание"). Как только процесс, выполняющий операции критического интервала, выйдет из него, необходимо активизировать все ожидающие процессы. За этим следит ОС.
Все операции, находящиеся в критическом интервале, должны выполняться как неделимая последовательность. Для этого ОС блокирует все прерывания.
Начало и конец критического интервала обеспечиваются командами обращения к ОС через программно-управляемые прерывания. Программно-управляемое прерывание инициируется (возбуждается) выдачей определенной машинной команды, которая в разных ЭВМ называется по-разному (в ЕС ЭВМ - SVC-команда, СМ - экстракод, в микро-ЭВМ - команда int - прерывание). При программировании на Ассемблере эти команды выдают явно. В языках высокого уровня команды программно-управляемого прерывания генерируются соответствующим транслятором неявно для программиста..
При входе в критический интервал ОС сообщается имя разделяемого ресурса с тем, чтобы она выполнила взаимоисключение, связанное только с этим ресурсом. При выходе из критического интервала сообщается через параметры имя этого же ресурса:
нач_крит_уч-ка(имя ресурса) - захват;
кон_крит_уч-ка(имя ресурса) - освобождение.
Реализация этих примитивов может быть различной в разных системах.
На критический интервал, связанный с разделяемым ресурсом, налагаются три требования:
- в любой момент времени только один процесс может находиться внутри критического интервала;
- ни один процесс не может находиться внутри критического интервала бесконечно долго.
- ни один процесс не должен ждать бесконечно долго входа в критический интервал.
Критические интервалы могут вкладываться друг в друга, но таким образом, чтобы избежать тупиковых ситуаций, которые мы рассмотрим позже.
Дата добавления: 2015-10-02; просмотров: 108 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Взаимное исключение процессов | | | Синхронизация процессов |