Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы операционных систем.doc
Скачиваний:
282
Добавлен:
01.05.2014
Размер:
2.22 Mб
Скачать

Команда Swap (обменять значения)

Выполнение команды Swap, обменивающей два значения, находящихся в памяти, можно проиллюстрировать следующей функцией:

void Swap (int *a, int *b){

int tmp = *a;

*a = *b;

*b = tmp;

}

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

shared int lock = 0;

int key;

while (some condition) {

key = 1;

do Swap(&lock,&key);

while (key);

critical section

lock = 0;

remainder section

}

Заключение

Последовательное выполнение некоторых действий, направленных на достижение определенной цели, называется активностью.Активностисостоят изатомарных операций, выполняемых неразрывно, как единичное целое. При исполнении несколькихактивностейв псевдопараллельном режимеатомарные операцииразличныхактивностеймогут перемешиваться между собой с соблюдением порядка следования внутриактивностей. Это явление получило названиеinterleaving (чередование). Если результаты выполнения несколькихактивностейне зависят от варианта чередования, то такойнаборактивностейназывается детерминированным. В противном случае он носит названиенедетерминированного. Существует достаточноеусловие Бернстайнадля определения детерминированности набораактивностей, но оно накладывает очень жесткие ограничения на набор, требуя практически не взаимодействующихактивностей. Пронедетерминированный наборактивностейговорят, что он имеет race condition (условие гонки, состязания). Устранение race condition возможно при ограничении допустимых вариантов чередованийатомарных операцийс помощью синхронизации поведенияактивностей. Участкиактивностей, выполнение которых может привести к race condition, называюткритическими участками. Необходимым условием для устранения race condition является организациявзаимоисключениянакритических участках: внутри соответствующихкритических участковне может одновременно находиться более однойактивности.

Для эффективных программных алгоритмов устранения race condition помимо условия взаимоисключениятребуется выполнение следующих условий: алгоритмы не используют специальных команд процессора для организациивзаимоисключений, алгоритмы ничего не знают о скоростях выполнения процессов, алгоритмы удовлетворяютусловиям прогрессаиограниченного ожидания. Все эти условия выполняются валгоритме Петерсонадля двух процессов иалгоритме булочной– для нескольких процессов.

Применение специальных команд процессора, выполняющих ряд действий как атомарную операцию, –Test-and-Set,Swap– позволяет существенно упростить алгоритмы синхронизации процессов.

6. Лекция: Механизмы синхронизации

Рассмотренные в конце предыдущей лекции алгоритмы хотя и являются корректными, но достаточно громоздки и не обладают элегантностью. Более того, процедура ожидания входа в критический участок предполагает достаточно длительное вращение процесса в пустом цикле, то есть напрасную трату драгоценного времени процессора. Существуют и другие серьезные недостатки у алгоритмов, построенных средствами обычных языков программирования. Допустим, что в вычислительной системе находятся два взаимодействующих процесса: один из них – H– с высоким приоритетом, другой –L– с низким приоритетом. Пусть планировщик устроен так, что процесс с высоким приоритетом вытесняет низкоприоритетный процесс всякий раз, когда он готов к исполнению, и занимает процессор на все время своего CPU burst (если не появится процесс с еще большим приоритетом). Тогда в случае, если процессLнаходится в своей критической секции, а процессH, получив процессор, подошел ко входу в критическую область, мы получаем тупиковую ситуацию. ПроцессHне может войти в критическую область, находясь в цикле, а процессLне получает управления, чтобы покинуть критический участок.

Для того чтобы не допустить возникновения подобных проблем, были разработаны различные механизмы синхронизацииболее высокого уровня. Описанию ряда из них –семафоров,мониторови сообщений – и посвящена данная лекция.