Сетевые вычисления и Интернет сделали тему объектных технологий бестселлером компьютерных новостей. Распространение таких языков программирования, как Java и С++, заставляет разработчиков приложений изменить свое отношение к традициям и признать преимущества новых объектноориентированных языков.
Подобно другим технологиям, которые мы считаем новыми, объекты используются
в программировании уже более 30 лет. Впервые они появились в конце 60-х годов
в языках типа
ОС работают с аппаратными и программными объектами, такими как устройства ввода-вывода и программы. Использование объектов в ОС выглядит совершенно естественным. О создании объектноориентированной ОС говорят многие фирмы, такие как Microsoft, Apple, Novell/USL (UNIX Systems Laboratory) и Sun Microsystems, однако, лишь немногие из них смогли реализовать свои планы. Одна из таких фирм — Next, уже поставляющая на рынок объектноориентированную ОС под названием NextStep.
Есть, конечно, и другая объектноориентированная ОС. С момента появления
System/38 мы строим ОС (CPF и OS/400) по объектноориентированной
Иногда говорят, что AS/400 это не объектноориентированная система, а система
на основе объектов (objectbased). Различие этих двух терминов имеет смысл при
обсуждении языков программирования. Например, есть языки на основе объектов,
такие как Ada, и объектноориентированные языки, такие как Smalltalk-80. Гради Буч
(Grady Booch) определил различия между этими двумя типами языков. По Бучу, в
языке на основе объектов отсутствует
В упрощенном виде объект — это просто контейнер, внутри которого находятся пользовательские и системные структуры данных. Объект инкапсулирован, что означает (как мы условились ранее) невозможность заглянуть внутрь него. Система, построенная на основе объектной модели независима от аппаратуры. Первопричиной использования объектов в System/38 было желание инкапсулировать детали, чтобы позже их можно было изменять без влияния на прикладные программы.
Еще одно достоинство объектов — целостность. Оригинальная System/3 была
байтовой машиной (то есть все в ней располагалось на границе байта), а ее команды
содержали однобайтовый
Это вызывало проблему, если в программе непреднамеренно происходил переход в область данных: процессор мог продолжать выбирать байты данных и интерпретировать их как команды. Такая программа могла исполняться долгое время, сея хаос внутри системы. Ликвидировать последствия таких ошибок было весьма сложно.
В этом плане System/3, ничем не отличалась от большинства других вычислительных систем того времени. Например, в обычной системе цепочка байтов может быть интерпретирована, практически, как угодно. Можно взять байты из одной части программы и перемножить их с байтами из другой ее части. Процессор "не волнует", имеет ли смысл такая операция. Он работает с байтами, а не с тем, что они представляют.
Итак, мы были очень обеспокоены проблемами целостности, и сделали все, что бы таковых не возникало в AS/400. Команды в этой системе могут работать только с теми объектами, для которых предназначены. Некоторые универсальные команды, такие как "Создать объект", применимы ко всем объектам, другие — работают только с объектами определенных типов. Таким образом, в AS/400 нельзя использовать объект не по назначению, как в обычной системе. В результате целостность значительно повышается.
На эту проблему можно взглянуть и с другой стороны. В большинстве ОС, все, что
находится в постоянной памяти, считается файлом (в MSDOS или
В System/38 объекты были как в ОС, так и в MI. Определением этих объектов и выбором
имен для них занимались две разные группы. Одна разрабатывала объекты
CPF, (которая в AS/400 была переименована в
Хорошо, что иногда между объектом OS/400 и объектом MI соотношение один к
одному, тогда это тот же самый объект. Все усложняется, когда это разные объекты.
Все объекты OS/400 состоят из одного или нескольких
Пример, иллюстрирующий это положение, мы рассмотрим в следующем разделе. А теперь, прежде чем идти дальше, я должен внести ясность еще в одну область.
Иногда, объекты OS/400 и
Названия же для объектов ОС выбирала другая группа, предпочитавшая под ход Томаса Эдисона (Thomas Edison): лучше даже не вполне подходящее, но уже знакомое покупателям имя. Когда Эдисон продвигал идеи использования электроэнергии, он решил выбирать названия, знакомые каждому, использующему природный газ. Он говорил, что к дому подводятся электрические магистрали (main), подобно газовым или водопроводным магистралям, хотя main — это труба или канал, а электроны, обычно, попадают в дом не по трубе. Он также называл нагревательный элемент кухонной плиты электрической горелкой, чтобы электрическая плита казалась чем-то знакомым людям, имевшим дело с газовыми горелками (скажем честно — электричество в нагревающем элементе не "горит"). Наша группа разработчиков ОС понравилась бы Эдисону.
Несколько типов объектов имеются и в OS/400, и в MI. Типы объектов OS/400 перечислены
в таблице 5.1. Для сравнения, в таблице 5.2 приведены
| Графический набор символов | Служебная программа |
| Документ | Описание сетевого интерфейса |
| Идеографическая таблица символов | Описание сессии |
| Идеографическая таблица сортировки | Описание подсистемы |
| Идеографический словарь | Словарь правописания |
| Индекс поиска информации | Таблица |
| Класс | Библиотека |
| Класс описания сервиса | Описание линии |
| Команда | Определение меню |
| Область данных | Определение группы панели |
| Описание задания | Пользовательский индекс |
| Описание контроллера | |
| Описание редактирования | Программа |
| Описание устройства | Модуль |
| Очередь данных | Определение продукта |
| Пользовательский профиль | |
| Папка | Справочная таблица трансляции кода |
| Словарь данных | Описание режима |
| Список документов | Выходная очередь |
| Список конфигурации | Файл сообщения |
| Список прав | Журнал |
| Таблица управления формами | Описание машины S/36 |
| Файл | Определение запроса |
| Формат диаграммы | Приемник журнала |
| лок транзакции | Описатель режима |
| Группа доступа | Индекс |
| Индекс пространства данных | Очередь |
| Класс описания сервиса | Описание логического устройства |
| Контекст | Модуль |
| Курсор | Пространство управления процессом |
| Описание контроллера | Описатель сети |
| Пространство |
Профиль пользователя |
| Пространство данных | Программа (3 подтипа) |
| Пространство цепочки байтов | Пространство журнала |
| Словарь | Пространство |
| Список прав | Порт журнала |
Некоторые объекты OS/400 из таблицы 5.1 полностью соответствуют системным объектам MI из таблицы 5.2, при этом имена объекта в двух разных наборах могут совпадать, а могут и не совпадать. Пример совпадения имен — "программа", несовпадения — "библиотека" и "контекст".
Другие объекты OS/400 относятся к системным объектам MI как один ко многим.
Посмотрите на пример на рисунке 5.1: здесь файл базы данных OS/400 состоит из
пяти
(рис 5.1) Объекты файла базы данных OS/400На рисунке можно видеть набор отдельных компонентов. Один из
Найти объект в базе данных оригинальной System/38 было очень легко, так как все они были поименованы: Вы просто отыскивали нужное имя в библиотеке. Библиотека давала возможность организации объектов в группы и обеспечивала их поименный поиск. Эта структура была перенесена и в AS/400.
В OS/400 библиотека — объект, который используется для поиска других объектов в базе данных. В отличие от многоуровневой иерархии каталогов в ОС ПК и Unix, библиотека OS/400 имеет одноуровневую иерархию. Для иллюстрации рассмотрим структуру имен объектов OS/400.
Чтобы найти объект OS/400 требуется знать имена библиотеки и объекта (то есть,
путь "Библиотека/Объект"), а также его тип (одно и то же имя могут иметь несколько
объектов, но все они — объекты разного типа). Другими словами, в библиотеке
может содержаться программа
Библиотека не может ссылаться на другие библиотеки, иначе была бы нарушена одноуровневая иерархия "Библиотека/Объект". Из этого правила есть лишь одно исключение — специальная библиотека с именем QSYS, в которой, и только в кото рой, находятся некоторые специальные объекты OS/400 например, профили пользо вателей, определяющие права последних, и объекты конфигурации вводавывода, используемые для выполнения соответствующих операций. Подробно эти объекты рассматриваются в последующих лекциях.
Структура библиотеки OS/400 показана на рисунке 5.2. В данном примере QSYS содержит профиль пользователя (JOHN), библиотеку (LIB1) и описание устройства (DEVD1). Библиотека LIB1 содержит файл базы данных (DB), очередь данных (DQ) и выходную очередь (OQ).
(рис 5.2) Структура библиотеки OS/400Позже мы увидим, что с каждым заданием в системе
Разделяемые папки были введены в AS/400, главным образом, для поддержки функций
Библиотечный способ хранения документов дает пользователям возможность рассматривать эту систему как электронную картотеку, содержащую папки. Средства управления позволяют организовывать объекты, помещая их в папки. Папки могут содержать другие папки и поддерживают интерактивный поиск.
Разделяемые папки и в PC
Доступ к файлам ПК, хранящимся на AS/400, осуществляется так же, как если бы они хранились локально на ПК. Файлы могут пересылаться с ПК и назад, при этом автоматически выполняются преобразования данных. Если ПК поддерживает не сколько сессий, то он может взаимодействовать с несколькими системами AS/400, с несколькими заданиями на одной AS/400 или с любой комбинацией этих вариантов.
IBM несколько раз модифицировала PC Support, но он быстро "старел" и не соответствовал потребностям новых клиент/серверных приложений. Кроме того, PC Support поддерживал не все ОС ПК, нужные заказчикам. Хотя он и позволял использовать DOS, DOS с расширенной памятью и OS/2, но (что важно!) не мог поддерживать Microsoft Windows.
PC Support требовал радикальной замены, и IBM предложила своим заказчикам совершенно новый продукт. Client Access for OS/400 обеспечивает мощную платформу для распределенных клиент/серверных вычислений. Для привлечения новых заказчиков потребовалось также внести изменения и в файловую систему AS/400. Библиотеки для обслуживания базы данных и папки для Office и файлов ПК в целом справлялись с задачей, но им не помешали бы дополнительные возможности. В результате, была создана новая файловая система.
Что если объединить в одну структуру файловую систему ПК, файловую систему Unix, а также библиотечную систему и разделяемые папки OS/400? Тогда приложение, написанное для использования файловой системы ПК или Unix, могло бы напрямую обращаться к данным, хранящимся на AS/400.
Такая интегрированная файловая система появилась в V3R1 и была названа интегрированной файловой системой IFS (integrated file system). Она объединяет все файловые системы на AS/400 общим интерфейсом и общим набором правил. Более того, любой пользователь Client Access, предпочитающий новейшие версии Windows или OS/2, может на своей рабочей станции в графическом режиме работать с библиотеками, папками и всеми новыми файловыми системами.
Первой и основной проблемой было — определить конструкцию такой файловой системы. Ведь ее отдельные части не предназначались для функционирования в единой структуре. Решение оказалось проще, чем опасались сначала.
Посмотрите еще раз на рисунок 5.2 и обратите внимание на то, что структура библиотеки OS/400 — это, по сути, подмножество структуры, используемой в ОС ПК, таких как DOS и OS/2. Пусть в мире ПК используются другие названия, но структура-то та же! ОС ПК имеют дело с файлами, а не с объектами. Библиотека там называется каталогом, внутри которого хранятся файлы. В отличие от библиотечной структуры OS/400, в каталогах ПК могут находиться другие каталоги, обычно называемые подкаталогами. Таким образом, имена файлов ПК имеют многоуровневую иерархию, в противоположность одноуровневой структуре библиотек OS/400. Имя файла ПК может иметь вид КАТ1\КАТ2\...\КАТn\ИМЯФАЙЛА. За исключением обратной косой черты (\), это — надмножество структуры имен библиотеки OS/400.
Файловая структура Unix — также надмножество библиотечной структуры OS/400. Вспомните, что объект OS/400 может находиться только в одной библиотеке, иначе говоря, к любому объекту OS/400 имеется единственный путь. Файловая система Unix поддерживает наличие множественных путей к одному и тому же объекту.
Для объединения всех этих файловых систем мы решили взять единый корень из
ПК-подобной файловой системы и поместить в него все остальные. На рисунке 5.3
показано, как видится вся AS/400 и ее файловые системы клиенту Windows. AS/400
представлена как один диск, на котором находятся каталоги в стиле ПК, каталоги
в стиле Unix, библиотеки OS/400 (QSYS.LIB), разделяемые папки OS/400 (QDLS) и еще
несколько файловых систем поддержки новых приложений. В число последних
входят: система, полностью совместимая с POSIX (QOpenSys); файловая система
для пользователей LANServer (QLANSrv); файловая система для Novell
Соглашение об именах в IFS основано на стандарте ПК. Имя имеет вид КАТ1\КАТ2\...\КАТn\ИМЯФАЙЛА. К радости тех, кто не может запомнить, когда использовать прямую (/), а когда обратную (\) косую черту, новое соглашение допускает обе. Вы даже можете использовать разные разделители в одном и том же имени.
В соответствии со стандартом POSIX, длина имен файлов и каталогов увеличена. На AS/400 имена в каталогах IFS хранятся в формате Unicode, который, будучи международным стандартом, поддерживает использование разных языков, включая двух-байтовые наборы символов, используемые в ряде стран. Все RISC-системы теперь позволяют хранить информацию в базе данных в формате Unicode.
IFS дает возможность пользователю рассматривать файл, хранящийся на AS/400, как расширение его собственной файловой системы. Пользователи Unix считают, что они имеют дело с файловой системой Unix, а пользователи ПК (см. рисунок 5.3) — что это файлы ПК. К тому же, если оба пользователя могут работать с одними и теми же данными, отпадает необходимость копирования этих данных. Те, кто привык к ПК или к AS/400 продолжают использовать QDLS и QSYS.LIB соответственно, а новые пользователи могут работать со своими приложениями с помощью любой из поддерживаемых файловых систем. Пользователям ПК и Unix даже не требуется изучать CL — язык команд AS/400. Они могут применять любые команды и утилиты для DOS, Windows или Unix.
(рис 5.3) Интегрированная файловая система с точки зрения Windows-клиентаНельзя забывать, что главная задача IFS — обеспечение доступа к данным. Поэтому
либо формат данных должен быть изначально совместим с приложением, которое
их запрашивает, либо данные должны быть преобразованы соответствующим
образом. OS/400 поддерживает большинство таких преобразований, например,
между кодировкой
Поддержка Unicode в базе данных RISCсистем дает возможность разработчикам приложений использовать универсальный формат данных на разных платформах. При этом отпадает необходимость специальных версий программ для стран, где языки требуют двухбайтового представления. Приложение может быть использоваться по всему миру.
Недостаточно просто найти объект. Чтобы получить к нему доступ или модифицировать
объект, пользовательской или системной программе необходимы некоторые
средства доступа. Для
OS/400 отвечает за управление своими объектами, каждый из которых состоит из
Доступ к системному объекту осуществляется посредством системного указателя,
который, занимая 16 байтов памяти, содержит адрес
Системный указатель может также содержать сведения о типе операций, которые выполнимы над объектом. Обычно, такая информация называется полномочиями (authority). Указатель, содержащий адрес объекта и полномочия, называется возможностью (capability). System/38 использует адресацию на базе возможностей, все системные указатели содержат как адрес, так и полномочия. В AS/400 способ предоставления пользователям полномочий по работе с объектами был изменен.
Причина изменений — забота о защищенности системы. Если полномочия хранятся в указателе, то пользователь, обладающий указателем, обладает и полномочиями. Мало того, он даже может передать указатель или его копии другому пользователю.
Предположим, мы хотим дать пользователю право выполнения одиночной операции
над объектом, то есть предоставить программе пользователя
Для ограничения полномочий пользователя и повышения степени защищенности IBM добавила в AS/400 методы предоставления временных полномочий. Одновременно, мы удалили полномочия из указателей всех пользовательских программ, оставив их только для указателей, используемых ОС в системном состоянии (подробности — в лекции 7).
Так что говорить об AS/400 как о системе с адресацией на базе возможностей
неправильно. За исключением только что указанного случая, такой
Системный указатель считается разрешенным, если содержит прямой адрес системного
объекта. Указатель, содержащий символический адрес, называется неразрешенным.
Символический адрес используется для
На рисунке 5.4 показан процесс разрешения системного указателя по команде
"
(рис 5.4) Разрешение системного указателяЗатем выполняется тройная проверка. Прежде всего, проверяется тип объекта,
чтобы гарантировать корректный возврат объекта; затем, есть ли у пользователя права,
указанные в команде "
Если результаты тройной проверки удовлетворительны, то в неразрешенный системный
указатель записывается адрес
Системный указатель обеспечивает доступ к системному объекту, но при выполнении
некоторых операций нужно работать с данными, содержащимися внутри таких
объектов. Для этого используются другие типы указателей. Но прежде чем рассказать
о них, я хочу остановиться на внутренней структуре
Итак,
Необходимость отдельной пространственной части в объекте объясняется способом
представления памяти в MI. Вспомните, что для поддержания независимости от
нижележащей технологии, в MI нет понятия памяти в традиционном смысле; только
объекты и ничего кроме них. Между тем, указатели и данные пользователей должны
где-то храниться. Место для этого - пространственная часть
На рисунке 5.5. Вы можете видеть два системных объекта, каждый из которых
имеет функциональную и пространственную части. Пространственная часть может
содержать как указатели, так и данные. На рисунке пространственная часть второго
объекта содержит системный указатель на первый
(рис 5.5) Системные объектыТак как все
Пространственный указатель очень похож на системный. Он имеет длину 16 байтов
и содержит адрес. Отличие в том, что адрес из пространственного указателя указывает
на некоторый байт гдето в пространственной части
Другое важное различие между двумя типами указателей состоит в операциях с адресом, которые каждый из них может выполнять. Адрес в пространственном указателе может быть изменен программой MI так, чтобы указывать на другой байт в том же пространстве. Адрес в системном указателе лишь указывает на начало объекта и изменить его нельзя. Пользователь, имеющий соответствующие права, может с помощью системного указателя получить пространственный указатель на объект. Второй объект, показанный на рисунке 5.5, также содержит пространственный указатель. Рисунок иллюстрирует, как указатель такого типа предоставляет доступ к байтовому пространству первого объекта.
В дополнение к системным и пространственным, в MI есть еще четыре типа указателей. Указатель данных аналогичен пространственному, но содержит описание типа данных, что позволяет рассматривать цепочку байтов внутри пространства как данные любого типа. В качестве аналогии можно привести указатель языка С. Указатель команд служит для определения места команды в последовательности и используется для выполнения переходов.
Четыре рассмотренных типа указателя (системный, пространственный, данных и команд) присутствовали в первом варианте System/38. Позднее для обеспечения доступа к внутренней памяти была добавлена специальная версия пространственного указателя - машинный пространственный указатель. В AS/400 с появлением ILE был добавлен новый процедурный указатель. Процедурные указатели используются в операциях вызова/возврата, рассмотренных в лекции 4.
Теперь можем, наконец, перечислить основные характеристики всех
Постоянство объекта (часть характеристики 8) требует некоторых дополнительных пояснений. Итак, постоянный объект продолжает существовать в системе, пока не будет специально уничтожен. Присутствуя в памяти, он может легко использоваться совместно разными пользователями. Именно этим AS/400 сильно отличается от других систем, которые требуют располагать разделяемую или предназначенную для длительного хранения информацию в отдельной файловой системе. Позже мы рассмотрим, как одноуровневая память AS/400 поддерживает постоянство объектов.
В будущем постоянство объектов очень пригодится для поддержки объектно-ориентированных баз данных. Необходимо, чтобы объекты продолжали существовать, и после того, как их создатель ушел со сцены. И здесь уникальные возможности постоянства объектов AS/400 дают ей существенные преимущества перед другими ОС, вынужденными прибегать к хранению постоянных объектов в отдельной файловой системе.
Не каждый объект должен быть постоянным, этот параметр задается при его создании.
Постоянные объекты требуют
Как уже упоминалось, временные объекты исчезают при каждой загрузке системы. В обычной системе области временной памяти связаны с создавшими их заданиями, не могут разделяться пользователями и исчезают, когда задание завершено. В AS/400 вся память, содержит ли она постоянные или временные объекты, может разделяться пользователями и объекты остаются в системе даже после завершения задания. При разработке AS/400 в качестве некоторого, отличного от завершения задания, момента удаления временных объектов была выбрана загрузка системы. Это оказалось удобным, так как снижает накладные расходы. Например, если бы мы разрушали временную библиотеку задания по завершении последнего, то производительность при исполнении остальных заданий несколько снижалась бы. И мы решили перенести накладные расходы на время выполнения загрузки.
Примером временного объекта может служить индекс области данных, обеспечивающий проекцию базы данных: если он создается для выполнения единственного запроса к базе данных, то нет смысла делать его постоянным. Обратите внимание, что постоянный объект может пережить крах системы, иногда объекты и создаются постоянными только для того, чтобы не потерять их в случае сбоя системы. Напротив, если для восстановления системы ее потребуется перезагрузить, то все временные объекты будут потеряны. Внутренние детали обработки системой временных и постоянных объектов будут объяснены далее.
До сих пор мы рассматривали только
В лекции 4 мы рассмотрели содержимое оригинального шаблона программы MI — последовательность команд и таблицу определения объектов ODT. ODT описывает операнды, используемые программой. В результате неудачного выбора имен проектировщики MI для System/38 называли эти операнды объектами, а точнее программными объектами. Таким образом, двухбайтовое двоичное число считается объектом.
Программные объекты не имеют с
Хотя в MI нет концепции памяти, все процессоры AS/400 используют физическую
память, включая основную память и диск.
Понятия памяти и дискового пространства верны только ниже MI. В отличие от OS/400,
Одноуровневая память — это используемая в AS/400 разновидность виртуальной
памяти, обеспечивающая логическое представление памяти, которое не обязательно
соответствует ее
Адресное пространство AS/400 логически разделено на блок последовательных байтов, называемых сегментами. В System/38 и первых AS/400 использовалось два размера сегмента: 64К и 16М. 16-мегабайтный сегмент состоял из 256 сегментов по 64К и иногда назывался сегментной группой. При переходе на 64-разрядную адресацию сегменты меньшего размера были исключены, остался только сегмент размером в 16М.
Сегменты не перекрываются и всегда начинаются с границы. Это означает, что 24 младших (самых правых) бита адреса первого байта каждого сегмента размером 16М всегда равны 0. Каждый 16-мегабайтный сегмент уникально задается 40 старшими (самыми левыми) битами 64-разрядного адреса.
Отображение адресного пространства AS/400 на физическую основную память
и диски осуществляется компонентом управления памятью
На рисунке 5.6 изображен формат
(рис 5.6) Структура системного объектаКаждый тип объекта содержит свойства, присущие только ему:
После трех заголовков следуют компоненты, составляющие данный объект: например,
за специфическим заголовком программы размещается последовательность
команд. Так как все
Типов
Как мы уже говорили,
На рисунке 5.7 показан
(рис 5.7) Многосегментные объектыВыделение сегментов происходит при создании
(рис 5.8) Создание объектаДля отражения наличия нового объекта обновляются различные справочники,
поддерживаемые

Теперь, после рассмотрения структуры

Заголовок сегмента содержит следующую информацию:
Последние два адреса не следует путать с системным указателем и пространственным
указателем на
Байт типа определяет, что это за сегмент. Есть две категории типов сегментов:
входящие в состав объектов MI, и используемые только
Мы уже рассмотрели два типа сегментов, входящих в состав
Примерно 40 типов сегментов используются только
Заголовок сегмента содержит несколько битов флагов, задающих его характеристики. Три наиболее важных флага — существования, авторасширения и наличия тегов. Бит существования указывает, постоянный это сегмент или временный. Постоянный сегмент остается в системе до тех пор, пока не будет явно удален, тогда как временный исчезает при следующей загрузке системы.
При установленном бите авторасширения компонент управления памятью будет распределять сегменту дисковые страницы всякий раз, когда это понадобится. В заголовке сегмента имеется поле, содержащее число дисковых страниц, распределенных для сегмента. Если бит авторасширения сброшен, то сегмент никогда не вырастет сверх своего начального размера. Кстати, в этом случае компонент управления памятью пытается разместить весь сегмент в непрерывной области на диске. Если же бит включен, то сегмент, скорее всего, будет состоять из несмежных страниц диска. Таким образом, отключение данного бита может повысить производительность за счет предварительного распределения всех страниц.
Бит наличия тегов указывает на присутствие в сегменте указателей MI. В лекции 2
мы рассматривали расширения архитектуры
Два оставшихся поля заголовка сегмента представляют собой адреса: первый — базового сегмента, второй — следующего вторичного сегмента, которым для системного объекта обычно является адрес ассоциированного пространства. Эти два адреса позволяют связать друг с другом сегменты многосегментного объекта.
Обратите внимание, что адреса, используемые ниже MI в заголовках и где-либо еще — 64-разрядные аппаратные. В MI адреса всегда содержатся внутри указателя и занимают 128 бит (16 байтов). Указатели защищают хранящиеся в них адреса от несанкционированного изменения и использования, а также помогают обеспечить независимость MI от технологии. Ниже MI нет ни такой защиты, ни аппаратной независимости. Именно по этой причине все пользователи MI, включая саму OS/400, не допускаются ниже уровня MI.
Заголовок ЕРА содержится в базовом сегменте всякого
Биты подвешенности и поврежденности объекта определяют его состояние. Подвешенным
считается объект, у которого доступны только заголовки, а содержимого
не существует. Предположим, что владелец
При разрушении постоянного объекта его адресное пространство повторно не
используется, что устраняет необходимость поиска всех указателей на удаленный
объект, чтобы пометить их как недействительные. Это снимает также проблемы защиты
и целостности, которые возникают в тех случаях, когда на место удаленного
объекта распределяется новый, а у какогонибудь пользователя сохранился указатель
на старый объект. В других системах применяются сложные схемы "
Можно выделить два вида повреждения объекта: жесткое и мягкое. Жесткое означает, что объект невозможно использовать по назначению — он поврежден безвозвратно, его лучше удалить. В случае мягкого повреждения из объекта все же можно извлечь некоторые данные. При обнаружении такого повреждения OS/400 начинает процесс восстановления.
Бит поврежденности используется для индикации проблем с объектами в MI. Один
из основных
Другие биты заголовка ЕРА указывают на наличие группового доступа к данному объекту, на выполнение трассировки объекта и участие его в транзакции. Подробнее эти атрибуты будут рассмотрены в лекции 6.
Для идентификации объекта в заголовке ЕРА зарезервировано три поля. Одно из
них содержит тип объекта, а другое — подтип. Тип объекта — один из типов системных
объектов MI. Поле подтипа определяется пользователем, при этом программисты
OS/400 рассматриваются как пользователи
Атрибуты пространства указывают, является ли размер пространства постоянным или переменным, каково начальное заполнение пространства (было ли оно очищено или обнулено), а также размер пространства. Поле общего размера объекта содержит размер всех сегментов объекта. Номер версии и время создания позволяют определить, когда был создан объект.
Некоторые поля заголовка ЕРА содержат адреса. Наиболее важны из них: адрес пользовательского профиля владельца и создателя, адрес контекста, содержащего имя объекта, адрес группы доступа (если объект входит в нее), и адрес специфического заголовка объекта. Заголовок ЕРА содержит и другую информацию, а также адреса, используемые компонентами системы, которые еще будут обсуждаться.
На рисунке 5.9 приведено четыре примера
Пример объекта, занимающего два сегмента — независимый индекс, обычно называемый
просто индексом. Его основное назначение — поддержка пользовательского
индекса OS/400. Базовый сегмент индекса содержит заголовки сегмента и ЕРА,
заголовок (специфический) индекса и
Кроме того, на рисунке 5.9 показаны два примера объектов, занимающих три сегмента.
(рис 5.9) Примеры объектовПервый из них — программа. Базовый сегмент программы содержит заголовки сегмента и ЕРА, заголовок (специфический) программы, последовательность команд и код инициализации программы. Второй сегмент занят ассоциированным пространством, содержащим пользовательские данные для программы. Третий — это сегмент таблицы определения материализации MDT (materialization definition table), содержащий шаблон и карту объектов программы, необходимые для материализации программы. При удалении пользователем шаблона программы, третий сегмент исчезает, и программа занимает только два сегмента.
Последний объект на рисунке — индекс области данных. Как всегда, базовый сегмент
содержит заголовки сегмента и ЕРА, заголовок (специфический) индекса области
данных, альтернативную таблицу сортировки для этого индекса, таблицы индекса
и
Объекты предоставляют средства управления и защиты системных ресурсов AS/400. Правила именования и адресации практически всех элементов системы привязаны к объектам. То же самое можно сказать и о защите. Объекты также используются для эффективного разделения информации между пользователями системы. Благодаря инкапсуляции и строгому определению набора возможных операций над объекта ми, в AS/400 обеспечен такой уровень целостности и независимости от технологий, о котором нельзя и помыслить в других системах.
Объекты — основа AS/400. Они не были добавлены поверх существующей системы, как это часто бывает. Объекты были частью AS/400 с самого начала.
Многие из объектов, представленных в этой лекции, используются компонентами системы, описанными в оставшейся части книги. В следующей лекции, мы рассмотрим интегрированную базу данных AS/400. В состав этой базы данных входят многие объекты, с которыми мы уже познакомились.
Сетевые вычисления и Интернет сделали тему объектных технологий бестселлером компьютерных новостей. Распространение таких языков программирования, как Java и С++, заставляет разработчиков приложений изменить свое отношение к традициям и признать преимущества новых объектноориентированных языков.
Подобно другим технологиям, которые мы считаем новыми, объекты используются
в программировании уже более 30 лет. Впервые они появились в конце 60-х годов
в языках типа
ОС работают с аппаратными и программными объектами, такими как устройства ввода-вывода и программы. Использование объектов в ОС выглядит совершенно естественным. О создании объектноориентированной ОС говорят многие фирмы, такие как Microsoft, Apple, Novell/USL (UNIX Systems Laboratory) и Sun Microsystems, однако, лишь немногие из них смогли реализовать свои планы. Одна из таких фирм — Next, уже поставляющая на рынок объектноориентированную ОС под названием NextStep.
Есть, конечно, и другая объектноориентированная ОС. С момента появления
System/38 мы строим ОС (CPF и OS/400) по объектноориентированной
Иногда говорят, что AS/400 это не объектноориентированная система, а система
на основе объектов (objectbased). Различие этих двух терминов имеет смысл при
обсуждении языков программирования. Например, есть языки на основе объектов,
такие как Ada, и объектноориентированные языки, такие как Smalltalk-80. Гради Буч
(Grady Booch) определил различия между этими двумя типами языков. По Бучу, в
языке на основе объектов отсутствует
В упрощенном виде объект — это просто контейнер, внутри которого находятся пользовательские и системные структуры данных. Объект инкапсулирован, что означает (как мы условились ранее) невозможность заглянуть внутрь него. Система, построенная на основе объектной модели независима от аппаратуры. Первопричиной использования объектов в System/38 было желание инкапсулировать детали, чтобы позже их можно было изменять без влияния на прикладные программы.
Еще одно достоинство объектов — целостность. Оригинальная System/3 была
байтовой машиной (то есть все в ней располагалось на границе байта), а ее команды
содержали однобайтовый
Это вызывало проблему, если в программе непреднамеренно происходил переход в область данных: процессор мог продолжать выбирать байты данных и интерпретировать их как команды. Такая программа могла исполняться долгое время, сея хаос внутри системы. Ликвидировать последствия таких ошибок было весьма сложно.
В этом плане System/3, ничем не отличалась от большинства других вычислительных систем того времени. Например, в обычной системе цепочка байтов может быть интерпретирована, практически, как угодно. Можно взять байты из одной части программы и перемножить их с байтами из другой ее части. Процессор "не волнует", имеет ли смысл такая операция. Он работает с байтами, а не с тем, что они представляют.
Итак, мы были очень обеспокоены проблемами целостности, и сделали все, что бы таковых не возникало в AS/400. Команды в этой системе могут работать только с теми объектами, для которых предназначены. Некоторые универсальные команды, такие как "Создать объект", применимы ко всем объектам, другие — работают только с объектами определенных типов. Таким образом, в AS/400 нельзя использовать объект не по назначению, как в обычной системе. В результате целостность значительно повышается.
На эту проблему можно взглянуть и с другой стороны. В большинстве ОС, все, что
находится в постоянной памяти, считается файлом (в MSDOS или
В System/38 объекты были как в ОС, так и в MI. Определением этих объектов и выбором
имен для них занимались две разные группы. Одна разрабатывала объекты
CPF, (которая в AS/400 была переименована в
Хорошо, что иногда между объектом OS/400 и объектом MI соотношение один к
одному, тогда это тот же самый объект. Все усложняется, когда это разные объекты.
Все объекты OS/400 состоят из одного или нескольких
Пример, иллюстрирующий это положение, мы рассмотрим в следующем разделе. А теперь, прежде чем идти дальше, я должен внести ясность еще в одну область.
Иногда, объекты OS/400 и
Названия же для объектов ОС выбирала другая группа, предпочитавшая под ход Томаса Эдисона (Thomas Edison): лучше даже не вполне подходящее, но уже знакомое покупателям имя. Когда Эдисон продвигал идеи использования электроэнергии, он решил выбирать названия, знакомые каждому, использующему природный газ. Он говорил, что к дому подводятся электрические магистрали (main), подобно газовым или водопроводным магистралям, хотя main — это труба или канал, а электроны, обычно, попадают в дом не по трубе. Он также называл нагревательный элемент кухонной плиты электрической горелкой, чтобы электрическая плита казалась чем-то знакомым людям, имевшим дело с газовыми горелками (скажем честно — электричество в нагревающем элементе не "горит"). Наша группа разработчиков ОС понравилась бы Эдисону.
Несколько типов объектов имеются и в OS/400, и в MI. Типы объектов OS/400 перечислены
в таблице 5.1. Для сравнения, в таблице 5.2 приведены
| Графический набор символов | Служебная программа |
| Документ | Описание сетевого интерфейса |
| Идеографическая таблица символов | Описание сессии |
| Идеографическая таблица сортировки | Описание подсистемы |
| Идеографический словарь | Словарь правописания |
| Индекс поиска информации | Таблица |
| Класс | Библиотека |
| Класс описания сервиса | Описание линии |
| Команда | Определение меню |
| Область данных | Определение группы панели |
| Описание задания | Пользовательский индекс |
| Описание контроллера | |
| Описание редактирования | Программа |
| Описание устройства | Модуль |
| Очередь данных | Определение продукта |
| Пользовательский профиль | |
| Папка | Справочная таблица трансляции кода |
| Словарь данных | Описание режима |
| Список документов | Выходная очередь |
| Список конфигурации | Файл сообщения |
| Список прав | Журнал |
| Таблица управления формами | Описание машины S/36 |
| Файл | Определение запроса |
| Формат диаграммы | Приемник журнала |
| лок транзакции | Описатель режима |
| Группа доступа | Индекс |
| Индекс пространства данных | Очередь |
| Класс описания сервиса | Описание логического устройства |
| Контекст | Модуль |
| Курсор | Пространство управления процессом |
| Описание контроллера | Описатель сети |
| Пространство |
Профиль пользователя |
| Пространство данных | Программа (3 подтипа) |
| Пространство цепочки байтов | Пространство журнала |
| Словарь | Пространство |
| Список прав | Порт журнала |
Некоторые объекты OS/400 из таблицы 5.1 полностью соответствуют системным объектам MI из таблицы 5.2, при этом имена объекта в двух разных наборах могут совпадать, а могут и не совпадать. Пример совпадения имен — "программа", несовпадения — "библиотека" и "контекст".
Другие объекты OS/400 относятся к системным объектам MI как один ко многим.
Посмотрите на пример на рисунке 5.1: здесь файл базы данных OS/400 состоит из
пяти
(рис 5.1) Объекты файла базы данных OS/400На рисунке можно видеть набор отдельных компонентов. Один из
Найти объект в базе данных оригинальной System/38 было очень легко, так как все они были поименованы: Вы просто отыскивали нужное имя в библиотеке. Библиотека давала возможность организации объектов в группы и обеспечивала их поименный поиск. Эта структура была перенесена и в AS/400.
В OS/400 библиотека — объект, который используется для поиска других объектов в базе данных. В отличие от многоуровневой иерархии каталогов в ОС ПК и Unix, библиотека OS/400 имеет одноуровневую иерархию. Для иллюстрации рассмотрим структуру имен объектов OS/400.
Чтобы найти объект OS/400 требуется знать имена библиотеки и объекта (то есть,
путь "Библиотека/Объект"), а также его тип (одно и то же имя могут иметь несколько
объектов, но все они — объекты разного типа). Другими словами, в библиотеке
может содержаться программа
Библиотека не может ссылаться на другие библиотеки, иначе была бы нарушена одноуровневая иерархия "Библиотека/Объект". Из этого правила есть лишь одно исключение — специальная библиотека с именем QSYS, в которой, и только в кото рой, находятся некоторые специальные объекты OS/400 например, профили пользо вателей, определяющие права последних, и объекты конфигурации вводавывода, используемые для выполнения соответствующих операций. Подробно эти объекты рассматриваются в последующих лекциях.
Структура библиотеки OS/400 показана на рисунке 5.2. В данном примере QSYS содержит профиль пользователя (JOHN), библиотеку (LIB1) и описание устройства (DEVD1). Библиотека LIB1 содержит файл базы данных (DB), очередь данных (DQ) и выходную очередь (OQ).
(рис 5.2) Структура библиотеки OS/400Позже мы увидим, что с каждым заданием в системе
Разделяемые папки были введены в AS/400, главным образом, для поддержки функций
Библиотечный способ хранения документов дает пользователям возможность рассматривать эту систему как электронную картотеку, содержащую папки. Средства управления позволяют организовывать объекты, помещая их в папки. Папки могут содержать другие папки и поддерживают интерактивный поиск.
Разделяемые папки и в PC
Доступ к файлам ПК, хранящимся на AS/400, осуществляется так же, как если бы они хранились локально на ПК. Файлы могут пересылаться с ПК и назад, при этом автоматически выполняются преобразования данных. Если ПК поддерживает не сколько сессий, то он может взаимодействовать с несколькими системами AS/400, с несколькими заданиями на одной AS/400 или с любой комбинацией этих вариантов.
IBM несколько раз модифицировала PC Support, но он быстро "старел" и не соответствовал потребностям новых клиент/серверных приложений. Кроме того, PC Support поддерживал не все ОС ПК, нужные заказчикам. Хотя он и позволял использовать DOS, DOS с расширенной памятью и OS/2, но (что важно!) не мог поддерживать Microsoft Windows.
PC Support требовал радикальной замены, и IBM предложила своим заказчикам совершенно новый продукт. Client Access for OS/400 обеспечивает мощную платформу для распределенных клиент/серверных вычислений. Для привлечения новых заказчиков потребовалось также внести изменения и в файловую систему AS/400. Библиотеки для обслуживания базы данных и папки для Office и файлов ПК в целом справлялись с задачей, но им не помешали бы дополнительные возможности. В результате, была создана новая файловая система.
Что если объединить в одну структуру файловую систему ПК, файловую систему Unix, а также библиотечную систему и разделяемые папки OS/400? Тогда приложение, написанное для использования файловой системы ПК или Unix, могло бы напрямую обращаться к данным, хранящимся на AS/400.
Такая интегрированная файловая система появилась в V3R1 и была названа интегрированной файловой системой IFS (integrated file system). Она объединяет все файловые системы на AS/400 общим интерфейсом и общим набором правил. Более того, любой пользователь Client Access, предпочитающий новейшие версии Windows или OS/2, может на своей рабочей станции в графическом режиме работать с библиотеками, папками и всеми новыми файловыми системами.
Первой и основной проблемой было — определить конструкцию такой файловой системы. Ведь ее отдельные части не предназначались для функционирования в единой структуре. Решение оказалось проще, чем опасались сначала.
Посмотрите еще раз на рисунок 5.2 и обратите внимание на то, что структура библиотеки OS/400 — это, по сути, подмножество структуры, используемой в ОС ПК, таких как DOS и OS/2. Пусть в мире ПК используются другие названия, но структура-то та же! ОС ПК имеют дело с файлами, а не с объектами. Библиотека там называется каталогом, внутри которого хранятся файлы. В отличие от библиотечной структуры OS/400, в каталогах ПК могут находиться другие каталоги, обычно называемые подкаталогами. Таким образом, имена файлов ПК имеют многоуровневую иерархию, в противоположность одноуровневой структуре библиотек OS/400. Имя файла ПК может иметь вид КАТ1\КАТ2\...\КАТn\ИМЯФАЙЛА. За исключением обратной косой черты (\), это — надмножество структуры имен библиотеки OS/400.
Файловая структура Unix — также надмножество библиотечной структуры OS/400. Вспомните, что объект OS/400 может находиться только в одной библиотеке, иначе говоря, к любому объекту OS/400 имеется единственный путь. Файловая система Unix поддерживает наличие множественных путей к одному и тому же объекту.
Для объединения всех этих файловых систем мы решили взять единый корень из
ПК-подобной файловой системы и поместить в него все остальные. На рисунке 5.3
показано, как видится вся AS/400 и ее файловые системы клиенту Windows. AS/400
представлена как один диск, на котором находятся каталоги в стиле ПК, каталоги
в стиле Unix, библиотеки OS/400 (QSYS.LIB), разделяемые папки OS/400 (QDLS) и еще
несколько файловых систем поддержки новых приложений. В число последних
входят: система, полностью совместимая с POSIX (QOpenSys); файловая система
для пользователей LANServer (QLANSrv); файловая система для Novell
Соглашение об именах в IFS основано на стандарте ПК. Имя имеет вид КАТ1\КАТ2\...\КАТn\ИМЯФАЙЛА. К радости тех, кто не может запомнить, когда использовать прямую (/), а когда обратную (\) косую черту, новое соглашение допускает обе. Вы даже можете использовать разные разделители в одном и том же имени.
В соответствии со стандартом POSIX, длина имен файлов и каталогов увеличена. На AS/400 имена в каталогах IFS хранятся в формате Unicode, который, будучи международным стандартом, поддерживает использование разных языков, включая двух-байтовые наборы символов, используемые в ряде стран. Все RISC-системы теперь позволяют хранить информацию в базе данных в формате Unicode.
IFS дает возможность пользователю рассматривать файл, хранящийся на AS/400, как расширение его собственной файловой системы. Пользователи Unix считают, что они имеют дело с файловой системой Unix, а пользователи ПК (см. рисунок 5.3) — что это файлы ПК. К тому же, если оба пользователя могут работать с одними и теми же данными, отпадает необходимость копирования этих данных. Те, кто привык к ПК или к AS/400 продолжают использовать QDLS и QSYS.LIB соответственно, а новые пользователи могут работать со своими приложениями с помощью любой из поддерживаемых файловых систем. Пользователям ПК и Unix даже не требуется изучать CL — язык команд AS/400. Они могут применять любые команды и утилиты для DOS, Windows или Unix.
(рис 5.3) Интегрированная файловая система с точки зрения Windows-клиентаНельзя забывать, что главная задача IFS — обеспечение доступа к данным. Поэтому
либо формат данных должен быть изначально совместим с приложением, которое
их запрашивает, либо данные должны быть преобразованы соответствующим
образом. OS/400 поддерживает большинство таких преобразований, например,
между кодировкой
Поддержка Unicode в базе данных RISCсистем дает возможность разработчикам приложений использовать универсальный формат данных на разных платформах. При этом отпадает необходимость специальных версий программ для стран, где языки требуют двухбайтового представления. Приложение может быть использоваться по всему миру.
Недостаточно просто найти объект. Чтобы получить к нему доступ или модифицировать
объект, пользовательской или системной программе необходимы некоторые
средства доступа. Для
OS/400 отвечает за управление своими объектами, каждый из которых состоит из
Доступ к системному объекту осуществляется посредством системного указателя,
который, занимая 16 байтов памяти, содержит адрес
Системный указатель может также содержать сведения о типе операций, которые выполнимы над объектом. Обычно, такая информация называется полномочиями (authority). Указатель, содержащий адрес объекта и полномочия, называется возможностью (capability). System/38 использует адресацию на базе возможностей, все системные указатели содержат как адрес, так и полномочия. В AS/400 способ предоставления пользователям полномочий по работе с объектами был изменен.
Причина изменений — забота о защищенности системы. Если полномочия хранятся в указателе, то пользователь, обладающий указателем, обладает и полномочиями. Мало того, он даже может передать указатель или его копии другому пользователю.
Предположим, мы хотим дать пользователю право выполнения одиночной операции
над объектом, то есть предоставить программе пользователя
Для ограничения полномочий пользователя и повышения степени защищенности IBM добавила в AS/400 методы предоставления временных полномочий. Одновременно, мы удалили полномочия из указателей всех пользовательских программ, оставив их только для указателей, используемых ОС в системном состоянии (подробности — в лекции 7).
Так что говорить об AS/400 как о системе с адресацией на базе возможностей
неправильно. За исключением только что указанного случая, такой
Системный указатель считается разрешенным, если содержит прямой адрес системного
объекта. Указатель, содержащий символический адрес, называется неразрешенным.
Символический адрес используется для
На рисунке 5.4 показан процесс разрешения системного указателя по команде
"
(рис 5.4) Разрешение системного указателяЗатем выполняется тройная проверка. Прежде всего, проверяется тип объекта,
чтобы гарантировать корректный возврат объекта; затем, есть ли у пользователя права,
указанные в команде "
Если результаты тройной проверки удовлетворительны, то в неразрешенный системный
указатель записывается адрес
Системный указатель обеспечивает доступ к системному объекту, но при выполнении
некоторых операций нужно работать с данными, содержащимися внутри таких
объектов. Для этого используются другие типы указателей. Но прежде чем рассказать
о них, я хочу остановиться на внутренней структуре
Итак,
Необходимость отдельной пространственной части в объекте объясняется способом
представления памяти в MI. Вспомните, что для поддержания независимости от
нижележащей технологии, в MI нет понятия памяти в традиционном смысле; только
объекты и ничего кроме них. Между тем, указатели и данные пользователей должны
где-то храниться. Место для этого - пространственная часть
На рисунке 5.5. Вы можете видеть два системных объекта, каждый из которых
имеет функциональную и пространственную части. Пространственная часть может
содержать как указатели, так и данные. На рисунке пространственная часть второго
объекта содержит системный указатель на первый
(рис 5.5) Системные объектыТак как все
Пространственный указатель очень похож на системный. Он имеет длину 16 байтов
и содержит адрес. Отличие в том, что адрес из пространственного указателя указывает
на некоторый байт гдето в пространственной части
Другое важное различие между двумя типами указателей состоит в операциях с адресом, которые каждый из них может выполнять. Адрес в пространственном указателе может быть изменен программой MI так, чтобы указывать на другой байт в том же пространстве. Адрес в системном указателе лишь указывает на начало объекта и изменить его нельзя. Пользователь, имеющий соответствующие права, может с помощью системного указателя получить пространственный указатель на объект. Второй объект, показанный на рисунке 5.5, также содержит пространственный указатель. Рисунок иллюстрирует, как указатель такого типа предоставляет доступ к байтовому пространству первого объекта.
В дополнение к системным и пространственным, в MI есть еще четыре типа указателей. Указатель данных аналогичен пространственному, но содержит описание типа данных, что позволяет рассматривать цепочку байтов внутри пространства как данные любого типа. В качестве аналогии можно привести указатель языка С. Указатель команд служит для определения места команды в последовательности и используется для выполнения переходов.
Четыре рассмотренных типа указателя (системный, пространственный, данных и команд) присутствовали в первом варианте System/38. Позднее для обеспечения доступа к внутренней памяти была добавлена специальная версия пространственного указателя - машинный пространственный указатель. В AS/400 с появлением ILE был добавлен новый процедурный указатель. Процедурные указатели используются в операциях вызова/возврата, рассмотренных в лекции 4.
Теперь можем, наконец, перечислить основные характеристики всех
Постоянство объекта (часть характеристики 8) требует некоторых дополнительных пояснений. Итак, постоянный объект продолжает существовать в системе, пока не будет специально уничтожен. Присутствуя в памяти, он может легко использоваться совместно разными пользователями. Именно этим AS/400 сильно отличается от других систем, которые требуют располагать разделяемую или предназначенную для длительного хранения информацию в отдельной файловой системе. Позже мы рассмотрим, как одноуровневая память AS/400 поддерживает постоянство объектов.
В будущем постоянство объектов очень пригодится для поддержки объектно-ориентированных баз данных. Необходимо, чтобы объекты продолжали существовать, и после того, как их создатель ушел со сцены. И здесь уникальные возможности постоянства объектов AS/400 дают ей существенные преимущества перед другими ОС, вынужденными прибегать к хранению постоянных объектов в отдельной файловой системе.
Не каждый объект должен быть постоянным, этот параметр задается при его создании.
Постоянные объекты требуют
Как уже упоминалось, временные объекты исчезают при каждой загрузке системы. В обычной системе области временной памяти связаны с создавшими их заданиями, не могут разделяться пользователями и исчезают, когда задание завершено. В AS/400 вся память, содержит ли она постоянные или временные объекты, может разделяться пользователями и объекты остаются в системе даже после завершения задания. При разработке AS/400 в качестве некоторого, отличного от завершения задания, момента удаления временных объектов была выбрана загрузка системы. Это оказалось удобным, так как снижает накладные расходы. Например, если бы мы разрушали временную библиотеку задания по завершении последнего, то производительность при исполнении остальных заданий несколько снижалась бы. И мы решили перенести накладные расходы на время выполнения загрузки.
Примером временного объекта может служить индекс области данных, обеспечивающий проекцию базы данных: если он создается для выполнения единственного запроса к базе данных, то нет смысла делать его постоянным. Обратите внимание, что постоянный объект может пережить крах системы, иногда объекты и создаются постоянными только для того, чтобы не потерять их в случае сбоя системы. Напротив, если для восстановления системы ее потребуется перезагрузить, то все временные объекты будут потеряны. Внутренние детали обработки системой временных и постоянных объектов будут объяснены далее.
До сих пор мы рассматривали только
В лекции 4 мы рассмотрели содержимое оригинального шаблона программы MI — последовательность команд и таблицу определения объектов ODT. ODT описывает операнды, используемые программой. В результате неудачного выбора имен проектировщики MI для System/38 называли эти операнды объектами, а точнее программными объектами. Таким образом, двухбайтовое двоичное число считается объектом.
Программные объекты не имеют с
Хотя в MI нет концепции памяти, все процессоры AS/400 используют физическую
память, включая основную память и диск.
Понятия памяти и дискового пространства верны только ниже MI. В отличие от OS/400,
Одноуровневая память — это используемая в AS/400 разновидность виртуальной
памяти, обеспечивающая логическое представление памяти, которое не обязательно
соответствует ее
Адресное пространство AS/400 логически разделено на блок последовательных байтов, называемых сегментами. В System/38 и первых AS/400 использовалось два размера сегмента: 64К и 16М. 16-мегабайтный сегмент состоял из 256 сегментов по 64К и иногда назывался сегментной группой. При переходе на 64-разрядную адресацию сегменты меньшего размера были исключены, остался только сегмент размером в 16М.
Сегменты не перекрываются и всегда начинаются с границы. Это означает, что 24 младших (самых правых) бита адреса первого байта каждого сегмента размером 16М всегда равны 0. Каждый 16-мегабайтный сегмент уникально задается 40 старшими (самыми левыми) битами 64-разрядного адреса.
Отображение адресного пространства AS/400 на физическую основную память
и диски осуществляется компонентом управления памятью
На рисунке 5.6 изображен формат
(рис 5.6) Структура системного объектаКаждый тип объекта содержит свойства, присущие только ему:
После трех заголовков следуют компоненты, составляющие данный объект: например,
за специфическим заголовком программы размещается последовательность
команд. Так как все
Типов
Как мы уже говорили,
На рисунке 5.7 показан
(рис 5.7) Многосегментные объектыВыделение сегментов происходит при создании
(рис 5.8) Создание объектаДля отражения наличия нового объекта обновляются различные справочники,
поддерживаемые

Теперь, после рассмотрения структуры

Заголовок сегмента содержит следующую информацию:
Последние два адреса не следует путать с системным указателем и пространственным
указателем на
Байт типа определяет, что это за сегмент. Есть две категории типов сегментов:
входящие в состав объектов MI, и используемые только
Мы уже рассмотрели два типа сегментов, входящих в состав
Примерно 40 типов сегментов используются только
Заголовок сегмента содержит несколько битов флагов, задающих его характеристики. Три наиболее важных флага — существования, авторасширения и наличия тегов. Бит существования указывает, постоянный это сегмент или временный. Постоянный сегмент остается в системе до тех пор, пока не будет явно удален, тогда как временный исчезает при следующей загрузке системы.
При установленном бите авторасширения компонент управления памятью будет распределять сегменту дисковые страницы всякий раз, когда это понадобится. В заголовке сегмента имеется поле, содержащее число дисковых страниц, распределенных для сегмента. Если бит авторасширения сброшен, то сегмент никогда не вырастет сверх своего начального размера. Кстати, в этом случае компонент управления памятью пытается разместить весь сегмент в непрерывной области на диске. Если же бит включен, то сегмент, скорее всего, будет состоять из несмежных страниц диска. Таким образом, отключение данного бита может повысить производительность за счет предварительного распределения всех страниц.
Бит наличия тегов указывает на присутствие в сегменте указателей MI. В лекции 2
мы рассматривали расширения архитектуры
Два оставшихся поля заголовка сегмента представляют собой адреса: первый — базового сегмента, второй — следующего вторичного сегмента, которым для системного объекта обычно является адрес ассоциированного пространства. Эти два адреса позволяют связать друг с другом сегменты многосегментного объекта.
Обратите внимание, что адреса, используемые ниже MI в заголовках и где-либо еще — 64-разрядные аппаратные. В MI адреса всегда содержатся внутри указателя и занимают 128 бит (16 байтов). Указатели защищают хранящиеся в них адреса от несанкционированного изменения и использования, а также помогают обеспечить независимость MI от технологии. Ниже MI нет ни такой защиты, ни аппаратной независимости. Именно по этой причине все пользователи MI, включая саму OS/400, не допускаются ниже уровня MI.
Заголовок ЕРА содержится в базовом сегменте всякого
Биты подвешенности и поврежденности объекта определяют его состояние. Подвешенным
считается объект, у которого доступны только заголовки, а содержимого
не существует. Предположим, что владелец
При разрушении постоянного объекта его адресное пространство повторно не
используется, что устраняет необходимость поиска всех указателей на удаленный
объект, чтобы пометить их как недействительные. Это снимает также проблемы защиты
и целостности, которые возникают в тех случаях, когда на место удаленного
объекта распределяется новый, а у какогонибудь пользователя сохранился указатель
на старый объект. В других системах применяются сложные схемы "
Можно выделить два вида повреждения объекта: жесткое и мягкое. Жесткое означает, что объект невозможно использовать по назначению — он поврежден безвозвратно, его лучше удалить. В случае мягкого повреждения из объекта все же можно извлечь некоторые данные. При обнаружении такого повреждения OS/400 начинает процесс восстановления.
Бит поврежденности используется для индикации проблем с объектами в MI. Один
из основных
Другие биты заголовка ЕРА указывают на наличие группового доступа к данному объекту, на выполнение трассировки объекта и участие его в транзакции. Подробнее эти атрибуты будут рассмотрены в лекции 6.
Для идентификации объекта в заголовке ЕРА зарезервировано три поля. Одно из
них содержит тип объекта, а другое — подтип. Тип объекта — один из типов системных
объектов MI. Поле подтипа определяется пользователем, при этом программисты
OS/400 рассматриваются как пользователи
Атрибуты пространства указывают, является ли размер пространства постоянным или переменным, каково начальное заполнение пространства (было ли оно очищено или обнулено), а также размер пространства. Поле общего размера объекта содержит размер всех сегментов объекта. Номер версии и время создания позволяют определить, когда был создан объект.
Некоторые поля заголовка ЕРА содержат адреса. Наиболее важны из них: адрес пользовательского профиля владельца и создателя, адрес контекста, содержащего имя объекта, адрес группы доступа (если объект входит в нее), и адрес специфического заголовка объекта. Заголовок ЕРА содержит и другую информацию, а также адреса, используемые компонентами системы, которые еще будут обсуждаться.
На рисунке 5.9 приведено четыре примера
Пример объекта, занимающего два сегмента — независимый индекс, обычно называемый
просто индексом. Его основное назначение — поддержка пользовательского
индекса OS/400. Базовый сегмент индекса содержит заголовки сегмента и ЕРА,
заголовок (специфический) индекса и
Кроме того, на рисунке 5.9 показаны два примера объектов, занимающих три сегмента.
(рис 5.9) Примеры объектовПервый из них — программа. Базовый сегмент программы содержит заголовки сегмента и ЕРА, заголовок (специфический) программы, последовательность команд и код инициализации программы. Второй сегмент занят ассоциированным пространством, содержащим пользовательские данные для программы. Третий — это сегмент таблицы определения материализации MDT (materialization definition table), содержащий шаблон и карту объектов программы, необходимые для материализации программы. При удалении пользователем шаблона программы, третий сегмент исчезает, и программа занимает только два сегмента.
Последний объект на рисунке — индекс области данных. Как всегда, базовый сегмент
содержит заголовки сегмента и ЕРА, заголовок (специфический) индекса области
данных, альтернативную таблицу сортировки для этого индекса, таблицы индекса
и
Объекты предоставляют средства управления и защиты системных ресурсов AS/400. Правила именования и адресации практически всех элементов системы привязаны к объектам. То же самое можно сказать и о защите. Объекты также используются для эффективного разделения информации между пользователями системы. Благодаря инкапсуляции и строгому определению набора возможных операций над объекта ми, в AS/400 обеспечен такой уровень целостности и независимости от технологий, о котором нельзя и помыслить в других системах.
Объекты — основа AS/400. Они не были добавлены поверх существующей системы, как это часто бывает. Объекты были частью AS/400 с самого начала.
Многие из объектов, представленных в этой лекции, используются компонентами системы, описанными в оставшейся части книги. В следующей лекции, мы рассмотрим интегрированную базу данных AS/400. В состав этой базы данных входят многие объекты, с которыми мы уже познакомились.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.