При работе с традиционными файловыми системами программисты, привыкшие или к общепринятому методу, основанному на управлении, или же к новому, объектно-ориентированному принципу, были обременены неоправданными задачами, связанными с проблемой "промежуточного хранения". Обычный программист, однако, может и не подозревать о значении этой проблемы. Под промежуточным хранилищем мы понимаем использование внешней памяти для хранения промежуточной информации на этапах обработки (например, между проходами компилятора) или между транзакциями (при работе с базой данных). Для того чтобы пролить свет на эту проблему, рассмотрим типичный процесс обработки данных.
Промежуточное хранилище обычно организуется в виде последовательных или индексных файлов данных, соответствующих потокам отдельных значений или потокам записей. На промежуточных шагах выполнения программы для осуществления необходимого анализа, проведения требуемого объединения результатов или же реализации обоих этих требований может потребоваться выборка и перегруппировка этих данных в более тщательно структурированные объекты. Если копии полученных результатов требуется сохранить для дальнейшей обработки, то они должны быть преобразованы из последовательных или индексных файлов в последовательности значений или последовательности записей. (Обеспечение произвольного доступа к записям в файле на самом деле весьма мало упрощает процесс преобразования, если объекты данных содержат объекты в виде подструктур.)
Повторная обработка линеаризованных или проиндексированных данных после одной стадии процесса требует того, чтобы перед повторным использованием или модификацией старых объектов последние создавались заново. В этом случае к издержкам на эти повторные преобразования добавляются дополнительные расходы на обеспечение целостности этих объектов в процессе каждого такого "кругового цикла" преобразования из промежуточной, как правило, не самоопределенной формы, обычно выбираемой для хранения файлов на устройствах внешней памяти, и обратно в эту же форму.
Объектно-ориентированная система предоставляет важную возможность унификации дисциплины организации и формирования файлов совместно с управлением объектами и типами и, следовательно, превращения управления файлами в естественное расширение модели принципов адресации и механизмов защиты операционной системы. Поскольку объекты имеют уникальные идентификаторы, а их время жизни охватывает работу многих пользователей и многих задач, представляется возможным рассматривать объект, сохраняющий свою структуру, идентификатор, тип и другие атрибуты под управлением своего менеджера типа, таким же образом, как рассматриваются и обрабатываются файлы в обычных операционных системах и системах управления базами данных. При таком подходе внешняя память с файлами превращается в простое расширение адресного пространства системы. Такое расширение объектно-ориентированной архитектуры называется файловой системой объектов [52].
Файловая подсистема объектов i432 спланирована как часть операционной системы. Она обеспечивает постоянное хранилище для объектов i432 в "пассивном адресном пространстве" системы. В частности, тип, идентификатор и структура объектов сохраняются как в активном, так и в пассивном пространстве.
Вспомним, что объекты имеют имена, уникальность которых (по крайней мере теоретически) сохраняется и в пространстве и во времени. Имена объектов i432 в пассивном адресном пространстве являются уникальными в полном смысле этого слова. Объект в этом пространстве имеет имя, отличное от любого существующего объекта, любого объекта, который существовал раньше, и любого объекта, который будет существовать в будущем. Находясь в активном адресном пространстве, объект имеет имя, уникальное только в пределах этого пространства. (В активном пространстве не могут одновременно находиться два объекта с одинаковыми именами.) Поскольку диапазон изменения имен в активном адресном пространстве относительно невелик (224) по сравнению с (фактически бесконечным) диапазоном имен в пассивном пространстве, то файловая система объектов поддерживает однозначное отображение этих двух пространств друг в друга. В этом смысле набор имен в активном адресном пространстве используется как подмножество намного большего набора имен пассивного пространства.
Объекты, расположенные во внешней памяти, автоматически пересылаются в активное пространство при обращении к их содержимому. Однако находящиеся в пассивном пространстве объекты, которые необходимо обновить, не требуется переводить в активное пространство, и две или более программы могут обновлять объект данных в пассивном пространстве без нарушения его целостности. При доступе к одному и тому же разделяемому объекту двух или более программ объектная файловая система синхронизирует множественный доступ к этому объекту через внешнее обращение к менеджеру типа данного объекта. Используемая стратегия синхронизации базируется на концепции "атомарных действий" [54-56], она кратко описывается в гл. 10.
Во внешнюю память могут быть помещены не только простые объекты, но и сложные, представляющие собой целую сеть простых объектов, обращаться и извлекать которые можно как одну целостную единицу. Индивидуальные компоненты такой "композиции" адресуются через специальные ссылки, называемые в терминах i432 дескрипторами доступа (Access Descriptors - AD). Взаимосвязи между компонентами одной композиции, например программы или структурированных данных, сохраняются за счет сохранения имеющихся в этих компонентах ссылок вне зависимости от того устройства, на котором располагается данная композиция.
Среди коммерческих систем только две системы имеют объектно-ориентированные файловые службы - System/38 фирмы IBM [31] и Plessey System 250 [22]. [Существовало также несколько исследовательских разработок - одна для системы HYDRA и одна для операционных систем CAP [48].] Архитектуры всех этих систем используют механизм адресации, основанный на концепции возможностей. Система Multics, существующая с 1964 г., частично реализует объектно-ориентированное управление файлами [49]. В этой системе файлы адресуются непосредственно. Они представлены одиночными сегментами переменной длины или линеаризованными массивами таких сегментов, однако отличие между активным и пассивным пространством отсутствует, поэтому возникновение системных сбоев приводит к большим потерям информации. [Точно такая же проблема существует и в системе IBM System/38, в которой объект также находится только в одном пространстве.]
Использование объектно-ориентированной файловой системы обеспечивает программисту гораздо более мощную поддержку, имеющуюся обычно только в системах управления базами данных - системах, которые реализуются на уровне, находящемся над файловой системой, а не непосредственно на ее уровне. Теперь становится понятным, что объектно-ориентированное управление файлами может в ряде ситуаций заменить управление базами данных. Сочетание объектно-ориентированного программистского подхода и объектно-ориентированного управления файлами рассматривалось разработчиками системы i432 как тот критический шаг, который должны совершить программисты, желающие осуществить скачок в задаче повышения продуктивности своей работы. Предоставляя, с одной стороны, возможность объектно-базированного программирования и, с другой стороны, объектно-базированное управление файлами, система i432 вполне может быть первой широко доступной системой, которая позволит привести в реальность потенциальные возможности программиста по осуществлению качественного скачка в повышении производительности.