Ugrás a tartalomhoz

Operációs rendszerek mérnöki megközelítésben

Benyó Balázs, Fék Márk, Kiss István, Kóczy Annamária, Kondorosi Károly, Mészáros Tamás, Román Gyula, Szeberényi Imre, Sziray József

Panem Kiadó

1.2. Az operációs rendszerek története

1.2. Az operációs rendszerek története

Az operációs rendszerek történetét a számítógépek történetével párhuzamosan, azzal szoros összefüggésben tárgyaljuk. A fejlődés menetének felvázolása során vegyük észre, hogy minden kornak megvolt a „legégetőbb” problémája, amely mellett a többi – bármilyen komoly volt is – eltörpült. Amint azonban sikerült megoldást találni erre, azonnal a következő időszerű nehézség megoldását célozták meg. Így például, mint látni fogjuk az alábbiakban, az első generációs (elektroncsöves) gépek legnagyobb gondja a megbízhatatlanság volt, amely mellett nemigen számított a rossz gépkihasználás. Amint azonban megjelentek a második generációs „megbízható” (tranzisztoros) gépek, a gépidő jobb kihasználásának kérdése került előtérbe. Vagy egy másik példát említve, amint napjainkhoz közeledve eljutottunk ahhoz, hogy a nagysebességű, megbízható gépek kihasználása „optimálissá” vált, majd bizonyos eszközök olcsósága miatt egyre kevésbé volt fontos azok minél jobb kihasználása, a felhasználó kényelmének kiszolgálása lett a „legsúlyosabb” megoldandó probléma.

1.2.1. Korai rendszerek

Charles Babbage (1792–1871) nevéhez fűződik az a szerkezet, amely tulajdonképpen a digitális számítógép ősének tekinthető. Az általa „elemző gépnek” (analytical engine) nevezett mechanikus szerkezetet azonban akkor soha nem sikerült megépíteni, mert abban az időben nem tudták az alkatrészeket megfelelő pontossággal előállítani. (Az eredeti tervek alapján megépítették, és 1991-ben bemutatták a gépet, amelyik azóta a London Science Museumban látható.)

Hatalmas előrelépést jelentett, hogy a II. világháború befejeződése környékén több egyetemen, illetve kutatóintézetben sikerült működő számítógépet építeni – például az Egyesült Államokban H. Aiken (Harvard), J. P. Eckert és W. Mauchley (University of Pennsylvania), Németországban pedig K. Zuse nevéhez fűződnek sikerek. Igazán ismertté azonban Neumann János (1903–1957) magyar származású, Amerikában élt matematikus és H. H. Goldstine írányítása alatt épült (1945) „első” számítógép vált. Az EDVAC (Electronic Discrete Variable Calculator, diszkrét változós elektronikus számológép) hosszú ideig mintául szolgált a többi tárolt programú, elektronikus programvezérlésű számítógép építéséhez. A von Neumann által megfogalmazott alap­elv (mely szerint a programokat és adatokat ugyanabban a tárban, ugyanolyan formában tárolták és csak környezetük alapján különböztették meg) miatt nevezik ma is a hagyományos számítógépeket von Neumann struktúrájú gépeknek.

Az első számítógépek 1500 szorzás vagy 15 000 összeadás elvégzésére voltak képesek másodpercenként legfeljebb 12 jegyű decimális számnak megfelelő bináris számokkal. A tervezést, építést, programozást, működtetést, javítást egyetlen csapat végezte. A gépek elektroncsövesek voltak, ami teljesen megbízhatatlanná tette a működést, mivel a nagyjából 20 000 elektroncső közül nagy valószínűséggel kiégett valamelyik az egyszerű programok futása alatt. Programnyelveket nem ismertek ebben az időben, így mindent gépi kódban oldottak meg. A programokat dugaszolós kapcsolótáblán rögzítették és ezeket csatlakoztatták a számítógépbe. További problémát jelentett, hogy nem ismerték előre a futáshoz szükséges időt, így a gépidőfoglalást becslés alapján végezték, ami azzal járt, hogy – jobbik esetben – kihasználatlan maradt a drága gépidő egy része – rosszabbik esetben pedig –, az eredmények kiszámítása előtt meg kellett szakítani a futást, és a gépet át kellett adni a következő foglalónak. Technikai előrelépést jelentett, amikor az ’50-es években megjelentek a lyukkártyák.

