Введение
Операционная система
IBM i (где i означает "интегрированный") — операционная система, разработанная IBM для IBM Power Systems. Она была впервые выпущена в 1988 году под названием OS/400 как единственная операционная система линейки систем IBM AS/400. В 2004 году она была переименована в i5/OS, а в 2008 году — во второй раз, в IBM i. Это эволюция операционной системы System/38 CPF с уровнями совместимости для приложений System/36 SSP и AIX. В ходе проекта "Форт-Нокс" инженеры в Рочестере начали секретный проект, в результате которого им удалось разработать код, позволяющий приложениям System/36 работать поверх System/38.
Операционная система для Silverlake получила кодовое название XPF (Extended CPF) и изначально задумывалась как портирование CPF на аппаратное обеспечение "Форт-Нокс".
Переход на PowerPC
Порт на PowerPC потребовал переработки большей части кода, расположенного ниже TIMI. Ранние версии OS/400 унаследовали слои горизонтального и вертикального микрокода от System/38, хотя они и были переименованы в горизонтальный лицензируемый внутренний код (HLIC) и вертикальный лицензируемый внутренний код (VLIC) соответственно. Переход на новое аппаратное обеспечение привел к замене набора инструкций IMPI и горизонтального микрокода, реализующего его, на набор инструкций PowerPC AS и его реализацию в процессорах PowerAS. Это потребовало переписать VLIC для поддержки PowerPC вместо IMPI, а также перенести функциональность операционной системы, ранее реализованную в HLIC, в другие компоненты. В связи с объемом работы, необходимой для реализации SLIC, компания IBM Rochester наняла несколько сотен программистов C++ для этого проекта, которые работали над SLIC параллельно с новыми версиями VLIC для систем CISC AS/400.
Переименование
Линейка продуктов AS/400 неоднократно подвергалась ребрендингу на протяжении 1990-х и 2000-х годов. Первый выпуск i5/OS, V5R3, был описан IBM как «другое название для той же операционной системы». В 2006 году IBM в последний раз переименовала линейку AS/400 в System i. В апреле 2008 года IBM объединила System i с платформой System p, чтобы создать IBM Power Systems. Одновременно с этим i5/OS была переименована в IBM i, чтобы устранить ассоциацию с процессорами POWER5. Две последние версии операционной системы на тот момент, выпущенные как i5/OS V5R4 и V6R1, были переименованы в IBM i 5.4 и 6.1. Вместе с ребрендингом в IBM i, IBM изменила схему нумерации версий операционной системы. В предыдущих выпусках использовалась схема «Версия, Выпуск, Модификация», например V2R1M1. Она была заменена схемой «Версия. Выпуск», например 6.1. Начиная с IBM i 7.1, IBM заменила релизы модификаций обновлениями технологий (Technology Refreshes). Обновления технологий поставляются в виде дополнительных PTF для конкретных версий операционной системы, добавляющих новую функциональность или поддержку оборудования.
Архитектура
Когда IBM i был впервые выпущен как OS/400, он был разделен на два уровня: аппаратно-зависимый лицензируемый внутренний код системы (SLIC). Эти уровни разделены слоем аппаратной абстракции, называемым технологически независимым машинным интерфейсом (TIMI). В более поздних версиях операционной системы появились дополнительные уровни, включая слой совместимости с AIX под названием Portable Application Solutions Environment (первоначально известный как Private Address Space Environment) и среду Advanced 36 Machine, которая позволяла запускать приложения System/36 SSP в режиме эмуляции. Например, в документации IBM i 7.4 они упоминаются как интерфейс IBM i Machine Interface, лицензируемый внутренний код IBM i Licensed Internal Code и операционная система IBM i Operating System соответственно.
Технологически независимый машинный интерфейс (TIMI)
TIMI изолирует пользователей и приложения от базового оборудования. Эта изоляция более полная, чем аппаратные абстракции других операционных систем, и включает в себя абстрагирование архитектуры набора команд процессора, размера адресного пространства, а также особенностей ввода-вывода и хранения данных. Инструкции OMI по сути идентичны инструкциям машинного интерфейса System/38, в то время как инструкции NMI находятся на более низком уровне и напоминают промежуточное представление в формате W-кода, используемое компиляторами IBM. Инструкции NMI не имеют официальной документации. Инструкции OMI используются оригинальными компиляторами AS/400, а инструкции NMI – компиляторами интегрированной языковой среды.
SLIC
SLIC состоит из кода, реализующего TIMI на архитектуре IBM Power. Помимо реализации большей части функциональности, обычно ассоциирующейся с ядром операционной системы, он отвечает за трансляцию инструкций TIMI в машинный код, а также за реализацию некоторой высокоуровневой функциональности, предоставляемой через TIMI, такой как встроенная реляционная база данных IBM i. SLIC в основном реализован на C++ и заменил слои HLIC и VLIC, использовавшиеся в версиях OS/400 до V3R6. XPF – это внутреннее обозначение IBM для этого уровня, и, как следует из названия, он возник как развитие подпрограммы управления System/38 (System/38 Control Program Facility).
СТРАНИЦА
PASE (Portable Applications Solutions Environment) обеспечивает двоичную совместимость для исполняемых файлов AIX в пользовательском режиме, которые не взаимодействуют напрямую с ядром AIX, и поддерживает 32-разрядные и 64-разрядные бинарные интерфейсы приложений AIX. PASE впервые был включен в ограниченной и недокументированной форме в версии OS/400 V4R3 для поддержки переноса Smalltalk. Интерфейсы системных вызовов обеспечивают взаимодействие между PASE и нативными приложениями IBM i, например, приложения PASE могут обращаться к интегрированной базе данных или вызывать нативные приложения IBM i и наоборот. При создании PASE в операционную систему был добавлен новый тип объекта хранения единого уровня, называемый Teraspace, который позволяет каждому процессу PASE иметь собственное пространство размером 1 ТБ, адресуемое с помощью 64-разрядных указателей. Это было необходимо, поскольку все задания IBM i (то есть процессы) обычно используют одно и то же адресное пространство. Программное обеспечение с открытым исходным кодом для IBM i обычно поставляется в формате пакетов RPM и устанавливается с помощью менеджера пакетов YUM. PASE отличается от среды Qshell, которая представляет собой реализацию Unix shell и сопутствующих утилит, построенную на основе нативных API-интерфейсов IBM i, совместимых с POSIX.
Усовершенствованная машина 36
Внедренная в 1994 году платформа Advanced/36 работала с неизмененными приложениями System/36 и операционной системой SSP в эмуляции поверх OS/400 SLIC, используя оборудование, которое в основном было идентично современным системам AS/400. Поддержка была прекращена в выпуске V4R5, что совпало с прекращением IBM производства линейки продуктов Advanced/36 в целом. Возможность Advanced 36 Machine отличается от среды System/36, представленной в первоначальном выпуске OS/400 и до сих пор поддерживаемой в текущих версиях IBM i. До появления Advanced/36 в линейке System/36 использовались два различных процессора в каждой системе: Main Storage Processor (MSP), который выполнял большую часть операционной системы SSP, а также пользовательский код, и Control Storage Processor (CSP), который выполнял так называемый "микрокод", реализующий основные функции операционной системы, а также ввод-вывод. Микрокод CSP вызывался из MSP посредством инструкции Supervisor Call (SVC). В Advanced/36 микрокод CSP был перереализован внутри SLIC. В SLIC также был встроен эмулятор MSP, иногда называемый Technology Independent Emulation Interface. Даже с учетом накладных расходов на эмуляцию, системы Advanced/36 были значительно быстрее, чем оригинальные системы System/36, которые они заменили, благодаря производительности их процессоров PowerPC AS. В 1994 году ей было присвоено название DB2/400, чтобы указать на сопоставимую функциональность с другими коммерческими базами данных IBM. IBM i предоставляет два механизма доступа к интегрированной базе данных: так называемый нативный интерфейс, основанный на модели доступа к базе данных System/38, и SQL. Некоторые функции Db2 for i, такие как управление объектно-реляционной базой данных, требуют SQL и не могут быть доступны через нативный интерфейс. IBM i имеет два отдельных оптимизатора запросов, известных как Classic Query Engine (CQE) и SQL Query Engine (SQE). Они реализованы внутри SLIC вместе с диспетчером запросов, который выбирает подходящий оптимизатор в зависимости от типа запроса. Удаленный доступ через нативный интерфейс и SQL обеспечивается Distributed Data Management Architecture (DDM) и Distributed Relational Database Architecture соответственно. Движок хранения для MySQL и MariaDB под названием IBMDB2I позволяет приложениям, разработанным для этих баз данных, использовать Db2 for i в качестве базового хранилища. Другие базы данных с открытым исходным кодом были портированы на IBM i, включая PostgreSQL, MongoDB и Redis. Эти базы данных работают в среде PASE и независимы от интегрированных функций базы данных операционной системы.
Сетевые связи
IBM i поддерживает сетевые протоколы TCP/IP в дополнение к собственной сетевой архитектуре IBM Systems Network Architecture. Исторически доступ к системам IBM i и управление ими осуществлялось через терминалы IBM 5250, подключенные к системе кабелями twinax. С уменьшением количества специализированного терминального оборудования современные системы IBM i обычно используются через 5250-эмуляторы терминалов. IBM предоставляет два эмулятора терминалов для IBM i: IBM i Access Client Solutions — это клиент на основе Java, работающий в операционных системах Linux, macOS и Windows, обеспечивающий эмуляцию 5250. IBM i Access for Web/Mobile предоставляет веб-эмуляцию 5250. Кроме того, IBM предоставляет веб-консоль управления и инструмент анализа производительности под названием IBM Navigator for i.
IBM i Access Client Solutions is a Java based client that runs on Linux, macOS and Windows to provide 5250 emulation. IBM i Access for Web/Mobile provides web based 5250 emulation. In addition, IBM provides a web based management console and performance analysis product named IBM Navigator for i.
Программирование
Языки программирования, доступные от IBM для IBM i, включают RPG, Control Language, 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. С тех пор другие компиляторы также были портированы в PASE, включая gcc. Некоторые инструменты разработки для IBM i работают непосредственно в операционной системе, например, текстовый редактор Source Edit Utility (SEU) и Programming Development Manager. IBM также предоставляет интегрированную среду разработки (IDE) на основе Eclipse для IBM i под названием IBM Rational Developer for i, которая работает на рабочих станциях разработчиков, а не на IBM i. До появления IDE на основе Eclipse, IBM предоставляла IDE на основе WorkFrame/2, работающую на OS/2 под названием CODE/400, и IDE на основе VisualAge, работающую на системах Microsoft Windows. IBM i использует EBCDIC в качестве кодировки символов по умолчанию, но также поддерживает ASCII, UCS-2 и UTF-16.
Хранение
В IBM i дисковые накопители могут быть сгруппированы во вспомогательный пул хранения (ASP) для организации данных, чтобы ограничить влияние отказов устройств хранения и сократить время восстановления. В случае отказа диска необходимо восстанавливать только данные в пуле, содержащем неисправный накопитель. ASP также могут использоваться для повышения производительности за счет изоляции объектов с похожими характеристиками, например, приемников журналов, в отдельном пуле. По умолчанию все диски назначаются в пул 1. Концепция пулов IBM i аналогична концепции групп томов в Unix/Linux, однако в IBM i обычно все дисковые накопители назначаются одному ASP.