![]() | |
![]() Main Menu of IBM i 7.1, shown inside aTN5250 client | |
Developer | IBM |
---|---|
Written in | C++,C,PL/MI,Java,Assembly language,Modula-2,PL/MP[1][2][3] |
OS family | IBM CPF |
Working state | Current |
Source model | Closed source |
Initial release | August 26, 1988; 36 years ago (1988-08-26) |
Latest release | 7.5 / May 10, 2022; 2 years ago (2022-05-10)[4] |
Marketing target | Minicomputer,midrange computer andenterprise server |
Available in | English |
Update method | Program temporary fixes (PTFs) |
Package manager | RPM andYUM for open source packages |
Platforms | IBM AS/400,IBM Power Systems |
Kernel type | shares manyMicrokernel (SLIC) andVirtual machine (TIMI) design philosophies[5] |
Default user interface | Text-based user interface |
License | Proprietary |
Preceded by | System Support Program,Control Program Facility |
Official website | ibm |
IBM i (thei standing forintegrated)[6] is anoperating system developed byIBM forIBM Power Systems.[7] It was originally released in 1988 asOS/400, as the sole operating system of theIBM AS/400 line of systems. It was renamed toi5/OS in 2004, before being renamed a second time to IBM i in 2008.[8][9] It is an evolution of theSystem/38CPF operating system,[5] with compatibility layers forSystem/36SSP andAIX applications.[5] It inherits a number of distinctive features from the System/38 platform, including theMachine Interface which provides hardware independence, the implementation of object-based addressing on top of asingle-level store, and the tight integration of arelational database into the operating system.[1]
OS/400 was developed alongside the AS/400 hardware platform beginning in December 1985.[5] Development began in the aftermath of the failure of theFort Knox project, which left IBM without a competitive midrange system.[10][11] During the Fort Knox project, askunkworks project was started at Rochester by engineers, who succeeded in developing code which allowed System/36 applications to run on top of the System/38,[12] and when Fort Knox was cancelled, this project evolved into an official project to replace both the System/36 and System/38 with a single new hardware and software platform.[5] The project became known asSilverlake (named forSilver Lake in Rochester, Minnesota).[13][12][14]
The operating system for Silverlake was codenamedXPF (ExtendedCPF), and had originally begun as a port of CPF to the Fort Knox hardware.[5] In addition to adding support for System/36 applications, some of the user interface and ease-of-use features from the System/36 were carried over to the new operating system.[1]
Silverlake was available for field test in June 1988, and was officially announced in August of that year. By that point, it had been renamed to theApplication System/400, and the operating system had been namedOperating System/400.[12]
The port to PowerPC required a rewrite of most of the code below theTIMI. Early versions of OS/400 inherited theHorizontal and Vertical Microcode layers of the System/38, although they were renamed to theHorizontal Licensed Internal Code (HLIC) andVertical Licensed Internal Code (VLIC) respectively.[15] The port to the new hardware led to the IMPI instruction set and the horizontal microcode implementing it being replaced by the PowerPC AS instruction set and its implementation in PowerAS processors. This required the VLIC to be rewritten to target PowerPC instead of IMPI, and for the operating system functionality previously implemented in the HLIC to be re-implemented elsewhere.[1] This led to the HLIC and VLIC being replaced with a single layer named theSystem Licensed Internal Code (SLIC). The SLIC was implemented in anobject-oriented style with over 2 million lines ofC++ code, replacing some of the HLIC code, and most of the VLIC code.[16][17] Owing to the amount of work needed to implement the SLIC, IBM Rochester hired several hundred C++ programmers for the project, who worked on the SLIC in parallel to new revisions of the VLIC for the CISC AS/400 systems.[1] The first release of OS/400 to support PowerPC-based hardware was V3R6.[18][19]
The AS/400 product line was rebranded multiple times throughout the 1990s and 2000s.[15] As part of the 2004 rebranding toeServer i5, OS/400 was renamed toi5/OS; the5 signifying the use ofPOWER5 processors.[20] The first release of i5/OS, V5R3, was described by IBM as "a different name for the same operating system".[21]
In 2006, IBM rebranded the AS/400 line one last time toSystem i.[22] In April 2008, IBM consolidated the System i with theSystem p platform to createIBM Power Systems.[23] At the same time, i5/OS was renamed toIBM i, in order to remove the association with POWER5 processors.[24] The two most recent versions of the operating system at that time, which had been released as i5/OS V5R4 and V6R1,[25][26] were renamed to IBM i 5.4 and 6.1.[27][28][29][30]
Along with the rebranding to IBM i, IBM changed the versioning nomenclature for the operating system. Prior releases used aVersion, Release, Modification scheme, e.g. V2R1M1. This was replaced with aVersion.Release scheme, e.g. 6.1.[31] Beginning with IBM i 7.1, IBM replaced the Modification releases withTechnology Refreshes.[29] Technology Refreshes are delivered as optionalPTFs for specific releases of the operating system which add new functionality or hardware support to the operating system.[32]
When IBM i was first released as OS/400, it was split into two layers, the hardware-dependentSystem Licensed Internal Code (SLIC)[15][1] and the hardware-independentExtended Control Program Facility (XPF).[16][8][33][34] These are divided by ahardware abstraction layer called theTechnology Independent Machine Interface (TIMI). Later versions of the operating system gained additional layers, including anAIXcompatibility layer namedPortable Application Solutions Environment (originally known as thePrivate Address Space Environment),[5][35] and theAdvanced 36 Machine environment which ran System/36 SSP applications in emulation.[1]
IBM often uses different names for the TIMI, SLIC and XPF in documentation and marketing materials,[36] for example, the IBM i 7.4 documentation refers to them as theIBM i Machine Interface,IBM i Licensed Internal Code andIBM i Operating System respectively.[37]
The TIMI isolates users and applications from the underlying hardware. This isolation is more thorough than the hardware abstractions of other operating systems, and includes abstracting theinstruction set architecture of the processor, the size of theaddress space and the specifics ofI/O and persistence.[15] This is accomplished through two interrelated mechanisms:[1]
The hardware isolation provided by the TIMI allowed IBM to replace the AS/400's 48-bit IMPI architecture with the 64-bitRS64 architecture in 1995. Applications compiled on systems using the IMPI instruction set could run on top of the newer RS64 systems without any code changes, recompilation or emulation, while also allowing those applications to avail of 64-bit addressing.[8]
There are two different formats of TIMI instructions, known as theOriginal Machine Interface (OMI) andNew Machine Interface (NMI) formats.[38] OMI instructions are essentially the same as theSystem/38 Machine interface instructions, whereas NMI instructions are lower-level, resembling theW-codeintermediate representation format used by IBM's compilers.[1] IBM partially documents the OMI instructions,[39] whereas the NMI instructions are not officially documented. OMI instructions are used by the original AS/400 compilers, whereas NMI instructions are used by theIntegrated Language Environment compilers.[1] During the PowerPC port, native support for the OMI format was removed, and replaced with a translator which converted OMI instructions into NMI instructions.
The storing of the TIMI instructions alongside the native machine code instructions is known asobservability. In 2008, the release of i5/OS V6R1 (later known as IBM i 6.1) introduced a number of changes to the TIMI layer which caused problems for third-party software which removed observability from the application objects shipped to customers.[40]
The SLIC consists of the code which implements the TIMI on top of the IBM Power architecture. In addition to containing most of the functionality typically associated with an operating systemkernel, it is responsible for translating TIMI instructions into machine code, and it also implements some high level functionality which is exposed through the TIMI, such as IBM i's integrated relational database.[1] The SLIC implements IBM i's object-based storage model on top of asingle-level store addressing scheme, which does not distinguish between primary and secondary storage, and instead manages all types of storage in a singlevirtual address space.[41] The SLIC is primarily implemented in C++, and replaced theHLIC and VLIC layers used in versions of OS/400 prior to V3R6.[16]
The XPF consists of the code which implements the hardware-independent components of the operating system, which are compiled into TIMI instructions.[16] Components of the XPF include the user interface, theControl Language, data management and query utilities, development tools and system management utilities. The XPF also contains theSystem/36 Environment andSystem/38 Environment, which provide backwards compatibility APIs and utilities for applications and data migrated from SSP and CPF systems.[42] The XPF is IBM's internal name for this layer, and as the name suggests, began as an evolution of the System/38Control Program Facility.[1] The XPF is mostly implemented inPL/MI, although other languages are also used.[43]
PASE (Portable Applications Solutions Environment) providesbinary compatibility foruser mode AIXexecutables which do not interact directly with the AIX kernel, and supports the 32-bit and 64-bit AIXApplication Binary Interfaces.[44] PASE was first included in a limited and undocumented form in the V4R3 release of OS/400 to support a port ofSmalltalk.[5] It was first announced to customers at the time of the V4R5 release, by which time it had gained significant additional functionality.
PASE consists of the AIX userspace running on top of a system call interface implemented by the SLIC.[45] The system call interfaces allows interoperability between PASE and native IBM i applications, for example, PASE applications can access the integrated database, or call native IBM i applications, and vice versa.[46] During the creation of PASE, a new type of single level storage object named aTeraspace was added to the operating system, which allows each PASE process to have a private 1TiB space which is addressed with 64-bit pointers.[47] This was necessary since all IBM i jobs (i.e. processes) typically share the same address space.[5] PASE applications do not use the hardware-independent TIMI instructions, and are instead compiled directly to Power machine code.
Ports of open source software to IBM i typically target PASE instead of the native IBM i APIs in order to simplify porting.[48] Open source software for IBM i is typically packaged using theRPM package format, and installed with theYUM package manager.[49][50]
PASE is distinct from theQshell environment, which is an implementation of a Unix shell and associated utilities built on top of IBM i's native POSIX-compatible APIs.[51]
Introduced in 1994, the Advanced/36 platform ran unmodified System/36 applications and the SSP operating system in emulation on top of the OS/400 SLIC using hardware which was mostly identical to that of contemporary AS/400 systems.[1] This functionality was incorporated into OS/400 itself from V3R6 through V4R4, making it possible to run up to four System/36 "virtual machines" (to use IBM's term) using the so-calledAdvanced 36 Machine feature of the operating system.[52] Support was discontinued in the V4R5 release, coinciding with IBM's discontinuation of the Advanced/36 product line as a whole.[53] The Advanced 36 Machine feature is distinct from the System/36 Environment introduced in the initial OS/400 release and still supported in current IBM i versions.
Prior to the Advanced/36, the System/36 line used two different processors in each system - the Main Storage Processor (MSP) which ran most of the SSP operating system as well as user code, and the Control Storage Processor (CSP) which ran so-called "microcode" which implemented core operating system functionality as well as I/O. The CSP microcode was invoked from the MSP through the use of the Supervisor Call (SVC) instruction. On the Advanced/36, the CSP microcode was reimplemented inside the SLIC. An MSP emulator was also built into the SLIC, sometimes referred to as theTechnology Independent Emulation Interface. Even with the overhead of emulation, the Advanced/36 systems were significantly faster than the original System/36 systems they replaced due to the performance of their PowerPC AS processors.[1]
IBM i features an integratedrelational database currently known asIBM Db2 for IBM i.[37] The database evolved from the non-relational System/38 database, gaining support for the relational model andSQL.[1] The database originally had no name, instead it was described simply as "data base support".[54] It was given the nameDB2/400 in 1994 to indicate comparable functionality to IBM's other commercial databases.[1] Despite the Db2 branding, Db2 for IBM i is an entirely separate codebase to Db2 on other platforms, and is tightly integrated into the SLIC layer of IBM i as opposed to being an optional product.[55][56]
IBM i provides two mechanisms for accessing the integrated database - the so-callednative interface, which is based on the database access model of the System/38, andSQL.[1] The native interface consists of theData Description Specifications (DDS) language, which is used to define schemas and theOPNQRYF
command orQQQQRY
query API.[57] Certain Db2 for i features such asobject-relational database management require SQL and cannot be accessed through the native interface.[58] IBM i has two separatequery optimizers known as theClassic Query Engine (CQE) andSQL Query Engine (SQE).[59] These are implemented inside the SLIC alongside aQuery Dispatcher which selects the appropriate optimizer depending on the type of the query. Remote access through the native interface and SQL is provided by theDistributed Data Management Architecture (DDM) andDistributed Relational Database Architecture respectively.[60]
A storage engine forMySQL andMariaDB namedIBMDB2I
allows applications designed for those databases to use Db2 for i as a backing store.[61][62] Other open source databases have been ported to IBM i, includingPostgreSQL,MongoDB andRedis.[63] These databases run on the PASE environment, and are independent of the operating system's integrated database features.[64]
IBM i supportsTCP/IP networking in addition to the proprietary IBMSystems Network Architecture.[65]
IBM i systems were historically accessed and managed throughIBM 5250 terminals attached to the system withtwinax cabling. With the decline of dedicated terminal hardware, modern IBM i systems are typically accessed through 5250terminal emulators. IBM provides two terminal emulator products for IBM i:[66]
In addition, IBM provides a web-based management console and performance analysis product named IBM Navigator for i.[67]
Programming languages available from IBM for IBM i includeRPG,Control Language,C,C++,Java,EGL,COBOL, andREXX. Compilers were previously available forPascal,BASIC,PL/I andSmalltalk but have since been discontinued. TheIntegrated Language Environment (ILE) allows programs from ILE compatible languages (C, C++, COBOL, RPG, and CL), to be bound into the same executable and call procedures written in any of the other ILE languages.
When PASE was introduced, it was necessary to compile code for PASE on an AIX system. This requirement was removed in OS/400 V5R2 when it became possible to compile code using theIBM XL compiler suite inside PASE itself.[68] Since then, other compilers have been ported to PASE, includinggcc.[69]
Certain development tools for IBM i run on top of the operating system itself, such as the Source Edit Utility (SEU)text editor andProgramming Development Manager. IBM also provides anEclipse-basedintegrated development environment (IDE) for IBM i namedIBM Rational Developer for i which runs on developer workstations instead of IBM i.[70] Prior to the Eclipse-based IDE, IBM provided an IDE based on WorkFrame/2 which ran onOS/2 namedCODE/400 and an IDE based onVisualAge which ran onMicrosoft Windows systems.[71][72]
IBM i usesEBCDIC as the defaultcharacter encoding, but also provides support forASCII,UCS-2 andUTF-16.[1][73]
In IBM i, disk drives may be grouped into anauxiliary storage pool (ASP) in order to organize data to limit the impact of storage-device failures and to reduce recovery time.[74] If a disk failure occurs, only the data in the pool containing the failed unit needs to be recovered. ASPs may also be used to improve performance by isolating objects with similar performance characteristics, for example journal receivers, in their own pool.
By default, all disk drives are assigned to pool 1. The concept of IBM i pools is similar to theUnix/Linux concept ofvolume groups; however, with IBM i it is typical for all disk drives to be assigned to a single ASP.
Security in IBM i is defined in terms ofauthorities, which represents the permission to carry out a specific action on a specific object.[75] Authorities can be granted to individual users (known asuser profiles), groups (known asgroup profiles) or all users (public authorities). Related objects can be grouped together in anauthorization list, making it possible to grant authorities on all objects in the list by granting authorities on the authorization list.[76]
User profiles have an associateduser class which dictates the set of default authorities available to that user profile. There are five standard user classes which, in order of increasing privilege, are:Workstation User,System Operator,System Programmer,Security Administrator andSecurity Officer.[5] IBM i ships with a default user profile for each user class, and the default Security Officer user profile, namedQSECOFR
, is the closest equivalent to theroot user of a Unix-like operating system.[77]
IBM i can be set to use one of five levels of security, which control the extent to which the operating system's security features are enforced:[78]
The first three levels correspond to the security levels available in CPF and the initial releases of OS/400. Security level 40 was added in OS/400 V1R3 and become the default security level for the operating system. The addition of Level 40 required the removal of thecapability addressing model of the System/38 which was also present in earlier releases of OS/400.[5] Security level 50 was added in V2R3 when OS/400 was certified toTCSEC C2 security.
Branding[79] | Version | Release date[80] | End of Program Support |
---|---|---|---|
OS/400 | Old version, not maintained: V1R1[n 1] | 1988-08-26 | 1993-05-31 |
Old version, not maintained: V1R1M2[n 2] | 1988-11-25 | ||
Old version, not maintained: V1R2 | 1989-10-27 | ||
Old version, not maintained: V1R3 | 1990-09-28 | ||
Old version, not maintained: V2R1 | 1991-05-24 | 1994-06-30 | |
Old version, not maintained: V2R1M1 | 1992-03-06 | ||
Old version, not maintained: V2R2 | 1992-09-18 | 1995-03-31 | |
Old version, not maintained: V2R3 | 1993-12-17 | 1996-05-31 | |
Old version, not maintained: V3R0M5 | 1994-05-04 | 1997-05-31 | |
Old version, not maintained: V3R1 | 1994-11-25 | 1998-10-31 | |
Old version, not maintained: V3R2 | 1996-06-21 | 2000-05-31 | |
Old version, not maintained: V3R6 | 1995-12-22 | 1998-10-31 | |
Old version, not maintained: V3R7 | 1996-11-08 | 1999-06-30 | |
Old version, not maintained: V4R1 | 1997-08-29 | 2000-05-31 | |
Old version, not maintained: V4R2 | 1998-02-27 | 2000-05-31 | |
Old version, not maintained: V4R3 | 1998-09-11 | 2001-01-31 | |
Old version, not maintained: V4R4 | 1999-05-21 | 2001-05-31 | |
Old version, not maintained: V4R5 | 2000-07-28 | 2002-07-31 | |
Old version, not maintained: V5R1 | 2001-05-25 | 2005-09-30 | |
Old version, not maintained: V5R2 | 2002-08-30 | 2007-04-30 | |
i5/OS | Old version, not maintained: V5R3 | 2004-06-11 | 2009-04-30 |
i5/OS, later IBM i | Old version, not maintained: V5R4 / 5.4 | 2006-02-14 | 2013-09-30 |
Old version, not maintained: V6R1 / 6.1 | 2008-03-21 | 2015-09-30 | |
IBM i | Old version, not maintained: 6.1.1 | 2009-10-23 | |
Old version, not maintained: 7.1 | 2010-04-23 | 2018-04-30 | |
Old version, not maintained: 7.2 | 2014-05-02 | 2021-04-30 | |
Old version, not maintained: 7.3 | 2016-04-15 | 2023-09-30 | |
Old version, still maintained: 7.4 | 2019-06-21 | TBA | |
Latest version:7.5 | 2022-05-10 | TBA | |
Legend: Old version, not maintained Old version, still maintained Latest version Latest preview version Future version |