Ebben az időben számítógép segítségével olyan egyszerű számítási feladatokat oldottak meg, mint szinusz, koszinusz táblázatok kiszámítása.

1.2.2. Batch rendszerek

A számítógépek II. generációját (1955–1965) már tranzisztorokból építették, így megoldódott az eddigi legégetőbb probléma – az elektroncsövek miatti megbízhatatlan működés. Azonban ezek a gépek rettenetesen drágák voltak. Működtetésükhöz speciális légkondicionált géptermek kellettek. A korszakhoz fűződik a külön professzionális operátori csapat megjelenése, amely a gép kiszolgálását és a programok futtatását végezte. A programozás akkori menete szerint a programokat papíron írták (ekkor már ismertek programnyelveket, például assemblereket, Fortrant), majd ezeket lyukkártyán kilyukasztották. Az elkészült lyukkártyákat leadták egy teremben, ahonnan azokat az operátorok vitték a géphez, majd a szükségnek megfelelően betöltötték a fordítót stb. Az eredményeket papírra nyomtatták (on-line mó­don, azaz a beolvasás és az eredmények kinyomtatása nem volt időben szétválasztva a programok futásától), melyeket egy újabb teremben lehetett át­venni. A programok előkészítési ideje tehát roppant nagy volt, a drága gépek drága gépidejének egy jó része azzal telt, hogy az operátorok a gépterem és kiszolgáló termei között sétáltak, miközben maga a számítógép ki­hasz­nálatlanul állt. Ezért aztán következő fejlődési lépésként a „felesleges” időveszteségek csökkentését tűzték ki célul.

A megoldást a kötegelt vagy batch feldolgozás megjelenése jelentette, amely szerint az operátorok összeválogatták a „hasonló” munkákat (például mindegyik Fortran fordítót igényelt), majd ezeket egymás után futtatva több korábbi lépést csak egyszer kellett elvégezni. A mágnesszalagok megjelenése (az összeállított köteget a lyukkártyákról egy szalagra másolták) to­vább könnyítette és gyorsította ezt a folyamatot. Hasonlóképpen, a jobb gép­ki­h­asz­nálást segítette, hogy az on-line perifériás műveletekről áttértek az off-line perifériás műveletekre (1.2. ábra), azaz a lyukkártyák beolvasását, valamint az eredmények nyomtatását a programok futtatásától elválasztva, általában egy külön erre a célra kifejlesztett kis számítógép segítségével végezték.

1.2. ábra. ábra - (a)On-line (b) off-line perifériás műveletek blokkvázlata

(a)On-line (b) off-line perifériás műveletek blokkvázlata


A programok futása között eltelő „üres” időt (amíg az operátor észrevette, hogy egy munka (job) befejeződött és elindította a következőt) tovább csökkentette, amikor sikerült kifejleszteni egy olyan felügyelő programot – egyszerű monitort (resident monitor) –, amely egy-egy munka befejeződése után automatikusan beolvasta a következőt és megkezdte annak végrehajtását. Vagyis megjelentek az első operációs rendszerek. A jobleírásokat a könnyebb felismerhetőség kedvéért speciális karakterrel kezdődő vezérlő utasításokkal egészítették ki, amelyek a monitor számára hordoztak információt. (Így minden jobleírás a munka kezdetét és végét jelző utasítással kezdődött, illetve végződött; külön utasítás adta meg, hogy mikor és milyen fordítóprogramot kell betölteni, mikor lehet a tárgyprogramot betölteni [azaz hol a programrész vége] elkezdődhet a program futtatása stb.)

Az egyszerű monitorok megjelenése egyben azt is jelentette, hogy a korábban egy területként kezelt memóriát a továbbiakban két alapvető részre, egy monitor és egy felhasználói területre osztották.

1.3. ábra. ábra - A korai batch programok tipikus szerkezete

A korai batch programok tipikus szerkezete


Az off-line perifériás műveletek alkalmazásának legnagyobb előnye abban rejlett, hogy a fő számítógép működése nem függött többé a lassú kártyaolvasó és sornyomtató működésétől, hanem a sokkal gyorsabb mágnesszalag vezérlőtől. Összességében azonban ez a megoldás csak akkor gyorsította a munkák befejeződését, ha nagyjából azonos idejű CPU- és perifériás műveletet tartalmaztak.

