Характеристики системных объектов
Теперь можем, наконец, перечислить основные характеристики всех системных объектов (некоторые из них мы рассмотрим сейчас, а некоторые — в следующих лекциях).
- Системные объекты должны быть явно созданы командой MI "Create".
- Команда "Create" указывает на заданный пользователем шаблон, содержащий атрибуты и данные для объекта. Шаблон содержится в объекте пространстве.
- Атрибуты системного объекта могут быть материализованы.
- Системный объект может быть явно удален.
- Все системные объекты, встречающиеся в некотором контексте, имеют имена. Системный объект может не иметь имени, если на него нет ссылки в библиотеке или файловой системе. Пример — системный объект, используемый исключительно SLIC.
- Адресация системных объектов обеспечивается посредством системных указателей.
- Системные объекты содержат пространство, в котором находятся указатели и данные.
- Системные объекты создаются либо как временные, либо как постоянные. Постоянный объект (persistence) остается в памяти системы, пока не будет явно уничтожен. Временный объект удаляется при всяком выполнении операции IPL (начальная загрузка).
- Временные объекты могут быть помещены в группы доступа — системный объект, позволяющий объединять несколько объектов и работать с ними как с целым.
- Права доступа к системным объектам контролируются аппаратно.
- Использование объекта синхронизируется посредством механизма замков.
Постоянство объекта (часть характеристики 8) требует некоторых дополнительных пояснений. Итак, постоянный объект продолжает существовать в системе, пока не будет специально уничтожен. Присутствуя в памяти, он может легко использоваться совместно разными пользователями. Именно этим AS/400 сильно отличается от других систем, которые требуют располагать разделяемую или предназначенную для длительного хранения информацию в отдельной файловой системе. Позже мы рассмотрим, как одноуровневая память AS/400 поддерживает постоянство объектов.
В будущем постоянство объектов очень пригодится для поддержки объектно-ориентированных баз данных. Необходимо, чтобы объекты продолжали существовать, и после того, как их создатель ушел со сцены. И здесь уникальные возможности постоянства объектов AS/400 дают ей существенные преимущества перед другими ОС, вынужденными прибегать к хранению постоянных объектов в отдельной файловой системе.
Не каждый объект должен быть постоянным, этот параметр задается при его создании. Постоянные объекты требуют дополнительных расходов, так на всем протяжении своего существования используют системные ресурсы. Пример объекта, который имеет смысл создавать как постоянный — область хранения записей базы данных.
Как уже упоминалось, временные объекты исчезают при каждой загрузке системы. В обычной системе области временной памяти связаны с создавшими их заданиями, не могут разделяться пользователями и исчезают, когда задание завершено. В AS/400 вся память, содержит ли она постоянные или временные объекты, может разделяться пользователями и объекты остаются в системе даже после завершения задания. При разработке AS/400 в качестве некоторого, отличного от завершения задания, момента удаления временных объектов была выбрана загрузка системы. Это оказалось удобным, так как снижает накладные расходы. Например, если бы мы разрушали временную библиотеку задания по завершении последнего, то производительность при исполнении остальных заданий несколько снижалась бы. И мы решили перенести накладные расходы на время выполнения загрузки.
Примером временного объекта может служить индекс области данных, обеспечивающий проекцию базы данных: если он создается для выполнения единственного запроса к базе данных, то нет смысла делать его постоянным. Обратите внимание, что постоянный объект может пережить крах системы, иногда объекты и создаются постоянными только для того, чтобы не потерять их в случае сбоя системы. Напротив, если для восстановления системы ее потребуется перезагрузить, то все временные объекты будут потеряны. Внутренние детали обработки системой временных и постоянных объектов будут объяснены далее.
Программные объекты
До сих пор мы рассматривали только системные объекты и их характеристики. Однако в MI есть другие элементы данных, также называемые объектами, но имеющие очень малое сходство с обычными, что создает еще одну терминологическую проблему.
В лекции 4 мы рассмотрели содержимое оригинального шаблона программы MI — последовательность команд и таблицу определения объектов ODT. ODT описывает операнды, используемые программой. В результате неудачного выбора имен проектировщики MI для System/38 называли эти операнды объектами, а точнее программными объектами. Таким образом, двухбайтовое двоичное число считается объектом.
Программные объекты не имеют с системными объектами MI ничего общего, кроме названия. Но так как программный объект очень легко спутать с системным объектом типа "программа", то мы, для простоты, будем с этого момента использовать слово "объект" только для обозначения системных объектов MI.
Внутри системного объекта
Хотя в MI нет концепции памяти, все процессоры AS/400 используют физическую память, включая основную память и диск. Системные объекты, расположенные ниже MI, реализованы как строго определенные структуры, хранящиеся в этой памяти. За создание и управление этими структурами данных отвечает компонент управления объектами в SLIC. Давайте рассмотрим формат этих структур данных и их использование для представления системных объектов MI.
Сегментированная память
Понятия памяти и дискового пространства верны только ниже MI. В отличие от OS/400, SLIC "знает" о наличии этой памяти и работает с нею. Вся основная память и дисковое пространство в AS/400 находятся внутри большого единого адресного пространства, обычно, называемого одноуровневой памятью. Объем этой памяти равен общему числу байтов, на которое может ссылаться 64-разрядный адрес1).
Одноуровневая память — это используемая в AS/400 разновидность виртуальной памяти, обеспечивающая логическое представление памяти, которое не обязательно соответствует ее физической структуре. Достаточно представлять себе одноуровневую память как очень большое адресное пространство, внутри которого все и хранится. Различия между обычными системами виртуальной памяти одноуровневой памятью AS/400 описаны в лекции 8.
Адресное пространство AS/400 логически разделено на блок последовательных байтов, называемых сегментами. В System/38 и первых AS/400 использовалось два размера сегмента: 64К и 16М. 16-мегабайтный сегмент состоял из 256 сегментов по 64К и иногда назывался сегментной группой. При переходе на 64-разрядную адресацию сегменты меньшего размера были исключены, остался только сегмент размером в 16М.
Сегменты не перекрываются и всегда начинаются с границы. Это означает, что 24 младших (самых правых) бита адреса первого байта каждого сегмента размером 16М всегда равны 0. Каждый 16-мегабайтный сегмент уникально задается 40 старшими (самыми левыми) битами 64-разрядного адреса.
Отображение адресного пространства AS/400 на физическую основную память и диски осуществляется компонентом управления памятью SLIC с помощью блоков памяти по 4К, называемых страницами2). Сегмент состоит из целого числа таких страниц, которые не обязательно расположены в физической памяти последовательно.