Кластеры в ОС ОМ
В данном разделе мы будем понимать файл в упрощенном смысле как поименованную область на внешней памяти, состоящей из набора записей данных.
Единицей обмена между программой и ФС является экземпляр записи. За одно обращение к ФС можно занести в файл экземпляр записи или извлечь его из файла. Каким образом записи располагаются внутри файла, то есть структура файла, определяется методом доступа к записи в файле (или просто методом доступа к файлу).
Программы, реализующие методы доступа, - это самый верхний уровень взаимодействия ФС с программой пользователя. Совокупность программ доступа к файлу по сути дела реализует операционную среду выполнения программы. От того, каким образом будут реализованы методы доступа к файлам, зависит и решение одной из задач, которую должна решать ФС - обеспечение независимости программ от операционной среды выполннения: программа пользователя, работающая с последовательным файлом, не должна зависеть от того, где файл находится - на дисках, в массовой памяти или на внешней машине. Более того, программа не должна изменяться, если в будущем появится новый тип внешних устройств, на которых можно будет расположить последовательный файл.
Итак, при реализации методов доступа необходимо обеспечить:
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
Из примера видно, что программа состоит из двух разделов. Первый раздел состоит из описания класса и объявления экземпляров кластеров. Второй раздел, в котором сосредоточена вся содержательная работа, - использование кластеров. Оба этих раздела можно разнести и по времени (раздельно транслировать), и по пространству (хранить в разных библиотеках). Во втором разделе - то есть собственно в программе - абстрактный объект выступает как набор процедур.
Раздельность описания, объявления и использования кластеров, а также существование эквивалентных классов дает максимальный эффект использования кластерной техники.
Эквивалентными классами называются такие классы, по которым в результате объявления порождаются экземпляры кластеров с одинаковым набором имен операций и одинаковым набором параметров по соответствующим операциям.
Например, кластер последовательного файла на диске и кластер последовательного файла в массовой памяти являются эквивалентными, так как все они содержат один и тот же набор имен рабочих процедур и одноименные процедуры разных кластеров требуют одинаковые наборы параметров.
Более того, в терминах работы с последовательным файлом можно организовать работу с программой на внешней машине. Интерпретация команды открытия для такого файла есть установление связи, закрытия - разрыв связи. Запись в такой файл - это передача информации программе на внешней машине, чтение - прием информации с внешней машины. Вся информация, необходимая для установления связи (номер внешней машины, имя программы на внешней машине и т.д.) передается в качестве параметров для экземпляра кластера, поскольку в абстрактном последовательном файле такие параметры не предусмотрены в процедуре открытия.
Используя абстрактные объекты, можно писать программы, которые не зависят от внешнего окружения, от реализации других абстрактных объектов.
В ОС ОМ существует возможность объявлять экземпляры внешнего окружения (операционной среды) на языке управления заданиями, тем самым обеспечивая независимость программ от внешней среды.
Итак, предлагаемая кластерная техника позволяет решать поставленные задачи обеспечения инвариантности программы от операционной среды выполнения и представления гибких средств для введения новых методов и новых реализаций уже существующих.