Az új technika elterjedése azt is eredményezte, hogy a programok nem az eredeti perifériákat, hanem logikai B/K-készülékeket használtak. Ezt hívjuk készülékfüggetlen vagy perifériafüggetlen programozásnak (device inde­pen­dence). Szabványos felületű perifériameghajtókat kezdtek alkalmazni egyrészt, hogy biztosítsák, hogy a programok ne vegyék észre a „cserét”, másrészt viszont a programokat átírás nélkül lehetett használni akkor is, ha a rendszerben kicserélték a perifériákat.

A fenti megoldásnak minden előnye mellett hátránya volt, hogy több számítógépet (esetenként hármat vagy akár többet is) igényelt és a szalagok cseréje még mindig nehézkesen, operátori segédlettel történt. A probléma megoldására megalkották az autonóm perifériavezérlőket. Az autonóm perifériavezérlők lehetővé tették a pufferelést (buffering), azaz, hogy a B/K-műveletek a perifériák és a CPU között elhelyezkedő pufferen keresztül hajtódnak végre megszakítás, illetve blokkos átvitel segítségével. Tehát például a beolvasás egy pufferbe történik és a CPU innen veszi az adatot, majd annak feldolgozásával egyidőben újabb perifériás művelet hajtódhat végre (átlapolt feldolgozás).

A hibakeresés (debugging) továbbra is komoly nehézségekbe ütközött, ugyanis ezt nyilvánvalóan csak a programozó tudta elvégezni. Mivel azonban nem volt közvetlen kapcsolatban a számítógéppel, ezért off-line módon, a hibás befejeződéskor kiíratott (dumping) memória és regiszter tartalmak segítségével végezte.

Ebben az időben a számítógép segítségével olyan tudományos és mérnöki számításokat is el tudtak már végezni, mint például parciális differenciálegyenletek megoldása.

A II. generációs gépek hatására a ’60-as évek elejére két teljesen független, egymástól eltérő fejlődési irány alakult ki: szószervezésű nagy tudományos komputerek és karakterszervezésű kis perifériás gépek, ami a fejlesztést igen megdrágította. Következő lépésként tehát ezen kellett segíteni.

A kérdést a számítógépek harmadik generációjánál (1965–1980, hardver: integrált áramkörök) az IBM oldotta meg, a System/360 számítógépcsalád bevezetésével. A család különböző méretű (memória, gyorsaság, perifériák, ár, teljesítmény), de egymással kompatíbilis gépekből állt, így elvileg bármely gépre írt szoftver futtatható volt bármelyiken. A gyártmánycsalád és szabványos egységek bevezetése a hardverfejlesztés költségeinek csökkenése mellett egyéb előnyökkel is járt, ugyanakkor azonban nagyon drága és bonyolult operációs rendszert igényelt.

Újra előtérbe került tehát az alapvető kérdés, a költségcsökkentés kérdése. Ehhez komoly lökést jelentett a nagykapacitású, gyors és véletlen hozzáférésű (random access) mágnesdobok és mágneslemezek megjelenése. Az ún. spooling technika (simultaneous peripherial operation on-line) ezeket a tárakat mint egy hatalmas méretű puffert használja, és egyszerre nemcsak egy, hanem több munkát is lemezre tölt. Ez a megoldás lényegében az off-line perifériás műveletek egyetlen gépen történő megvalósítása. Lehetővé válik a perifériás és CPU-műveletek teljes szétválasztása úgy, hogy több munka is átlapolódhat, azaz például az egyik munka végrehajtásával egyidőben egy másik munka beolvasása és egy harmadik eredményeinek kivitele folyhat. Ezzel mind a perifériák, mind pedig a CPU kihasználtsága jelentősen megnőtt (1.4. ábra).

A véletlen hozzáférésű háttértárak megjelenésének legnagyobb jelentőségű következménye azonban a multiprogramozás lehetősége volt.

1.4. ábra. ábra - A spooling technika

A spooling technika


1.2.3. Multiprogramozott rendszerek

A multiprogramozás megjelenése előtt a lassú perifériák korlátozták a CPU kihasználtságát: a CPU-nak meg kellett várnia a perifériás műveletek befejeződését, mielőtt a következő munka végrehajtásába belekezdhetett. Ráadásul a szekvenciális hozzáférésű tárak miatt a munkákat csak érkezési sorrendjükben lehetett feldolgozni.

