А.Н. Томилин - Операционные системы супер-ЭВМ (1156254), страница 5
Текст из файла (страница 5)
Если авария произойдет во время выполнения атомарного шага либо при обработке конца шага до отображения всех справочников в первый дубль, стандартные действия по инициации ФС, описанные в предыдущем разделе, восстановят состояние файлов, в котором они находились на момент начала шага. Если авария происходит после отображения всех справочников в первый дубль, состояние файлов будет новым.
Создание файлов сводится к модификации файла с пустой исходной таблицей отображения. Более интересно уничтожение.
После выполнения уничтожения файла внутри атомарного шага вычеркивание элемента из справочника, относящегося к уничтожаемому файлу, не производится, и синхрозахват на данный файл сохраняется. Память в соответствии с дублирующей таблицей отображения освобождается с коррекцией таблицы распределения. Дублирующая таблица отображения становится пустой. Ситуация, когда при попытке создания файла в справочнике уже присутствует элемент с указанным именем, не всегда рассматривается как коллизия имен. Осуществляется дополнительная проверка: есть ли монопольный синхрозахват на этот файл и каково состояние таблицы-дубля отображения. Если синхрозахват есть и от того же атомарного шага, а таблица-дубль отображения нулевая, то не возникнет коллизия имен. Во всех остальных случаях возникает коллизия.
По такой же схеме, но более эффективно обрабатываются файлы в массовой памяти. Для таких файлов не требуется начальное создание дубля. После закрытия файла он отображается на новое место на диске. При последующих открытиях файл будет браться с этого нового места, при закрытиях - заноситься туда же. По концу атомарного шага исходное состояние файла будет заменено новым.
Поскольку основной режим обработки фалов - перенос файлов в массовую память, то предлагаемый метод не имеет накладных расходов, влияющих на пропускную способность файловой системы.
3.3.9. Контроль прав доступа.
Контроль прав доступа предназначен для защиты справочников и файлов от несанкционированного доступа.
При поиске объекта задача АРХИВ контролирует права доступа ко всем справочникам, находящимся на пути к файлу, и к самому файлу. Права доступа задаются при создании файла или справочника и хранятся в элементе справочника, описывающем этот объект. Права доступа к корню хранятся в задаче АРХИВ.
По отношению к каждому объекту, вообще говоря, разными правами обладают три разные категории пользователей: пользователь-владелец объекта, группа пользователей и все остальные. Для каждой категории может быть установлен контроль по трем операциям: по чтению, модификации, поиску. Операция поиска применима только к справочнику. Эта операция используется при просмотре последовательности справочников в процессе поиска объектов архива по именам. Контроль в таком режиме, оставаясь достаточно простым, позволяет строить довольно гибкие схемы защиты, например, разрешая доступ к отдельным файлам для пользователей группы, владелец может запретить распечатывать свой справочник, тем самым держа в секрете имена всех файлов, которыми он располагает.
Права по созданию и ликвидации объектов, смена прав доступа, занесения или исключения синонимов имеют те пользователи, которым разрешена модификация справочника, в котором располагаются перечисленнные объекты. Права на модификацию атрибутов файла, открытых пользователям, имеют те, кому разрешено модифицировать сам файл (в этом смысле поле атрибутов файла является продолжением тела файла, распространенного в элемент справочника).
Режим работы с файлом - чтение или модификация задается параметром при открытии файла. Со справочником работа ведется явными командами создания, уничтожения и т.п.
3.3.10. Обнаружение тупиков.
Несколько задач, одновременно выполняемых в ОС ОМ, могут попасть в тупик из-за синхронизации по файлам, нехватки массовой внешней памяти, либо из-за отсутствия того и другого.
Использование дисковой памяти регламентируется бюджетом.
В задаче АРХИВ периодически запускается процедура определения тупика. Эта процедура анализирует состояние очередей к массовой памяти, файлам, общий объем массовой памяти, которой владеют задачи, и обнаруживает тупик, если он существует.
Тупик может быть полным (конфликт по файлам) или частичным (конфликт из-за нехватки массовой памяти).
Обнаружив тупик и его вид, задача АРХИВ сообщает об этом задаче ИНИЦИАТОР-ТЕРМИНАТОР. Кроме того, в случае частичного тупика сообщается относительная стоимость его разрешения - то есть время, требуемое для выталкивания файлов из массовой памяти на диски.
ИНИЦИАТОР-ТЕРМИНАТОР принимает решение о разрешении тупика на основании его вида, стоимости разрешения, приоритетов задач.
Разрешением частичного тупика может быть либо выталкивание файлов из массовой памяти на диски, либо откат к контрольной точке. Выбор между этими альтернативами делается, исходя из стоимости выталкивания и наработанного времени задачи.
Разрешением полного тупика может быть только откат к контрольной точке.
3.4. Реализация методов доступа
3.4.1. Кластеры в ОС ОМ.
В данном разделе мы будем понимать файл в упрощенном смысле как поименованную область на внешней памяти, состоящей из набора записей данных.
Единицей обмена между программой и ФС является экземпляр записи. За одно обращение к ФС можно занести в файл экземпляр записи или извлечь его из файла. Каким образом записи располагаются внутри файла, то есть структура файла, определяется методом доступа к записи в файле (или просто методом доступа к файлу).
Программы, реализующие методы доступа, - это самый верхний уровень взаимодействия ФС с программой пользователя. Совокупность программ доступа к файлу по сути дела реализует операционную среду выполнения программы. От того, каким образом будут реализованы методы доступа к файлам, зависит и решение одной из задач, которую должна решать ФС - обеспечение независимости программ от операционной среды выполннения: программа пользователя, работающая с последовательным файлом, не должна зависеть от того, где файл находится - на дисках, в массовой памяти или на внешней машине. Более того, программа не должна изменяться, если в будущем появится новый тип внешних устройств, на которых можно будет расположить последовательный файл.
Итак, при реализации методов доступа необходимо обеспечить:
1) независимость программ от операционной среды выполнения;
2) гибкие средства для введения новых методов в систему и новых реализаций уже существующих методов.
Для решения поставленных проблем в систему программирования ОМ (СП ОМ) был введен механизм абстракций.
Любая достаточно сложная программная система может рассматриваться как совокупность объектов (элементов структуры), из которых она состоит, и связей между этими элементами. Каждый
объект по отношению к структуре, элементом которой он является,
характеризуется набором операций, которые над ним можно выполнять в рамках этой структуры.
Каждый элемент, в свою очередь, может иметь аналогичную структуру, то есть может быть также представлен в виде определенной внутренней структуры, образованной более простыми объектами и их взаимосвязями в рамках рассматриваемого объекта.
Внутренняя структура представления объекта существенна только для выполнения операций над ним и скрыта этими операциями от других объектов исходной структуры. Если в исходной структуре данный объект заменить на другой с тем же набором операций, то структура сохранит свои свойства, то есть будет в определенном смысле эквивалентной первоначальной.
При проектировании программы, которая будет выполняться в рамках ОС ОМ, все внешнее окружение программы рассматривается как совокупность абстрактных объектов, каждый из которых представляется набором процедур, связанных между собой и имеющих специфицированные интерфейсы. Такие объекты называются в СП модулями-классами.
Конкретный объект определяется в момент компоновки программы из модулей и называется экземпляром кластера или просто кластером. Реализация кластера скрыта от использующей его программы.
Представляемый механизм абстракций поддерживается двумя компонентами СП ОМ - ассемблером и загрузчиком.
Механизм абстракций, использующийся для реализации операционного окружения программы, открыт для использования и в самих программах пользователя. Этот механизм абстракций согласуется с идеями структурного программирования, ключевым понятием которого является абстракция - сохранение лишь существенных свойств объекта.
Кластер объединяет набор операций, реализующих некоторый объект, и содержит внутри себя всю информацию, характеризующую данный объект - локальную память и локальные кластеры (то есть кластеры, которые недоступны вне модулей, в которых они определены). Для программ, использующих данный кластер, он выступает как набор операций над объектом данного класса.
Для того, чтобы иметь возможность работать с кластером, его необходимо описать. Для описания кластера в систему программирования ОМ введено понятие - модуль-класс. Модуль-класс позволяет вводить в программу новую абстракцию. Описание нового класса аналогично описанию нового типа: абстрактный объект описан, но еще не порожден, работать с ним еще нельзя.
Например, программа может содержать следующее описание:
СLАSS ПФ
ЕNТRУ ОТК,ЗАК,ЗП,ЧТ
.
.
ОТК LAB
.
.
ЗАК LAB
.
.
ЗП LAB
.
.
ЧТ LAB
.
.
ЕND
СLАSS ПФ вводит абстрактное понятие ПФ - последовательный файл. Внутри класса содержатся структуры данных, реализующие последовательный файл (указатели, буфера), а также множество операций над ним: ОТК - открытие файла, ЗАК - закрытие файла, ЗП - запись в файл, ЧТ - чтение.
После того, как описаны такие абстрактные объекты, в программе можно использовать нововведенное понятие для работы с конкретным объектом - экземпляром кластера. Для этого необходимо объявить экземпляр кластера. Для объявления нового экземпляра используется конструкция DЕFINЕ.
Например, конструкция ПФ DЕFINЕ Ф1 объявляет экземпляр кластера с именем Ф1. После порождения экземпляра становятся определенными операции над кластером:
/Ф1/ОТК - открытие кластера Ф1
/Ф1/ЗАК - закрытие кластера Ф1
/Ф1/ЗП - запись в кластер Ф1
/Ф1/ЧТ - чтение из кластера Ф1
В программе можно определить произвольное число экземпляров некоторого класса. Например:
СLАSS ПФ описание класса
.
.
.
ЕND
ПФ DЕFINЕ Ф1 объявление двух экземпляров
ПФ DЕFINЕ Ф2 Ф1 и Ф2 по классу ПФ.
IDENT ПРОГ
.
.
R /Ф1/ОТК открытие кластера Ф1
R /Ф2/ОТК открытие кластера Ф2
.
.
.
R /Ф1/ЧТ чтение из файла Ф1
R /Ф2/ЗП запись в файл Ф2
.
.
.
R /Ф1/ЗАК закрытие файлов
R /Ф2/ЗАК
.
.
END
Из примера видно, что программа состоит из двух разделов. Первый раздел состоит из описания класса и объявления экземпляров кластеров. Второй раздел, в котором сосредоточена вся содержательная работа, - использование кластеров. Оба этих раздела можно разнести и по времени (раздельно транслировать), и по пространству (хранить в разных библиотеках). Во втором разделе - то есть собственно в программе - абстрактный объект выступает как набор процедур.
Раздельность описания, объявления и использования кластеров, а также существование эквивалентных классов дает максимальный эффект использования кластерной техники.
Эквивалентными классами называются такие классы, по которым в результате объявления порождаются экземпляры кластеров с одинаковым набором имен операций и одинаковым набором параметров по соответствующим операциям.
Например, кластер последовательного файла на диске и кластер последовательного файла в массовой памяти являются эквивалентными, так как все они содержат один и тот же набор имен рабочих процедур и одноименные процедуры разных кластеров требуют одинаковые наборы параметров.
Более того, в терминах работы с последовательным файлом можно организовать работу с программой на внешней машине. Интерпретация команды открытия для такого файла есть установление связи, закрытия - разрыв связи. Запись в такой файл - это передача информации программе на внешней машине, чтение - прием информации с внешней машины. Вся информация, необходимая для установления связи (номер внешней машины, имя программы на внешней машине и т.д.) передается в качестве параметров для экземпляра кластера, поскольку в абстрактном последовательном файле такие параметры не предусмотрены в процедуре открытия.
Используя абстрактные объекты, можно писать программы, которые не зависят от внешнего окружения, от реализации других абстрактных объектов.
В ОС ОМ существует возможность объявлять экземпляры внешнего окружения (операционной среды) на языке управления заданиями, тем самым обеспечивая независимость программ от внешней среды.
Итак, предлагаемая кластерная техника позволяет решать поставленные задачи обеспечения инвариантности программы от операционной среды выполнения и представления гибких средств для введения новых методов и новых реализаций уже существующих.
3.4.2. Реализация методов доступа в процессоре массовой памяти.
Особенностью рассматриваемой ФС является наличие программируемого процессора массовой памяти.
Основное назначение МП - сглаживание дисбаланса между скоростью процессора и темпом обмена с дисковой памятью, особенно существенным при непоследовательных методах доступа - прямых, индексных, ключевых, библиотечных и т.п. В частности, ОС располагает в массовой памяти справочники, поскольку поиск элемента справочника по имени элемента реализуется ключевым методом доступа. Максимальный выигрыш от наличия массовой памяти получат задачи, обрабатывающие большие массивы информации, с произвольным доступом к элементам массива - по строкам, столбцам, диагоналям и т.п.