[8][9] It is an evolution of the System/38 CPF operating system,[5] with compatibility layers for System/36 SSP and AIX applications.
[5] It inherits a number of distinctive features from the System/38 platform, including the Machine Interface which provides hardware independence, the implementation of object-based addressing on top of a single-level store, and the tight integration of a relational database into the operating system.
[5] Development began in the aftermath of the failure of the Fort Knox project, which left IBM without a competitive midrange system.
[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.
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 the System Licensed Internal Code (SLIC).
[32] When IBM i was first released as OS/400, it was split into two layers, the hardware-dependent System Licensed Internal Code (SLIC)[15][1] and the hardware-independent Extended Control Program Facility (XPF).
[16][8][33][34] These are divided by a hardware abstraction layer called the Technology Independent Machine Interface (TIMI).
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 system kernel, 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.
[41] The SLIC is primarily implemented in C++, and replaced the HLIC 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.
[44] PASE was first included in a limited and undocumented form in the V4R3 release of OS/400 to support a port of Smalltalk.
PASE consists of the AIX userspace running on top of a system call interface implemented by the SLIC.
[5] PASE applications do not use the hardware-independent TIMI instructions, and are instead compiled directly to Power machine code.
[49][50] PASE is distinct from the Qshell environment, which is an implementation of a Unix shell and associated utilities built on top of IBM i's native POSIX-compatible APIs.
[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.
[1] The native interface consists of the Data Description Specifications (DDS) language, which is used to define schemas and the OPNQRYF command or QQQQRY query API.
[60] A storage engine for MySQL and MariaDB named IBMDB2I 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, including PostgreSQL, MongoDB and Redis.
[1][73] In IBM i, disk drives may be grouped into an auxiliary 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.
The addition of Level 40 required the removal of the capability addressing model of the System/38 which was also present in earlier releases of OS/400.