A véletlen hozzáférésű tárakról az operációs rendszer tetszőleges sorrendben választhatja ki a következő végrehajtandó munkát, és egy speciális adatszerkezet (nyilvántartás) a „job pool” révén úgy ütemezheti, hogy a CPU kihasználtsága közel 100%-os legyen. (A későbbiekben látni fogjuk, hogy a gyakorlatban legjobb esetben is csak nagyjából 90%-os kihasználtság érhető el, mivel annak biztosításához, hogy a munkák később tovább futtathatók legyenek, szükséges a környezetük elmentése, illetve visszaállítása.) Egy-egy munka addig fut, amíg várakozni nem kényszerül. Ekkor az operációs rendszer egy másik, futni képes munkát választ ki és indít el. Amint a félbehagyott munka várakozási feltétele teljesül, újra felkerül a futtatható folyamatok listájára, és az operációs rendszer a következő ütemezési alkalommal kiválaszthatja futásra (1.5. ábra).

1.5. ábra. ábra - A multiprogramozás alapelve

A multiprogramozás alapelve


A számítógép és a periférák jó kihasználása mellett a multiprogramozás teljesen új feladatok elé állította a rendszertervezőket. A munkák kiválasztása ütemezést igényel. Természetesen egyszerre több programot is a tárban kell tartani, a memória felhasználói területe több munka között oszlik meg, vagyis megjelenik a tárgazdálkodás igénye. A CPU mellett a többi erőforrás felhasználását is koordinálni kell, gondoskodni kell az egyes programok és memóriaterületük védelméről a többiekkel szemben stb.

A III. generációs számítógépek elég gyorsak és nagy kapacitásúak voltak és lényegében sikerült megoldani az optimális kihasználtság kérdését is. Így a legégetőbb problémát az jelentette, hogy továbbra sem volt közvetlen kapcsolat a programozó és a gép között, vagyis nehéz volt a programokat módosítani, illetve hibát keresni bennük. Ezért ebben az irányban történtek fejlesztések, aminek hatására létre is jöttek az első olyan rendszerek, amelyeknél közvetlen on-line kapcsolat volt a felhasználó és a számítógép között.

1.2.4. Időosztásos rendszerek

Az időosztásos (time-sharing, multitasking) rendszerek közvetlen, interaktív kommunikációt biztosítanak a felhasználó és programja, valamint az operációs rendszer között. Ezeknél a rendszereknél általában minden felhasználónak külön beviteli eszköze (terminál, konzol) van, melyen keresztül on-line módon adhat parancsokat és kaphat a rendszertől válaszokat. Bár a CPU egyszerre több párhuzamosan dolgozó felhasználó között meg van osztva, azok úgy dolgoznak a számítógépen, mintha az kizárólag hozzájuk tartozna. Ezért fontos elvárás, hogy a rendszer válaszideje értelmes tűréshatáron belül legyen. Általában a háttérben valamilyen batch-rendszer is fut, hogy az „üresjáratok” idején se legyen tétlen a gép.

Ehhez a korszakhoz kötődik az MIT, a Bell Laboratorium és a General Electric közösen megkezdett fejlesztése. Terveikhez az ötletet a városi elektromos hálózatok adták, mely szerint minden lakásban megtalálhatók a rendszerhez csatlakozó dugaszoló aljzatok, melyekhez csatlakoztatni lehet a különböző elektromos készülékeket. Ennek mintájára olyan számítógéphez csatlakozó hálózati rendszert szerettek volna létrehozni – először Bostonban, majd másutt is – melyben mindenki számára lehetővé válik – otthonról – a nagy, drága, közös erőforrásokhoz való hozzáférés, vagyis az egy hatalmas közös számítógéphez, valamint adatbázisokhoz stb. való kapcsolódás terminálokon keresztül. Bár a terv abban az időben megvalósíthatatlan maradt, a MULTICS (MULTiplexed Information and Computing Service) néven ismertté vált rendszer híressé vált újszerű és maradandó ötletei miatt. Hogy mást ne említsünk, a projekt pozitív és negatív tapasztalatai egyaránt jelentősen hatottak a UNIX operációs rendszer fejlesztőire. A UNIX pedig még ma is az egyik uralkodó operációs rendszer a miniszámítógépeken és a munkaállomásokon.

