# IBM i

IBM-besturingssystemen :
| Servermodel | Besturingssysteem |
| S/38 | CPF |
| S/36 | SSP |
| AS/400 | OS/400 |
| E-Server iSeries | OS/400 |
| E-Server i5 | i5/OS |
| IBM Power Systems | IBM i |
IBM i is een besturingssysteem van IBM voor het IBM Power Systems-platform. Het besturingssysteem is geëvolueerd uit CPF voor de S/38, en heette achtereenvolgens OS/400, i5/OS en sinds april 2008 IBM i.

## Geschiedenis
### S/38 en CPF

In 1978 kwam S/38 van IBM uit, met als besturingssysteem Control Program Facility (CPF). Het project dat had geleid tot dit systeem stond onder leiding van dr. Frank Soltis, en was uitgevoerd in het laboratorium van IBM in Rochester (Minnesota).
CPF was een revolutionair besturingssysteem. Behalve alle zaken die je van een besturingssysteem mocht verwachten, bevatte CPF een groot aantal faciliteiten die normaliter apart moesten worden aangekocht, zoals:
* Een geïntegreerd relationeel database-systeem (alhoewel de moderne definitie van een database hierop niet toepasbaar is) bestaande uit fysieke bestanden die de daadwerkelijke data bevatten, en logische bestanden waarmee indexen en views konden worden gemaakt. Door het ontbreken van SQL werd elk bestand, net als een programma, gecodeerd in broncode, en vertaald naar een machine-object.
* Een beveiligingsmodel waarbij elke gebruiker beschikking kreeg over gebruikersnaam en wachtwoord, en op basis van roldefinities beschikking kreeg over toegang tot objecten uit het besturingssysteem. Dit beveiligingsmodel werd al snel erkend als een van de sterktepunten van dit besturingssysteem, en was voor veel bedrijven een van de motivaties om S/38 en CPF te gaan gebruiken.
* Faciliteiten voor datacommunicatie, in die tijd uiteraard vooral bestaande uit configuratiemogelijkheden voor modemverbindingen. Alhoewel alle faciliteiten aanwezig waren, was het configureren vrij ingewikkeld en omslachtig, wat door velen als kritiekpunt werd gebruikt.
* Een moderne aanpak van interactieve programmatuur. Veel computersystemen uit die tijd waren pure batch-georiënteerde gegevensverwerkers, waar alleen met veel pijn en moeite programmatuur voor kon worden gemaakt die scherminteractie toestond. Soltis' team had dat onderkend, en had al in de eerste versie van CPF de scheiding aangebracht tussen logica en presentatie. De presentatie werd ondergebracht in een displayfile, en het achterliggende programma kon de interactie afhandelen door eenvoudig datarecords te lezen en te schrijven naar de displayfile. Het GUI-fenomeen was nog niet uitgevonden, en de schermen waren dus karaktergeoriënteerd, in een opbouw met 24 regels van 80 karakters.
Uiteraard had de integratie van al deze functionaliteit in het besturingssysteem een groot nadeel: de klant had geen keuze. Gebruik van CPF liet geen andere database-implementaties, beveiligingspakketten enz. toe. Veel kritiek die Microsoft tegenwoordig ten deel valt met betrekking tot het integreren van allerlei functionaliteit in Windows was dus in 1978 al van toepassing op IBM.
Bovendien was de fundamentele architectuur vernieuwend, door het toepassen van een machine interface (MI) werd de onderliggende hardware voor het besturingssysteem en de applicaties bijna volledig gevirtualiseerd. Een van de effecten hiervan was dat CPF kon werken met een concept dat single level storage werd genoemd: interactie met het schijvengebied werd door de MI uitgevoerd. Elk onderdeel van het besturingssysteem werd als object beschikbaar gemaakt, en elk object was uniek identificeerbaar met behulp van objectnaam, objecttype en de bibliotheek waarin zich dat object bevond. CPF kende als gevolg daarvan geen instructies om bijvoorbeeld een programma in het geheugen te laden, het eenvoudig aanroepen van het programma was voldoende om er voor te zorgen dat het in geheugen werd geladen. CPF was daarmee een van de eerste object-georiënteerde besturingssystemen.
IBM leverde bij CPF als programmeertalen RPG en COBOL. RPG was al min of meer een IBM-eigen taal, en de Cobol versie die werd bijgeleverd was aanmerkelijk anders dan ANSI-Cobol, omdat hierin instructies waren opgenomen voor de CPF-eigen functionaliteit. Voor een ervaren Cobol programmeur was het even wennen om programma's te maken voor een S/38.

### S/36 en SSP

Om ook de markt te bedienen die op zoek was naar een eenvoudig te beheren computersysteem bracht IBM in 1983 de S/36, met SSP als besturingssysteem. SSP was veel eenvoudiger dan CPF en daarmee werd het beheer vereenvoudigd. Een belangrijk voordeel van SSP boven CPF was de aanwezigheid van een menustructuur in het besturingssysteem, waarmee alle systeemfuncties konden worden opgezocht. CPF ontbeerde dat, en kon alleen met CL (Control Language) opdrachten worden bestuurd.
Voor SSP was RPG ook de belangrijkste programmeertaal voor applicatieprogramma's, het was echter een andere RPG-versie dan die van CPF. Programma's van de twee systemen waren niet uitwisselbaar, en ook niet compatibel op broncodeniveau. De migratie van een S/36 naar een S/38 was dan ook niet eenvoudig, en was voor veel bedrijven een moeilijk te nemen drempel.

