Операционные системы супер-ЭВМ

       

Атомарные шаги


Работу пользователя с ФС можно представить в виде последо­вательности атомарных шагов. Атомарность шага состоит в том, что видимое другим пользователем состояние ФС меняется только при успешном завершении атомарного шага. Другие варианты окон­чания шага - "мягкие аварии", тупики - не должны менять видимое другим пользователем остояние объектов ФС. Внутри атомарного шага разрешены все операции над объектами ФС: модификация фай­лов, уничтожение файлов, создание новых объектов - файлов и справочников.

Кроме того, пользователь может сам дать команду ВОЗВРАТ, по которой произойдет возврат состояния объектов ФС к началу атомарного шага.

Для поддержки механизма атомарных шагов ФС представляет пользователю дополнительно три команды: НАЧАЛО, КОНЕЦ, ВОЗВРАТ.

Командой НАЧАЛО начинается атомарный шаг, который будет длиться либо до команды КОНЕЦ, либо будет закончен командой ВОЗВРАТ, по которой из объектов ФС будут изъяты все изменения, занесенные с начала атомарного шага.

Данный механизм служит основой для реализации контрольных точек в ОС ОМ. Задание, выполняемое в ОС ОМ, может целиком выполняться в рамках одного атомарного шага; отдельные шаги задания могут быть приравнены к атомарным шагам или шаг задания может быть разбит на последовательность атомарных шагов.

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

Механизм атомарных шагов в ФС ОС ОМ реализуется следующим образом.

При открытии файла на модификацию внутри атомарного шага на диске или через "окно" в массовой памяти ФС выполняет следу­ющие действия:

·         копирует файл на другой диск;

·         устанавливает таблицу отображения файла на диск в задаче ОБМЕНМД на новое место расположения файла;


·         оставляет в справочнике на диске и в массовой памяти исходную таблицу отображения.

При модификации файла запросы на расширение удовлетворяют­ся посредстовм текущей таблицы распределения и фиксируются в отображении файла в задаче ОБМЕНМД. До закрытия файла работа атомарных шагов ничем не отличается от обычных. Различия начи­нают проявляться с момента закрытия.

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

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

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


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

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

После отображения таблицы распределения памяти на диск отображается последовательно все справочники, снабженные уни­кальными идентификаторами. Все эти справочники перечислены в области согласованности. Отображение происходит сначала в один дубль справочника, затем во второй.

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

Создание файлов сводится к модификации файла с пустой исходной таблицей отображения. Более интересно уничтожение.

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

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

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


Содержание раздела