1.2.5. Személyi számítógépek

Az LSI (Large Scale Integration) áramkörök megjelenése jelentősen lecsökkentette a számítógép hardver költségeit, így a IV. generációs számítógépek (1980–1990) szinte mindenki számára elérhetők (megvásárolhatók) voltak. Emiatt általánossá vált az egy felhasználó–egy gép struktúra, vagyis, hogy minden egyes felhasználó külön számítógéppel rendelkezik. Ezért is hívjuk ezeket az olcsó kisgépeket személyi számítógépnek (PC: personal computer).

A személyi számítógépek megjelenése átütő változást hozott a számítástechnikában. Olyan felhasználók és olyan alkalmazási területek számára vált elérhetővé az eszköz, amelyek korábban fel sem merültek, vagy ahol az ötletek korábban megvalósíthatatlannak bizonyultak (lásd MULTICS projekt). A sokszor egészen más érdeklődésű felhasználók új követelményt fogalmaztak meg a rendszerekkel szemben, mivel nem tudtak és nem is akartak tudni a számítógépek működési elveiről, részleteiről. A felhasználóbarát (user friendly) szoftver éppen ezt, azaz a részletek elrejtését és a kényelmes programozási felület biztosítását jelenti. A korra legjellemzőbb operációs rendszerek az MS-DOS (PC-re) és a UNIX (munkaállomásra), amelyek később a felhasználóbarátság jegyében, a feldolgozási sebességben és tárkapacitásban mérhető teljesítményparaméterek rohamos javulásának lehetőségével élve, elsősorban a felhasználói felületek tekintetében jelentős fejlődést mutattak (Windows, X-Window).

A személyi számítógépek minden kényelme és előnye mellett azonban a ’80-as évek közepétől igényként merült fel, hogy kapcsolatot lehessen teremteni más – szintén PC-t használó – felhasználókkal, illetve használni lehessen drága, egy-egy ember által már nem megvehető erőforrásokat. Ezért a PC-ket hálózatba kezdték kötni. A hálózattal összekötött (és így más felhasználók által is elérhető) személyi számítógéprendszerek rávilágítottak az ezen gépeken futó rendszerek legnagyobb hibájára, nevezetesen, hogy mivel a PC-ket alapvetően úgy tervezték, hogy egyetlen felhasználó használja, ezért semmilyen illetéktelen hozzáférés elleni védelemmel nem látták el őket. Gondoljunk csak például a vírusokra, hogy mennyire esetleges még ma is a PC-k védelme ezekkel szemben.

A ’80-as évek közepe két jelentős technológiai fejlődést hozott. Egyrészt bekövetkezett a mikroprocesszorok minden eddiginél nagyobb teljesítmény- növekedése, másrészt megjelentek a lokális hálózatok (LAN: local area network). Ez utóbbiak általában 10–100 összekötött gépet tartalmaztak, uniformizált információáramlást téve lehetővé közöttük. A korábbi központi (centralized) rendszerek (egy CPU, a memóriája, perifériái, terminálok stb.) mellett tehát megjelentek az elosztott (distributed) rendszerek (több CPU, közös, illetve külön memóriák stb.).

1.2.6. Elosztott rendszerek

A feldolgozóképesség elosztottsága (decentralizálás) igen sok előnyös tulajdonságot hordoz a centralizált rendszerekkel szemben. Hogy csak néhányat említsünk: a sebesség növekedése, a funkciók térbeli elosztása (a feladathoz igazodó, térben elosztott rendszerstruktúra alakítható ki), a megbízhatóság növekedése (egy-egy gép meghibásodása esetén a többi továbbra is működőképes, feladatait az esetek többségében át tudják venni a többiek), a fejlesztés lehetősége (kis lépésekben is), az adatok és eszközök megosztása (közös adatbázis, illetve drága perifériák közös használata), a kommunikáció lehetősége (felhasználók és programok között, elektronikus levelezés, e-mail stb.), flexibilitás (terhelésmegosztás, optimalizálás).