### AS/400 en OS/400

Vanuit strategisch oogpunt was het voor IBM van belang de diverse computerlijnen (S/36, S/38, 4300 en S/370) samen te voegen tot één systeem. Dit nieuwe systeem moest de sterktepunten van S/36 (eenvoudig beheer, menustructuur) combineren met die van S/38 (geïntegreerde database en security, scheiding van logica en presentatie). Het gevolg van deze samenvoeging werd in 1987 gepresenteerd als AS/400, met het nieuwe besturingssysteem OS/400. Programmeurs en beheerders van S/38 werden op hun wenken bediend: de eerste versie van OS/400 was eigenlijk een nieuwe release van CPF, met wat nieuwe CL-commando's en een menustructuur. Degenen die gewend waren aan SSP hadden het wat lastiger, alhoewel OS/400 een emulatie in zich had van SSP, zodat ook programma's van S/36 zonder al te veel problemen konden worden gemigreerd.
In de jaren 90 kwam de ontwikkeling van OS/400 een beetje in een slaapstand terecht. Alhoewel er regelmatig release-updates kwamen, was daar vaak niet al te veel revolutionairs te ontdekken. De trend om meer en meer grafische weergave te gebruiken werd door IBM wat genegeerd, en de AS/400 kreeg een wat oubollig imago. De populariteit begon daardoor ook wat te dalen.

### Moderne technieken

Sinds het omarmen van GNU/Linux en Java-technologie is OS/400 weer in de lift. IBM positioneert OS/400 als het besturingssysteem dat bij voorkeur voor WebSphere en J2EE wordt gebruikt. Al een aantal jaren is er een grafische interface voor beheertaken in het product Operations Navigator, waarmee met de muis het beheer over de machine kan worden gevoerd.
De meest recente versie van dit besturingssysteem heeft de naam i5/OS meegekregen en steunt op de technologie van de Power5-processoren die is geïntroduceerd in de nieuwste servers van het iSeries-gamma. De Power5-technologie maakt het mogelijk op één server tegelijkertijd verschillende besturingssystemen te draaien door middel van logische partitionering (LPAR). Met LPAR wordt de server verdeeld in virtuele servers, die elk als zelfstandige server functioneren. Het toewijzen en "verhuizen" van resources als processor-capaciteit en geheugen kan dynamisch worden uitgevoerd, het verhuizen van andere hardware zoals netwerkkaarten e.d. vereist een reboot van de betrokken partities.
Elke partitie heeft een eigen besturingssysteem, waarbij kan worden gekozen tussen OS/400, AIX en GNU/Linux.

## DB2/400 en SQL

Alhoewel SQL al een flink aantal jaren beschikbaar is in OS/400, heeft het toch enige tijd geduurd voordat IBM de in OS/400 ingebouwde database engine DB2 durfde te noemen. Inmiddels is DB2 voor OS/400 (DB2/400) een zeer krachtige database-engine met volwaardige functionaliteit die voldoet aan het relationele model. Waar in het verleden databasetabellen via gecompileerde broncode tot stand kwamen, is dit inmiddels vervangen door een SQL-omgeving die zowel vanuit de 80x24 groene schermen, als vanuit Operations Navigator kan worden gebruikt. DB2/400 ondersteunt alle moderne technieken als triggers, constraints en een geavanceerde manier van transactieverwerking.

## Machine Interface

Het MI-concept dat al uit de S/38-tijd stamt is doorontwikkeld tot een vrijwel volledige virtualisatie van de hardware, door toepassing van de Technology Independent Machine Interface-laag (TIMI). TIMI is de laag die API's bevat naar de hardware componenten, en het toepassen van deze techniek maakt het mogelijk om verschillende besturingssystemen te installeren (OS/400, AIX en Linux). Bovendien kunnen de TIMI-API's rechtstreeks worden aangesproken, welke techniek door IBM wordt toegepast in de WebSphere Application Server-implementatie voor OS/400. Dit in tegenstelling tot WebSphere op andere platforms, waar functies uit het besturingssysteem moeten worden gebruikt.

## Windows-integratie

Door toepassing van een techniek die achtereenvolgens File Server I/O Processor (FSIOP), integrated PC server (IPCS), integrated Netfinity server en tegenwoordig Integrated xSeries Server (IXS) of Integrated xSeries Adaptor (IXA) heet, heeft IBM het mogelijk gemaakt ook Windows servers te integreren in de iSeries-server. In een OS/400-partitie wordt daarvoor een virtueel schijvengebied gemaakt, dat is toe te wijzen aan een IXS of IXA. De IXS zelf is een insteekkaart met Intel processor, die kan worden gebruikt voor installatie van Windows server-edities. De IXA is de variant van deze functionaliteit, waarmee een externe xSeries-server kan worden gekoppeld aan de iSeries.

## Netwerken

Voor de verbinding van de terminals werd in het verleden het twinax-protocol gebruikt. Alhoewel nog steeds ondersteund, wordt twinax eigenlijk niet meer toegepast, omdat het gebruik van terminals nagenoeg verdwenen is. Voor datacommunicatie werd door IBM gebruikgemaakt van SNA en Token Ring-techniek. Ook deze technieken zijn inmiddels door marktwerking naar de achtergrond geraakt, en vervangen door respectievelijk TCP/IP en ethernet.