IBM i ( i означает «интегрированный ») [6] — операционная система , разработанная IBM для IBM Power Systems . [7] Первоначально она была выпущена в 1988 году как OS/400 как единственная операционная система в линейке систем IBM AS/400 . Она была переименована в i5/OS в 2004 году, а затем была переименована во второй раз в IBM i в 2008 году. [8] [9] Это развитие операционной системы System/38 CPF , [5] с уровнями совместимости для System/ 36 приложений SSP и AIX . [5] Он унаследовал ряд отличительных особенностей от платформы System/38, включая машинный интерфейс , реализацию объектно-ориентированной адресации поверх одноуровневого хранилища и тесную интеграцию реляционной базы данных в операционную систему. . [1]
OS/400 разрабатывалась вместе с аппаратной платформой AS/400 начиная с декабря 1985 года. [5] Разработка началась после провала проекта в Форт-Ноксе , в результате которого IBM осталась без конкурентоспособной системы среднего уровня. [10] [11] Во время проекта Форт-Нокс инженеры в Рочестере начали проект skunkworks , которым удалось разработать код, который позволил приложениям System/36 запускаться поверх System/38, [12] и когда Форт-Нокс был отменен, этот проект превратился в официальный проект по замене System/36 и System/38 единой новой аппаратной и программной платформой. [5] Проект стал известен как Silverlake (названный в честь Силвер-Лейк в Рочестере, штат Миннесота ). [13] [12] [14]
Операционная система Silverlake имела кодовое название XPF (Extended CPF ) и изначально задумывалась как порт CPF на оборудование Fort Knox. [5] Помимо добавления поддержки приложений System/36, некоторые функции пользовательского интерфейса и простоты использования из System/36 были перенесены в новую операционную систему. [1]
Silverlake был доступен для полевых испытаний в июне 1988 года и официально анонсирован в августе того же года. К этому моменту она была переименована в Application System/400 , а операционная система получила название Operating System/400 . [12]
Порт на PowerPC потребовал переписывания большей части кода ниже TIMI. Ранние версии OS/400 унаследовали уровни горизонтального и вертикального микрокода System/38, хотя они были переименованы в горизонтальный лицензированный внутренний код (HLIC) и вертикальный лицензированный внутренний код (VLIC) соответственно. [15] Порт на новое оборудование привел к тому, что набор инструкций IMPI и реализующий его горизонтальный микрокод были заменены набором команд PowerPC AS и его реализацией в процессорах PowerAS. Это потребовало переписать VLIC для использования с PowerPC вместо IMPI, а также чтобы функциональные возможности операционной системы, ранее реализованные в HLIC, были повторно реализованы в другом месте. [1] Это привело к замене HLIC и VLIC одним слоем, названным Внутренним лицензионным кодом системы (SLIC). SLIC был реализован в объектно-ориентированном стиле с более чем 2 миллионами строк кода C++ , заменив часть кода HLIC и большую часть кода VLIC. [16] [17] Из-за объема работы, необходимой для реализации SLIC, IBM Rochester наняла для этого проекта несколько сотен программистов C++, которые работали над SLIC параллельно с новыми версиями VLIC для систем CISC AS/400. [1] Первой версией OS/400 с поддержкой оборудования на базе PowerPC была V3R6. [18] [19]
Линейка продуктов AS/400 неоднократно менялась на протяжении 1990-х и 2000-х годов. [15] В рамках ребрендинга 2004 года на eServer i5 OS/400 была переименована в i5/OS ; цифра 5 означает использование процессоров POWER5 . [20] Первый выпуск i5/OS, V5R3, был описан IBM как «другое название той же операционной системы». [21]
В 2006 году IBM в последний раз переименовала линейку AS/400 в System i . [22] В апреле 2008 года IBM объединила System i с платформой System p для создания IBM Power Systems . [23] В то же время i5/OS была переименована в IBM i , чтобы убрать связь с процессорами POWER5. [24] Две самые последние версии операционной системы на тот момент, выпущенные как i5/OS V5R4 и V6R1, [25] [26] были переименованы в IBM i 5.4 и 6.1. [27] [28] [29] [30]
Одновременно с ребрендингом на IBM i компания IBM изменила номенклатуру версий операционной системы. В предыдущих выпусках использовалась схема «Версия, выпуск, модификация» , например V2R1M1. Это было заменено схемой Version.Release , например 6.1. [31] Начиная с IBM i 7.1, IBM заменила выпуски модификаций на обновления технологий . [29] Обновления технологий поставляются в виде дополнительных PTF для определенных выпусков операционной системы, которые добавляют в операционную систему новые функциональные возможности или аппаратную поддержку. [32]
Когда IBM i был впервые выпущен как OS/400, он был разделен на два уровня: аппаратно-зависимый системный лицензионный внутренний код (SLIC) [15] [1] и аппаратно-независимый расширенный программный комплекс управления (XPF). [16] [8] [33] [34] Они разделены уровнем аппаратной абстракции , называемым технологически независимым машинным интерфейсом (TIMI). Более поздние версии операционной системы получили дополнительные уровни, в том числе уровень совместимости с AIX под названием Portable Application Solutions Environment (первоначально известный как Private Address Space Environment ), [5] [35] и среду Advanced 36 Machine , в которой запускались приложения System/36 SSP. в эмуляции. [1]
IBM часто использует разные названия для TIMI, SLIC и XPF в документации и маркетинговых материалах, [36] например, в документации IBM i 7.4 они называются IBM i Machine Interface , IBM i Licensed Internal Code и IBM i Operating System соответственно. . [37]
TIMI изолирует пользователей и приложения от базового оборудования. Эта изоляция является более тщательной, чем аппаратные абстракции других операционных систем, и включает абстракцию архитектуры набора команд процессора, размера адресного пространства , а также особенностей ввода-вывода и постоянства. [15] Это достигается посредством двух взаимосвязанных механизмов: [1]
Аппаратная изоляция, обеспечиваемая TIMI, позволила IBM заменить 48-битную архитектуру IMPI AS/400 на 64-битную архитектуру RS64 в 1995 году. Приложения, скомпилированные в системах с использованием набора команд IMPI, могли работать поверх более новых систем RS64 без каких-либо изменения кода, перекомпиляцию или эмуляцию, а также позволяет этим приложениям использовать 64-битную адресацию. [8]
Существует два разных формата инструкций TIMI, известные как форматы исходного машинного интерфейса (OMI) и нового машинного интерфейса (NMI). [38] Инструкции OMI по существу аналогичны инструкциям интерфейса System/38 Machine , тогда как инструкции NMI являются низкоуровневыми и напоминают формат промежуточного представления W-кода , используемый компиляторами IBM. [1] IBM частично документирует инструкции OMI, [39] тогда как инструкции NMI официально не документированы. Инструкции OMI используются оригинальными компиляторами AS/400, тогда как инструкции NMI используются компиляторами интегрированной языковой среды . [1] При портировании PowerPC встроенная поддержка формата OMI была удалена и заменена транслятором, который преобразовывал инструкции OMI в инструкции NMI.
Хранение инструкций TIMI вместе с инструкциями машинного кода называется наблюдаемостью . В 2008 году выпуск i5/OS V6R1 (позже известный как IBM i 6.1) внес ряд изменений в уровень TIMI, которые вызвали проблемы для стороннего программного обеспечения, которое лишило возможности наблюдения объектов приложений, поставляемых клиентам. [40]
SLIC состоит из кода, который реализует TIMI поверх архитектуры IBM Power. Помимо большей части функций, обычно связанных с ядром операционной системы , он отвечает за перевод инструкций TIMI в машинный код, а также реализует некоторые высокоуровневые функции, которые предоставляются через TIMI, например интегрированную реляционную базу данных IBM i. [1] SLIC реализует объектно-ориентированную модель хранения данных IBM i поверх одноуровневой схемы адресации хранилища, которая не делает различия между первичным и вторичным хранилищем и вместо этого управляет всеми типами хранилища в одном виртуальном адресном пространстве . [41] SLIC в основном реализован на C++ и заменил уровни HLIC и VLIC, используемые в версиях OS/400 до V3R6. [16]
XPF состоит из кода, реализующего аппаратно-независимые компоненты операционной системы, которые скомпилированы в инструкции TIMI. [16] Компоненты XPF включают пользовательский интерфейс, язык управления , утилиты управления данными и запроса, инструменты разработки и утилиты управления системой. XPF также содержит среды System/36 и System/38 Environment , которые предоставляют API и утилиты обратной совместимости для приложений и данных, перенесенных из систем SSP и CPF. [42] XPF — это внутреннее название этого уровня в IBM, и, как следует из названия, он начался как развитие System/38 Control Program Facility . [1] XPF в основном реализован на PL/MI , хотя используются и другие языки. [43]
PASE (среда решений для портативных приложений) обеспечивает двоичную совместимость для исполняемых файлов AIX пользовательского режима , которые не взаимодействуют напрямую с ядром AIX, и поддерживает 32-битные и 64-битные двоичные интерфейсы приложений AIX . [44] PASE впервые был включен в ограниченной и недокументированной форме в версию OS/400 V4R3 для поддержки порта Smalltalk . [5] Впервые о нем было объявлено клиентам во время выпуска V4R5, к тому времени он приобрел значительные дополнительные функциональные возможности.
PASE состоит из пользовательского пространства AIX, работающего поверх интерфейса системных вызовов, реализованного SLIC. [45] Интерфейсы системных вызовов обеспечивают взаимодействие между PASE и собственными приложениями IBM i, например, приложения PASE могут получать доступ к интегрированной базе данных или вызывать собственные приложения IBM i, и наоборот. [46] Во время создания PASE в операционную систему был добавлен новый тип одноуровневого объекта хранения, названный Teraspace , который позволяет каждому процессу PASE иметь частное пространство размером 1 ТиБ, адресуемое с помощью 64-битных указателей. [47] Это было необходимо, поскольку все задания (т.е. процессы) IBM i обычно используют одно и то же адресное пространство. [5] Приложения PASE не используют аппаратно-независимые инструкции TIMI и вместо этого компилируются непосредственно в машинный код Power.
Порты программного обеспечения с открытым исходным кодом для IBM i обычно ориентированы на PASE вместо собственных API-интерфейсов IBM i, чтобы упростить портирование. [48] Программное обеспечение с открытым исходным кодом для IBM i обычно упаковывается в формате пакета RPM и устанавливается с помощью менеджера пакетов YUM . [49] [50]
PASE отличается от среды Qshell , которая представляет собой реализацию оболочки Unix и связанных с ней утилит, построенных на основе собственных POSIX-совместимых API IBM i. [51]
Представленная в 1994 году платформа Advanced/36 запускала немодифицированные приложения System/36 и операционную систему SSP в режиме эмуляции поверх OS/400 SLIC с использованием аппаратного обеспечения, которое в основном было идентично оборудованию современных систем AS/400. [1] Эта функциональность была включена в саму OS/400, начиная с V3R6 до V4R4, что позволяло запускать до четырех «виртуальных машин» System/36 (если использовать термин IBM), используя так называемую функцию Advanced 36 Machine операционной системы. система. [52] Поддержка была прекращена в выпуске V4R5, что совпало с прекращением IBM линейки продуктов Advanced/36 в целом. [53] Функция Advanced 36 Machine отличается от среды System/36, представленной в первоначальном выпуске OS/400 и до сих пор поддерживаемой в текущих версиях IBM i.
До Advanced/36 в линейке System/36 в каждой системе использовались два разных процессора — процессор основной памяти (MSP), на котором выполнялась большая часть операционной системы SSP, а также пользовательский код, и процессор управляющей памяти (CSP), который запускал так называемый «микрокод», который реализовывал основные функции операционной системы, а также ввод-вывод. Микрокод CSP был вызван из MSP с помощью инструкции вызова супервизора (SVC). В Advanced/36 микрокод CSP был переопределен внутри SLIC. Эмулятор MSP также был встроен в SLIC, иногда называемый Technology Independent Emulation Interface . Даже с учетом затрат на эмуляцию системы Advanced/36 были значительно быстрее, чем исходные системы System/36, которые они заменили, благодаря производительности процессоров PowerPC AS. [1]
IBM i включает интегрированную реляционную базу данных , известную в настоящее время как IBM Db2 для IBM i . [37] База данных произошла от нереляционной базы данных System/38, получив поддержку реляционной модели и SQL . [1] Первоначально у базы данных не было названия, вместо этого она описывалась просто как «поддержка базы данных». [54] В 1994 году ей было присвоено название DB2/400 , чтобы указать на ее функциональность, сравнимую с другими коммерческими базами данных IBM. [1] Несмотря на торговую марку Db2, Db2 для IBM i представляет собой совершенно отдельную кодовую базу для Db2 на других платформах и тесно интегрирован в уровень SLIC IBM i, а не является дополнительным продуктом. [55] [56]
IBM i предоставляет два механизма доступа к интегрированной базе данных — так называемый собственный интерфейс , основанный на модели доступа к базе данных System/38, и SQL . [1] Собственный интерфейс состоит из языка спецификаций описания данных (DDS), который используется для определения схем и API OPNQRYF
команд или QQQQRY
запросов. [57] Некоторые функции Db2 for i, такие как управление объектно-реляционными базами данных, требуют использования SQL и недоступны через собственный интерфейс. [58] IBM i имеет два отдельных оптимизатора запросов , известных как Classic Query Engine (CQE) и SQL Query Engine (SQE). [59] Они реализованы внутри SLIC вместе с диспетчером запросов , который выбирает соответствующий оптимизатор в зависимости от типа запроса. Удаленный доступ через собственный интерфейс и SQL обеспечивается архитектурой распределенного управления данными (DDM) и архитектурой распределенной реляционной базы данных соответственно. [60]
Механизм хранения данных для MySQL и MariaDB позволяетIBMDB2I
приложениям, разработанным для этих баз данных, использовать Db2 for i в качестве резервного хранилища. [61] [62] Другие базы данных с открытым исходным кодом были перенесены на IBM i, включая PostgreSQL , MongoDB и Redis . [63] Эти базы данных работают в среде PASE и не зависят от встроенных функций баз данных операционной системы. [64]
IBM i поддерживает сети TCP/IP в дополнение к собственной сетевой архитектуре IBM Systems . [65]
Исторически доступ к системам IBM i и управление ими осуществлялись через терминалы IBM 5250 , подключенные к системе с помощью твинаксиального кабеля. С упадком специализированного терминального оборудования доступ к современным системам IBM i обычно осуществляется через эмуляторы терминала 5250 . IBM предоставляет два продукта эмулятора терминала для IBM i: [66]
Кроме того, IBM предоставляет веб-консоль управления и продукт для анализа производительности под названием IBM Navigator for i. [67]
Языки программирования, доступные от IBM для IBM i, включают RPG , язык управления , C , C++ , Java , EGL , COBOL и REXX . Компиляторы ранее были доступны для Pascal , BASIC , PL/I и Smalltalk , но с тех пор были прекращены. Интегрированная языковая среда (ILE) позволяет программам на языках, совместимых с ILE (C, C++, COBOL, RPG и CL), связываться с одним и тем же исполняемым файлом и вызывать процедуры, написанные на любом другом языке ILE.
Когда появился PASE, необходимо было скомпилировать код PASE в системе AIX. Это требование было удалено в OS/400 V5R2, когда появилась возможность компилировать код с помощью компилятора IBM XL внутри самого PASE. [68] С тех пор на PASE были портированы и другие компиляторы, включая gcc . [69]
Некоторые инструменты разработки для IBM i работают поверх самой операционной системы, например текстовый редактор Source Edit Utility (SEU) и Programming Development Manager . IBM также предоставляет интегрированную среду разработки (IDE) на основе Eclipse для IBM i под названием IBM Rational Developer for i, которая работает на рабочих станциях разработчиков вместо IBM i. [70] До появления IDE на базе Eclipse компания IBM предоставляла IDE на основе WorkFrame/2, работавшую на OS/2, под названием CODE/400 , а также IDE на основе VisualAge , работавшую в системах Microsoft Windows . [71] [72]
IBM i использует EBCDIC в качестве кодировки символов по умолчанию , но также обеспечивает поддержку ASCII , UCS-2 и UTF-16 . [1] [73]
В IBM i дисководы могут быть сгруппированы в пул вспомогательных устройств хранения данных (ASP), чтобы организовать данные, ограничить влияние сбоев устройств хранения и сократить время восстановления. [74] В случае сбоя диска необходимо восстановить только данные в пуле, содержащем неисправный блок. ASP также можно использовать для повышения производительности путем изоляции объектов со схожими характеристиками производительности, например получателей журналов, в их собственном пуле.
По умолчанию все дисковые накопители отнесены к пулу 1. Концепция пулов IBM i аналогична концепции групп томов в Unix / Linux ; однако в IBM i все дисковые накопители обычно назначаются одному ASP.
Безопасность в IBM i определяется полномочиями , которые представляют собой разрешение на выполнение определенного действия над конкретным объектом. [75] Полномочия могут быть предоставлены отдельным пользователям (известные как профили пользователей ), группам (известные как групповые профили ) или всем пользователям ( государственные полномочия). Связанные объекты можно сгруппировать в списке авторизации , что позволяет предоставить права доступа ко всем объектам в списке, предоставив права доступа в списке авторизации. [76]
Профили пользователей имеют связанный класс пользователей , который определяет набор полномочий по умолчанию, доступных этому профилю пользователя. Существует пять стандартных классов пользователей, которые в порядке возрастания привилегий таковы: Пользователь рабочей станции , Системный оператор , Системный программист , Администратор безопасности и Сотрудник службы безопасности . [5] IBM i поставляется с пользовательским профилем по умолчанию для каждого класса пользователей, а пользовательский профиль офицера безопасности по умолчанию с именем QSECOFR
, является ближайшим эквивалентом пользователя root в Unix-подобной операционной системе. [77]
IBM i можно настроить на использование одного из пяти уровней безопасности, которые контролируют степень реализации функций безопасности операционной системы: [78]
Первые три уровня соответствуют уровням безопасности, доступным в CPF и начальных выпусках OS/400. Уровень безопасности 40 был добавлен в OS/400 V1R3 и стал уровнем безопасности по умолчанию для операционной системы. Добавление уровня 40 потребовало удаления модели адресации возможностей System/38, которая также присутствовала в более ранних выпусках OS/400. [5] Уровень безопасности 50 был добавлен в V2R3, когда OS/400 была сертифицирована по безопасности TCSEC C2 .