Külön ki kell emelni az ár/teljesítmény arányra vonatkozó gazdasági szempontokat. A modern mikroprocesszorok megjelenése előtt Grosch törvénye adta meg, hogy a CPU teljesítménye az ár négyzetével arányos, vagyis kétszeres árért négyszeres teljesítményt lehetett elérni. A mikroprocesszorokra azonban ez már nem érvényes. Kétszeres árért lényegében ugyanazt a CPU-t lehet megvásárolni, valamelyest gyorsabb órával (vagyis a teljesítmény arányaiban alig növekszik). A teljesítménynövelés lehetőségét a több CPU alkalmazása hordozhatja.

Az elosztott rendszerek természetesen problémákat is felvetnek, melyek közül a három legfontosabbnak maga a szoftver (az elosztottság és párhuzamosság miatt felmerülő problémák komplexitása minőségi ugrást jelent, ezért a korábbiakhoz képest egészen más jellegű operációs rendszerekre lenne szükség, melyekről azt mondhatjuk, hogy bizonyos értelemben még ma is kezdeti stádiumban vannak), maga a hálózat (megfelelő átviteli sávszélesség és minőség biztosítása, túlterhelés és egyéb problémák), és a biztonság (könnyebb az illetéktelen hozzáférés a „titkos” adatokhoz).

Az elosztott rendszerek fejlesztése során két alapvető cél megvalósítása lebegett a tervezők szeme előtt. Egyrészt olyan rendszereket próbáltak létrehozni, amelyek lehetővé teszik, hogy sok felhasználó tudjon egymás mellett dolgozni és egymással kapcsolatot tartani. A másik cél pedig olyan rendszerek megvalósítása, melyek egy adott problémát a részfeladatok párhuzamosításával maximális sebességgel oldanak meg. Bizonyos szerzők a kétféle rendszer megkülönböztetésére az előbbi esetben használják az elosztott rendszer elnevezést (további elnevezések: hálózati (network) vagy multi­kom­puteres rendszerek), az utóbbiakra pedig a párhuzamos (parallel) rendszer elnevezés az elterjedt. A multikomputeres rendszerekben az egyes gépek az esetek többségében saját, külön memóriával és órával rendelkeznek, vagyis lazán csatoltak (loosely coupled), míg a multiprocesszoros rendszerek többségére a közös memória és óra használat (szorosan csatolt, strongly coupled rendszerek) a jellemző.

Az architektúrától függetlenül különbséget kell tennünk a rendszerek között az átlátszóság (transparency) alapján. Ennek hiánya esetén a felhasználóknak tudniuk kell, hogy a rendszerben több számítógép is van, melyeken saját operációs rendszer fut, és az alkalmazók beléphetnek felhasználóként távoli gépekre is. Az ilyen rendszerek operációs rendszerei nem térnek el alapvetően az egyprocesszoros rendszerek operációs rendszereitől, mindössze egy hálózatvezérlő (network controller) kiegészítés szükséges a helyes működtetéshez.

A fentiekkel ellentétben az átlátszó rendszereket a felhasználó úgy látja, mint egy tradicionális egyprocesszoros rendszert. Vagyis, bár általában tisztában van vele, hogy a rendszerben több processzor is működik, a feladatok szétosztását az operációs rendszer automatikusan végzi, azaz a felhasználó nem tudja, hogy egy-egy munka melyik processzoron fut, egy fájl melyik számítógép lemezén tárolódik. A feladatok jellegéből következően itt egészen másfajta operációs rendszer szükséges a helyes működtetéshez.

1.2.7. Valósidejű rendszerek

Egészen röviden említjük a IV. generációs számítógép rendszerek egy további fajtáját, a valósidejű (real-time) rendszereket.

Azokat a rendszereket, amelyekkel szemben a környezeti, valós időskálához kötött idő-követelményeket támasztunk, valósidejű rendszereknek nevezzük. Előírhatjuk például, hogy a rendszer egy környezeti eseményre mennyi időn belül reagáljon, vagy milyen időzített akciókat hajtson végre. Az elnevezés utal arra a különbségre, hogy egy általános célú számítógéprendszer szokásos feladatai „időtlenek” (például egy job végrehajtása a lefuttatás időpontjától függetlenül ugyanazt a helyes vagy hibás végeredményt adja), vagy esetleg belső időt használnak (például szimulációs feladatok esetén).

