Az előző részben az IBM PS/2 gépek történetével foglalkoztam. Ebben a blog bejegyzésben az OS/2 operációs rendszer kerül terítékre.
Előzmények
Ahhoz, hogy jobban el tudjuk helyezni az OS/2-t az operációs rendszerek családjában, érdemes az előzményeket is kicsit felidézni. Megint a gyökerekhez, az IBM PC-hez kell visszakanyarodnunk. Az IBM PC operációs rendszerét a PC-DOS-t a Microsoft készítette a '80-as évek elején. A fejlesztés kalandos történetére most nem térnék ki, mert ez egy külön cikket is megér. A lényeg, hogy az IBM PC-vel szervesen összefort a PC-DOS, mint operációs rendszer. A PC-DOS elkészítésénél az volt a cél, hogy az IBM PC-ben használt mikroprocesszoron, az Intel 8088-on futtatni lehessen. Ez a processszor logikus továbbfejlesztése volt a korábbi, 8 bites Intel 8080-as CPU-nak. Lényeges újításai a 16 bites regiszterek és a megnövelt címtartomány volt, de olyan nagyon jelentős fejlesztések nem történtek a 8080-as processzor szolgáltatásaihoz képest. A megnövelt címtartomány eredményeképpen az Intel 8088 már 1 Mbájt memóriát tudott kezelni, amiből az IBM PC-ben - meglehetősen leegyszerűsítve a dolgot - 640 kbájt állt rendelkezésre az alkalmazói programok részére, a felső 384 kbájt területen címezhető memória pedig a számítógép működéséhez volt szükséges. A PC megjelenésekor a 640 kbájt tekintélyes memória méret volt, 10-szer több, mint ami egy komolyabb 8 bites számítógépben rendelkezésre állt akkoriban. Viszont ahogy egyre komplexebb allamazásokat kezdtek készíteni a programozók és egyre nagyobb mennyiségű adattal dolgoztak a PC-ken, a 640 kbájt-os korlát egyre kényelmetlenebbé kezdett válni. Erre a problémára elviekben megoldást nyújtott volna az Intel új 80286-os processzora, ami akár 16 Mbájt fizikai memóriát is tudott kezelni, de volt egy kis bökkenő. Az Intel 80286 az elődjéhez képest valóban egy hihetetlenül fejlett processzor volt. Az említett 16 Mbájt memória megcímzése mellett olyan tulajdonságokkal vértezték fel, ami korábban csak a több felhasználós, egyszerre több alkalmazást futtatni képes nagyszámítógépek privilégiuma volt. A probléma viszont az volt vele, hogy maga a processzor hiába rendelkezett ilyen nagyszerű képességekkel, ezeket csak egy speciális, úgynevezett védett (protected) üzemmódban lehetett kihasználni. Kompatibilitási okokból, alapértelmezetten viszont csak a 8088-as processzor képességeivel egyenértékű, valós (real) üzemmódban működött a 80286-os is. Ez biztosította, hogy az Intel 8088-as processzorra írt alkalmazások, köztük maga a PC-DOS operációs rendszer probléma nélkül fusson a 286-oson is. A védett üzemmód nélkül a 286-os szinte csak egy nagyobb órajelű 8088-asként működött, az 1 Mbájt-os memória limitet is beleértve!
Ez annyira így volt, hogy sok 286-os alaplapon nem is volt hely 1 Mbájt-nál több memóriának. Teljesen felesleges lett volna több, hiszen a szinte egyeduralkodó DOS-os alkalmazások úgy sem tudták volna kihasználni az ennél nagyobb méretű memória előnyeit.
Adja magát a megoldás, hogy akkor egyszerűen át kell kapcsolni a processzort a védett üzemmódba, és úgy futtatni a DOS-t, illertve az alkalmazásokat. Ez sajnos nem volt ennyire egyszerű. A védett üzzemmód teljesen eltérő filozófiával működik, nem teszi lehetővé a memória tartalom közvetlen elérését az alkalmazások számára. Ez a tulajdonság azért szükséges, mert így lehet megoldani, hogy az alkalmazások ne tudjanak az operációs rendszer, vagy egymás kód- és adat területeire mindenféle kontrol nélkül belepiszkálni, ezzel veszélyeztetve a rendszer stabilitását és az adatok integritását. Az 1 Mbájtos memória korlát átlépéséhez az kellett volna, hogy a DOS-t alkalmassá tegyék a védett üzemmódban történő működésre, viszont ez a korábbi DOS-os alkalmazásokkal való kompatibilitás megszűnését eredményezte volna. Minden programot újra kellett volna fordítani, hogy szintén képes legyen a védett üzemmódban működni. Ez túl nagy ár lett volna azért, hogy néhány memória éhes alkalmazás igényeit ki tudják elégíteni a személyi számítógépek.
Ne felejtsük el, hogy a '80-as években 640 kbájt memória nem volt még olyan vészesen kevés a legtöbb alkalmazás számára. Ráadásul a rendszer által lefoglalt felső 384 kbájtból is el lehetett csenni még valamennyit, illetve egy ügyes trükkel az 1 Mbájtos határ felett lévő 64 kilobájt méretű memória terület is elérhetővé vált a DOS-os programok számára. Az 1990-ben megjelent Windows 3.0 is elfutott még egy 8088-as processzorral és 1 Mbájt RAM-mal felszerelt számítógépen.
Körülbelül ez volt a helyzet a '80-as évek közepén. Az újabb, 80286-os processzort használó számítógépek elviekben alkalmasak voltak akár 16 Mbájt memória kezelésére is, de a korábbi processzor generációhoz fejlesztett és nagyon elterjedt PC-DOS ezt nem tudta kihasználni. Amikor az IBM elkezdett gondolkodni a nagyszabású tervein az IBM PC megreformálásával kapcsolatban, akkor a vas mellé egy méltó operációs rendszert is megálmodtak, ez volt az OS/2.
A fejlesztés elkezdődik
1985-ben az IBM és a Microsoft aláírt egy megállapodást a jövő operációs rendszerének közös fejlesztéséről. A Microsoft a '80-as évek elejétől az IBM stratégiai partnerének számított a PC-DOS révén, így nem volt meglepő, hogy az IBM velük képzelte el a következő generációs számítógépeik operációs rendszerének fejlesztését is. Az OS/2-t eleve úgy tervezték, hogy az Intel 80286-os processzor védett üzemmódjában mőködjön és egy időben több alkalmazást is tudjon futtatni (multitasking). Ez a DOS-os programokkal való kompatibilitás részleges feladását is jelentette, de mint a PS/2 gépcsaládról szóló cikkből kiderült, az IBM egyébként is teljesen új alapokra szándékozta helyezni a jövő Personal Computer-ét. Ebbe a koncepcióba az OS/2 teljesen beleillett. Az IBM az OS/2-t a DOS védett módban futó utódjának szánta, ami végre ki tudja használni a 80286-os processzorban lévő potenciált. Az OS/2-t a PS/2 gépcsaláddal egy időben kívánta piacra dobni az IBM, és kezdetektől fogva grafikus felhasználói interfésszel (GUI) képzelték el az új rendszert.
Az OS/2 1.0
Végül az OS/2 1.0 1987 év végén jelent meg, de még csak szöveges üzemmódban tudott működni, mivel a GUI nem készült el időben. A pletykák szerint a csúszás oka az volt, hogy a Microsoft egyre inkább a saját grafikus felhasználói felületének, a Windows-nak a fejlsztésére fókuszált, így nem maradt már elég kapacitása arra, hogy az IBM-el közös rendszerük is időben elkészüljön. Annak ellenére, hogy látszólag úgy nézett ki mint a korábbi DOS operációs rendszerek, valójában nagyon is különbözött ezektől, habár azt nem lehet mondani, hogy teljesen szakított volna a múlttal. Ugyan azt a fájlrendszert használta mint a DOS, ezért szabadon lehetett fájlokat cserélni a két rendszer között. Sőtt, ugyan azon a partíción elfért egymás mellett az OS/2 és a DOS operációs rendszer amelyek között a gép indításakor lehetett választani. Ráadásul az OS/2 lehetővé tette DOS-os alkalmazások futtatását, ha azok bizonyos követelményeknek megfeleltek. Amit viszont ki kell emelni, hogy az OS/2 1.0 a Intel 80286-os processzor védett üzemmódjában futó operációs rendszer volt. Ez azt jelenti, hogy akár több alkalmazást is képes volt egy időben futtatni (multitasking), illetve eltűnt a valós módban létező 1 Mbájt-os memória korlát olyannyira, hogy az alkalmazások a 16 Mbájt fizikai memóriánál nagyságrendekkel nagyobb (elviekben akár 1 Gbájt!) virtuális memóriát is használhattak volna. Persze ez abban az időben még nem volt egy valóban kihasználható előny, mert a virtuális memóriaként funkcionáló háttértárak mérete néhányszor 10 Mbájt volt mindösszesen, de jól jelzi, hogy maga a processzor, illetve az ennek képességeit kihasználó operációs rendszer, mennyire fejlett volt a DOS-hoz képest. Viszont a védett módban való működés bizonyos korlátokat is szabott. A DOS világában az alkalmazások szabadon hozzáférhettek a BIOS vagy a DOS által biztosított alapvető szoftver funkciókhoz, de a programozó úgy is dönthetett, hogy nem használja ezeket, hanem saját maga írja meg az alapoktól az alkalmazásait. Semmilyen kötöttség nem volt e tekintetben. Az OS/2 esetében más volt a helyzet. Itt már nem lehetett közvetlenül elérni a BIOS-t, vagy direktben programozni a számítógép hardverét. Ez a tulajdonsága sokkal hasonlatosabbá tette a modern operációs rendszerekhez, mint a DOS laza, maximális szabadságot nyújtó világához. A programozónak az operációs rendszerrel együttműködve, az OS/2 által biztosított interfészeken keresztül volt lehetősége elérni a számítógép erőforrásait. Ez viszont azt is jelentette, hogy a korábban nem ilyen filozófiával készült DOS-os programok általában nem futottak az új OS alatt. Volt bizonyos kompatibilitás a DOS-al, de ez messze nem volt 100 %-os.
Az új operációs rendszer további érdekességei inkább azoknak fog mondani valamit, akik járatosak a programozásban, de azt gondolom, hogy érdemes ezeket is megemlíteni. Az operációs rendszer funkcióit dinamikusan csatolt függvény könyvtárak (DLL) segítségével lehetett elérni. Ilyen függvény könyvtárakat a programozók saját maguk is létre tudtak hozni a saját céljaikra. Ez manapság már nem újdonság, de 1987-ben nem volt triviális dolog. Az OS/2 többfeladatos, többszálas operációs rendszer volt, amely lehetővé tette a folyamatok közötti kommunikációt is és minden olyan funkcionalitással rendelkezett, amely egy ilyen többfeladatos környezetben szükséges, támogatta a folyamatok közötti szinkronicációt, osztott memória használatot, csöveket, várakozó sorokat és szemaforokat. Egyedül a több processzor használatának és a több felhasználó kiszolgálásának képessége hiányzott belőle. Az OS/2 1.0 Extended Edition ezeken felül fejlett hálózat kezelési megoldásokat is biztosított a nagyvállalati környezetben történő felhasználás igényeinek kielégítésére. Ezek a képességek főleg az IBM nagygépes hálózati megoldásainak- és adatbázisainak használatát tették lehetővé.
Az OS/2 1.0 felhasználói felülete szinte teljesen megegyezett a DOS-al. A parancsok neve és működése is lényegében azonos volt, mint amit a DOS-ban megszoktak a felhasználók. Egy átlag felhasználó számára nem volt lényeges különbség a két rendszer között, kivéve a program választót, amely lehetővé tette, hogy párhuzamosan több programot is el lehessen indítani és ezek között át lehessen váltani. Ezt a lehetőséget a szoftver fejlesztők jól tudták kamatoztatni, mert miközben egy program fordítás futott a háttérben, folytathatták a szoftver írását a szövegszerkesztőben.
Az OS/2 1.0 sok szempontból úttörő és nagyon modern rendszer volt. Ha visszatekintünk az operációs rendszerek fejlődésére a PC-DOS és a Windows NT közötti időszakban, akkor elmondható, hogy az OS/2 1.0 a felszínen sokkal közelebb állt a DOS-hoz, de a rendszer felépítését tekintve inkább az NT-hez hasonlított.
Mit mondhatunk tehát az OS/2 első verziójáról? Irónikus módon egyszerre volt nagyon korszerű és ugyanakkor elavult is. A többszálúság, a multitaszking vagy a DLL-ek használata 1987-ben előremutató szoftver technológiáknak számítottak a PC világban. Az OS/2-ben megvalósított pre-emptív multitaszking képességekre a Windows felhasználóknak a Windows NT megjelenéséig kellett várni és a teljesen védett módban történő működést is csak az 1993-ban megjelent NT tudta először a Microsoft berkein belül. Ugyanakkor az OS/2 1.x verziói nem tudták kihasználni az akkor már létező 32 bites Intel 80386 processzor által nyújtott előnyöket, miközben a szintén 1987-ben megjelent Windows 2.0 386-os verziója már részlegesen tudta ezeket. Ez a fogyatékosság egyszerűen abból fakadt, hogy amikor az OS/2-t elkezdték fejleszteni, az Intel 80386 még nem volt piacon, így nem számoltak vele komolyan. Az IBM úgy tekintett a 80286 processzorra épülő rendszerekre, mint amelyek még sokáig képezhetik a PC-re alapozott informatika világának derékhadát. Amikor belekezdtek a fejlesztésbe, azzal a dilemmával néztek szembe, hogy vagy rövid időn belűl piacra dobják a 80286-ra kihegyezett operációs rendszerüket vagy kihagyják ezt a lépcsőfokot és egyből a 80386-ot célozzák meg. Az, hogy végül a 80286 mellett tették le a voksukat 1985-ben ésszerű döntésnek látszott, de egészen 1992-ig kellett várni, amíg megjelent a 32 bites OS/2 2.0, ami már ki tudta használni a 80386 képességeit. A vetálytársak hamarabb léptek. Az említett Windows/386, vagy a PC-re adaptált UNIX variánsok ezen a területen komoly előnyre tettek szert az IBM rendszerével szemben. Ez a késés valószínűleg végzetesnek bizonyult az OS/2 jövőjét illetően, persze ez csak később derült ki.
Az OS/2 1.1
Az 1988-ban kiadott 1.1-es verzió újdonsága a régóta várt grafikus felhasználói interfész a Presentation Manager volt. Ez megjelenésében a Windows 2.0-hoz hasonlított, ami nem meglepő a Microsoft-al közös fejlesztés miatt. A látszólagos hasonlóság ellenére voltak lényeges különbségek a Microsoft Windows-hoz képest, de ezek inkább technikai jellegűek voltak. Minden esetre ezek a különbségek nem tették lehetővé, hogy egy Windows-os programot változtatás nélkül futtatni lehessen az OS/2 alatt is. Történtek még kisebb fejlesztések a hálózatos funkciók és a nyomtatás kezelés területén is.
A grafikus felhasználói felület bevezetése nem volt egy diadalmenet. Hiába volt meg a keretrendszer, ha nem voltak alkalmazások amelyek ennek képességeit kihasználták volna. A Presentation Manager önmagában, alkalmazások nélkül nem volt egy nélkülözhetetlen dolog. Az, hogy például több konzol ablakot is el lehetett indítani benne, bizonyos előnnyel járt, de nem feltétlenül volt erre mindenkinek szüksége. Az OS/2-höz fejlesztett alkalmazások viszont elég lassan akartak megjelenni. Ennek több oka is volt. A Presentation Manager-ben működő alkalmazások fejlesztéséhez más gondolkodás kellett, mint egy DOS-os programhoz, ezért a meglévő programok nem voltak egyszerűen átírhatók az új operációs rendszerhez. A szoftver fejlesztő eszközök is lassan érkeztek és drágák voltak.
Az első, OS/2-re kiadott alkalmazások között megtaláljuk a Microsoft Excel-t és az Aldus PageMaker-t, de a hasonló irodai, kiadvány- és szövegszerkesztő programok terjedését az is nehezítette, hogy csak kevés nyomtatóhoz, vagy nagy felbontású grafikus kijelzőhöz volt driver az OS/2 alatt. Az illesztőprogramok fejlesztői hezitáltak, mert nem látszott kifizetődőnek egy olyan platformra fejleszteni, ahol csak kevés alkalmazás van, viszont az alkalmazás fejlesztők sem törték magukat, mert nem voltak eszköz meghajtók, amik az alkalmazásaikat kiszolgálták volna. Igazi ördögi kör. Az OS/2 1.1 végül elég rövid életű lett. Mire kezdett használhatóvá válni, addigra megjelent az utódja, az 1.2-es verzió így az 1.1-et a továbbiakban a szoftver fejlesztőknek nem volt értelme tovább támogatni.
Az OS/2 1.2
Az OS/2 1.2 fejlesztése arra az időszakra esett, amikor az IBM és a Microsoft kapcsolata kezdett megromlani. 1988-ban a Microsoft elkezdett dolgozni az NT (New Technology) operációs rendszeren, amit eredetileg NT OS/2 néven emlegettek, de ezzel párhuzamosan folyamatban volt az OS/2 386 fejlesztése is. Az OS/2 1.1 eladási mutatói várakozáson aluliak lettek, és ez új helyzetet teremtett. Eredetileg még a Microsoft is az OS/2-t favorizálta a Windows ellenében, de a rossz eladási adatok a helyzet átgondolására késztették őket. Az IBM-nek viszont semmi érdeke nem fűződött a Windows-hoz, ezért ők továbbra is az OS/2-t szekerét tolták volna. A körvonalozódó érdekellentétek ellenére mindkét cég tovább folytatta az OS/2 közös fejesztését.
Az 1989 végén kiadott 1.2-es verzió tulajdonképpen az volt, ami az 1.0 kellett volna legyen, mert ebben a verzióban sikerült végre megvalósítani azoknak a funkcióknak a nagy részét, amelyeket már a kezdetektől ígértek. Fejlesztettek a grafikus felhasználói felületen, ami így már a Windows 3.0-hoz volt hasonló. Megoldották az úgynevezett telepíthető fájlrendszerek használatát, amelyek közül a HPFS-t (High Performance File System) szállították alapértelmezetten az OS/2-vel.
A HPFS számos tulajdonságban messze jobb volt, mint a korábban használt DOS-os FAT fájlrendszer. Az egyik leglényegesebb, hogy támogatta a hosszú fájlnevek használatát, egészen 255 karakter hosszúságig. A fájlokhoz vagy könyvtárakhoz társítani lehetett egy maximum 64 kbájtos Extended Attributum fájlt, amiben pl. a programhoz társított ikont, program leírást vagy egyéb információkat lehetett tárolni. A HPFS lehetővő tette az akár 64 Gbájt méretű partíciók használatát is, habár ez az akkori merevlemezek kapacitását nagyságrendekkel haladta meg, így sokáig inkább csak elvi lehetőség volt, mint gyakorlati előny. Ezeken felül ez a fájlrendszer sokkal kevésbé volt hajlamos a töredezettségre és a sérülések ellen is sokkal jobban védett volt mint a FAT fájlrendszer.
A Windows 3.0-val összehasonlítva szembeötlő, hogy mennyire hasonlított a két rendszer megjelenése. Az ikonok, betű típusok, színsémák nagyon hasonlóak voltak. Viszont a Windows csak egy szép ruha volt az öreg és primitív DOS-ra erőszakolva, miközben az OS/2 egy valódi védett módú operációs rendszer volt, amely arra is képes, hogy egy különálló feladatként akár a Windows-t is futtassa! Ellenben a Windows-hoz sokkal több eszközmeghajtó létezett és számos kisalkalmazás járt hozzá. Az OS/2 egyszerű, üzleti megjelenése miatt is lehetett az, hogy a Windows a végfelhasználók körében népszerűbbé vált.
Az OS/2 1.3
A Windows 3.0 sikere volt az utolsó csapás az IBM-Microsoft partnerségre. Az 1980-as évek közepén a Microsoft vezetői tudták, hogy szükségük van az IBM-re, legalábbis nem tudnának versenyezni egy másik, az IBM által felkarolt vállalat ellen. 1990-ben azonban már elég erősnek érezték magukat ahhoz, hogy önállóan folytassák. Ennek az lett az eredménye, hogy a Microsoft a Windows 3.0-ra és az NT-re koncentrált, míg az IBM folytatta az OS/2 fejlesztését. A Microsoft-nak még mindig számos OS/2-vel kapcsolatos projektje volt, de az üzleti stratégia határozottan a Windows köré szerveződött.
Az OS/2 1.3-at elsősorban az IBM fejlesztette ki és 1990 novemberében jelent meg. Jelentősebb újdonságok nem voltak benne, részben azért, mert már az OS/2 2.0 ott volt a láthatáron. A kódot optimalizálták és csökkentették a méretét, ezzel csökkentve a memóriaigényt és növelve a teljesítményt. Az új tulajdonságok között szerepelt még a REXX szkriptnyelv támogatása, az Adobe Type Manager (ATM) és a továbbfejlesztett nyomtatási alrendszer. Az IBM tovább folytatta az OS/2 eladását a PS/2 gépekkel, lehetőleg nagy tételben, vállalati ügyfeleknek, így az üzlet a szokásos módon folyt tovább.
A Microsoft táborában a dolgok sokkal érdekesebben zajlottak. A hosszú távú stratégia egyértelműen a Windows operációs rendszerre épült, de ez komoly rövid távú nehézségeket okozott. A Microsoft-nak szüksége volt egy platformra a szerver oldali termékeikhez, a LAN Manager-hez és az SQL Server-hez. A DOS nyilvánvalóan nem volt alkalmas erre a célra, és a Windows NT még messze volt, mivel majd csak 1993 közepén jelent meg. A köztes időben a Microsoft-nak szüksége volt az OS/2-re, annak ellenére, hogy ez most „ellenséges” terméknek számított. A Tiger kódnéven ismert projekt az OS/2 1.3 Microsoft verziója volt, amelyet a Microsoft közvetlenül értékesített, nem pedig OEM csatornákon keresztül, ahogyan például az MS-DOS korábbi kiadásai esetében történt. Mivel a Microsoft OS/2 1.3-at elsősorban a LAN Manager szerver platformjának szánták, a Microsoft kifejlesztett egy új lemezmeghajtó architektúrát, ami megkönnyítette a korszerű lemezvezérlők támogatását. Ez volt az egyetlen jelentős különbség az OS/2 1.3 IBM és Microsoft féle kiadásai között.
A jelentősebb szoftverházak lassan adták ki a főbb alkalmazásaik OS/2 alatt futó verzióit. Részben azért, mert lassan ismerték fel a GUI-környezetek jelentőségét, másrészt a Microsoft hibás fejlesztési koncepciója miatt, mivel az OS/2 Presentation Manager-e csak látszólag hasonlított a Windows-hoz, de technikailag nagyon különbözőek voltak. Ennek eredményeként a szoftver fejlesztők akiknek már voltak Windows-os alkalmazásaik, nem voltak igazán érdekeltek, hogy ezeket adaptálják az OS/2-es környezetbe. Volt azonban egy vállalat, amely meglehetősen sokféle OS/2 alkalmazást kínált: a Microsoft. Az Excel-nek és a Word-nek is volt OS/2 verziója. A Microsoft fejlesztőeszközeinek szintén jó volt az OS/2 támogatása, és a Microsoft szoftver fejlesztői közül is sokan használták az OS/2-t. Ironikus módon még az NT fejlesztési munkáit is az OS/2 alatt végezték.
A DOS-al való korlátozott kompatibilitása és a Presentation Manager alatt használható alkalmazások hiánya miatt az OS/2 1.x verziói nem voltak vonzók általános asztali használatra szánt operációs rendszerként, viszont számos kulcsrakész, szerver-kliens architektúrájú informatikai megoldásban használták, mivel a DOS-nál jóval robosztusabb platformot biztosított a kliens oldali szoftverek futtatásához.
A következő részben a 32 bites OS/2 verziók kerülnek terítékre.