A valósidejűség szorosan kapcsolódik más tulajdonságokhoz is. A valósidejű rendszerek leggyakrabban célrendszerek (ipari folyamatfelügyelő, -irányító, orvosi rendszerek stb.), melyek célhardveren futnak. Speciális célú operációs rendszereik bizonyos időkorlátok betartásával kell hogy működjenek. Érzékelők (sensor) segítségével észlelt, a környezetben (külvilágban) történt változásokra adott időn belül válaszolniuk kell, vagyis a rendszernek garantálnia kell valamilyen előírt időkorláton belüli válaszidőt.

A valósidejű rendszerek két alapvető fajtája: a szigorúbb feltételeket teljesítő kemény valósidejű rendszerek (hard real-time) biztosítják, hogy a kritikus munkák befejeződnek időben, míg a lágy valósidejű (soft real-time) rendszerek csak azt garantálják, hogy a kritikus munkák prioritással futnak.

A valósidejű operációs rendszerek tárgyalása mind mennyiségében, mind témájában messze meghaladja e könyv lehetőségeit, így ezekkel a rendszerekkel a továbbiakban legfeljebb utalásszerűen foglalkozunk.

1.2.8. Nyílt rendszerek

A hálózatok széles körű terjedése és ezzel együtt új és drága eszközök széles körű hozzáférhetősége új igények megfogalmazását vonta maga után a rendszertervezők felé. A számítógépek V. generációja (napjainkban) olyan számítógéprendszerekben működik, melyek fizikailag is nagy távolságokon keresztül, az egész világot behálózva, szinte mindenhonnan hozzáférhetők. A fizikai, kulturális, technikai különbségek áthidalása szükségszerűen maga után vonja a kommunikáció és a csatlakozási felületek egységesítését, világszabványok alkalmazását. Ennek jegyében egy nemzetközi szervezet, az ISO (International Standards Organization) ajánlásokat fogalmaz meg a rendszerek egységes működéséért (OSI: Open System Interconnection), melyeket célszerű mindenkinek betartani, aki piacképes termékeket akar létrehozni. Így léteznek szabványok az operációs rendszerekre vonatkozóan (open operating system standards), a felhasználói felületekre vonatkozóan (open user interface standards), az alkalmazásokra vonatkozóan (open user application standards), és a kommunikációra vonatkozóan (open communication standards).

1.2.9. Napjaink rendszerei

Napjaink rendszerei multiprogramozott rendszerek. Megtalálhatjuk közöttük a IV. generációtól kezdődően mindegyik említett rendszerfajtát. A rendszerek általában interaktív rendszerek, bár találkozhatunk (az esetek többsé­gében nem tiszta) batch rendszerekkel is. Ez utóbbiak azonban különböznek a korai batch rendszerektől, szerveződési elvük nem az azonos munkafázisok szükségszerű csoportosítását jelenti. Elnevezésük azonban megmaradt, mert ezekben a rendszerekben előre összeállított, vezérlő információkkal ellátott munkák futnak, és a programok futásába nem lehet interaktívan beavatkozni.

Az operációs rendszerek kezelői felületét napjainkban az ablakozó technika jellemzi. Ez a felhasználók számára lényegesen barátságosabb, áttekinthetőbb munkalehetőséget nyújt. Ugyanakkor az ablakozó felület mellett – elsősorban a távoli belépések számára, továbbá a parancsértelmező szövegmanipulációs lehetőségeinek és az operációs rendszer batch fájlokkal történő programozási lehetőségének megtartása érdekében – a hagyományos, parancssor-orientált kezelői felület is megtalálható (lásd UNIX és származékai).

A számítógépek és az operációs rendszerek területe a technika talán legdinamikusabban fejlődő területének tekinthető. Így, bár az operációs rendszerek történeti taglalását itt abbahagyjuk, maga a történet nem fejeződött be. Éppen nemrégiben jelentették be egy elveiben, működésében teljesen új, beágyazott celluláris neurális hálózatokat (cellural neural network, CNN) alkalmazó, három dimenziós rácsszerkezetű, analóg, univerzális, tárolt programú számítógép létrehozását, mely a biológiai szinopszisok terjedéséhez hasonló jelterjedési elv alkalmazásával működik, minden eddiginél nagyobb műveleti sebességet és számítási kapacitást biztosítva. Elterjedése esetén nyilvánvalóan forradalmi változásokat fog hozni a számítástechnikában és az operációs rendszerek fejlődésében. És ki tudja, mi minden van még előttünk?