8. fejezet - Az operációs rendszer

Kezdetben a számítógépek megépítése, a hardverelemek működésének biztosítása volt az elsődleges cél. Miután a számítógépek biztonságosan működtek, egyre nagyobb volt az igény a hatékonyság növelésére. Olyan, egymással jól együttműködő programokat (rendszerszoftver) fejlesztettek ki, amelyek felügyelik az egyes hardveregységeket, összehangolják működésüket, biztosítják a számítógép erőforrásainak hatékony kihasználását, és segítik a programok végrehajtását. Ezeket operációs rendszereknek nevezték.

Az operációs rendszer feladata, hogy felhasználóbarát módon elégítse ki a felhasználó és a számítógép közötti kapcsolatot, lássa el a felhasználói programok kezelését, futtatását, vezérlését, illetve gondoskodjon a számítógép erőforrásainak a különböző programok közötti hatékony elosztásáról.

Az operációs rendszerek sok tekintetben különbözhetnek egymástól, és számos szempont szerint csoportosíthatók. Egy általánosan elfogadott osztályozás különbséget tesz gyártóspecifikus és nyílt operációs rendszerek között. Kezdetben egy adott számítógépcsaládra hoztak létre speciális operációs rendszereket, ma már a különböző hardverekre telepíthető operációs rendszerek a jellemzőek.

Az osztályozás további lehetséges szempontjai lehetnek:

A számítógépes rendszer hatékonyságának biztosítására az operációs rendszerek különböző technikákat alkalmaznak.

A megszakítás (interrupt) kezelése

A megszakítások a számítógép munkájának összehangolásában játszanak fontos szerepet. A megszakítási rendszer a folyamatok közben keletkező események feldolgozására szolgál. Ezen események lehetnek szinkron jellegűek, melyek keletkezése egy program futása közben meghatározható helyen és időpontban várható (például túlcsordulás), aszinkron események, melyek várhatóak, de időpontjuk előre nem ismert (például adatbeolvasás), valamint váratlan aszinkron események, amelyek keletkezése nem várható (ilyen lehet egy hardverhiba). A megszakítási kérelem jelzi a processzornak valamely esemény bekövetkeztét, amely egy kiszolgáló folyamatot indít el egy későbbi időpontban (megszakítás időpontja). A megszakítás tulajdonképpen a futó folyamat felfüggesztése annak kiszolgálása céljából.

Különbséget kell tenni a külső eredetű megszakítások (interrupt) és az utasítások végrehajtását megállító kivételek (exception) között. Míg az elsőnél a processzor a végrehajtás alatt levő utasítást befejezve kiszolgálja a megszakítást, majd folytatja a feldolgozást a következő utasítással, addig kivétel esetén a kiváltó esemény kiszolgálása után a processzor megkísérli a megszakított utasítást újra végrehajtani.

Megszakítások kiszolgálásánál a rendszernek meg kell állapítania a keletkezés helyét, szabályoznia a megszakítási lehetőségeket (egyes utasítások megszakításkérelmi lehetőségének maszkolása). Szükség van a prioritás szabályozására több, egy időben bekövetkező kérelem kiszolgálási sorrendjének meghatározására, valamint a kiszolgáló folyamat közben beérkező kérelmek kezelése is.

A kérelem keletkezési helyének megállapítása történhet szoftver, illetve hardver segítségével is. A szoftveres módszert lekérdezési eljárásnak nevezik. Egy program, ami általában az operációs rendszer része, meghatározott időközönként megvizsgálja az eszközök megszakítási kérelemre vonatkozó állapotjelzőjét, és ahol megszakítási igényt detektál, elindítja a kiszolgáló rutint. Ezt a módszert csak egyszerűbb esetekben alkalmazzák.

A hardveres módszer esetén egy megszakításvezérlő áramkör szabályozza a megszakítások kiszolgálását. A kérelem elfogadását visszaigazolás követi. Egy megszakítási vonal esetén a hely meghatározása úgy történik, hogy a visszaigazoló jel a kiszolgálást kérő eszköztől már nem halad tovább, és ez elindítja a kiszolgáló rutint. Több megszakítási vonal esetén pedig a kérelem helye egyértelműen megállapítható (minden eszköznek saját vezetéke van). A legáltalánosabb hardveres módszer a vektoros, ahol a kérelmező eszköz a kiszolgáló rutin címét határozza meg a vezérlő és a processzor számára.

Lehetőségek:

A kiszolgálási eljárást a processzor indítja el, amely az alábbi lépésekből áll:

A megszakítási kérelmeket általában prioritási elv felhasználásával szolgálják ki. Többszintű megszakítási rendszerek esetében a kiszolgáló rutin is megszakítható. Ekkor a kiszolgáló rutin:

Spooling technika

A spooling technika a lassú perifériák (például nyomtatók) esetén úgy küszöböli ki a központi egység tétlenségét, hogy a kivitel először egy gyorsabb háttértárra történik viszonylag rövid idő alatt, és maga a nyomtatás más feladatokkal párhuzamosan, a központi egység "hulladék idejében" hajtódik végre. (A SPOOL egy betűszó, amely az IBM-től ered: a "Simultaneous Peripheral Operation On-Line" rövidítése.)

Perifériák ütemezése

A perifériák hatékony kihasználására a dedikált hozzárendelés valósítható meg, ami azt jelenti, hogy a perifériát viszonylag hosszabb időre adott programhoz rendeli az operációs rendszer.

Tárkezelési problémák

Több felhasználót kiszolgáló, illetve több feladatot egyidejűleg kezelő rendszerek esetén természetesnek tűnik, hogy a futtatandó programoknak áthelyezhetőknek kell lenniük. Ezt a logikai és a fizikai címtartományok bevezetésével lehet megoldani. A kulcskérdés a kettő közötti leképezés.

Megoldható a multiprogramozás úgy is, hogy egyidejűleg csak egy feladatot tartunk a tárban, ami így az operációs rendszer által szabadon hagyott teljes területet uralhatja. Az ilyen esetben használt technikát swapping-nak (cserebere) nevezik. A swapping lényege, hogy feladatváltáskor a felfüggesztett feladathoz tartozó teljes tárterületet a háttértárra másolják, és onnan behozzák a következő feladatot.

Amikor a swapping-nál bevezették a több puffer használatát, eljutottak a többpartíciós multiprogramozáshoz. A tárat több, különböző méretű, egybefüggő részre (partíciókra) osztották, melyek mindegyikében egy végrehajtásra váró feladat foglalt helyet. Attól függően, hogy a felosztás rögzített vagy változtatható, beszélünk fix vagy változó particionálásról. Bármilyen ügyes algoritmusokat is dolgoztak ki a particionált tár kezelésére, a tár elaprózódása ellen nem lehetett hatásosan védekezni. Egy bizonyos idő elmúltával, a tárban sok, össze nem függő, apró terület alakult ki, melyeket bár együttes méretük számottevő volt, mégsem lehetett hasznosítani.

A megoldást a virtuális tárkezelés megvalósításával bevezetett lapkezelés jelentette. A tárat azonos méretű lapokra osztják. Minden feladathoz annyi -- nem szükségképpen folytonos fizikai címeken elhelyezkedő -- lapot rendelünk, amennyit igényel. A lapkezelő alrendszer fő feladata a felhasználó logikai tárigényét leképezni a fizikai lapokra.

A lapkezelés általánosítása a szegmentálás, ami tulajdonképpen változó méretű lapokkal folytatott gazdálkodást jelent. Bevezetésének másik oka az, hogy a lapozás néha az algoritmusokat kellemetlen ponton vágja ketté, így a programrésznek állandóan két lap között kell ugrálnia. Egy új szegmens használatával biztosítható, hogy a kritikus rutin egy lapra kerüljön.

Processzor időbeosztás

A processzor ütemezése a számítógép legfontosabb erőforrásával való gazdálkodást jelent. Az alapelv az időszeletelés (time slicing), ami a következőt jelenti:

Az egyes megvalósítások abban különböznek, hogy milyen elv szerint történik a processzor hozzárendelése a következő programhoz. Néhány ezek közül:

8.1. Személyi számítógépek operációs rendszerei

A személyi számítógépek operációs rendszerei a nagyszámítógépekétől elvárt funkciókkal és képességekkel rendelkeznek, sőt bizonyos értelemben a felhasználói felületek és a felhasználóbarát alkalmazói szoftverek vonatkozásában túl is mutatnak a mainframe-es rendszereken. A fejlődés iránya a klasszikus operációs rendszerek hagyományos szemléletétől egyre inkább a felhasználóbarát felületek biztosítása irányába tart, és így az operációs rendszer magja, működése valójában a felhasználó előtt ma már szinte teljesen rejtve marad.

Parancsvezérelt (DOS alapú) operációs rendszerek

A Seattle Computer Products 1979-ben fejlesztette ki az MS-DOS-t, majd a Microsoft megvásárolta a szoftver terjesztésének és továbbfejlesztésének jogát. Az IBM 1981-ben jelent meg a PC-DOS operációs rendszerrel, amely az MS-DOS egy változata. Később a Microsoft kapta meg a jogot, hogy a különböző gyártók által készített személyi számítógépek MS-DOS operációs rendszerének hivatalos szállítója legyen.

Az MS-DOS operációs rendszer egyfelhasználós, egyfeladatos üzemmódú szoftver. Az operációs rendszer programjait két csoportba sorolhatjuk: az egyik a rezidens programok, amelynek rutinjai állandóan az operatív memóriában vannak; a másik csoportba azok a rendszerprogramok tartoznak, amelyek igény szerint töltődnek be a memóriába.

Grafikus felületű operációs rendszerek

A grafikus felhasználói felületek kifejlesztésére először a 80-as évek elején az első lépéseket az Apple tette meg, és szállította a számítógépeit ilyen operációs rendszerrel. Az Apple után a Microsoft is hamarosan nyilvánosságra hozta a Windows-nak nevezett grafikus felület-szoftvert. Az első verzióknak nem volt túl nagy sikere, de az 1992-ben bejelentett 3.1-es verzió üzembiztosabb és gyorsabb működésével jobban megnyerte a felhasználók tetszését. Szigorúan véve a Windows 3.1 valójában nem egy önálló operációs rendszer, hanem egy olyan – DOS-ra épülő – grafikus felület, amely megkönnyíti a rendszer és az alkalmazások használatát. Az IBM-mel közös OS/2-ből kiindulva 1992-ben a Microsoft egy új, saját fejlesztésű operációs rendszert Windows NT néven hozott forgalomba.

A rendszerek számtalan lehetőséget kínálnak, amelyekkel a felhasználó a számítógéppel interaktív módon, egyszerűen, könnyen kezelhetően végezheti munkáját. Az ablaktechnika lehetővé teszi, hogy az egyes funkciókra vonatkozó lehetőségeket láthassuk, egyidejűleg akár többet is. Menü funkciókat kínál fel kis szöveges ablakokban vagy gombokkal. A valós világot szimbolizáló objektumok, ikonok egyszerűsítik a kezelést, a képecskék (nyitott könyv, grafikon szimbólum, stb.) a végzendő funkcióra utalva. Ha pedig a felhasználó elakad, akkor súgók (helpek) állnak rendelkezésre és segítenek a probléma megoldásában, a hiba elhárításában.

A Microsoft a Windows 3.1 grafikus felület, valamint a Windows NT sikeréből kiindulva azt a célt tűzték ki, hogy olyan átfogó operációs rendszert fejlesztenek ki, amely egyszerűbbé teszi a személyi számítógépek használatát, segíti a hálózatok elérését és biztosítja a kompatibilitást a korábbi operációs rendszerekkel. Így születtek meg a Windows különböző verziói (Windows 95, 98, 2000, XP, 7, 8, Vista).

UNIX rendszerek

A számítógépek operációs rendszerei között az egyik legjelentősebb, központi szerepet betöltő operációs rendszer a UNIX. Kedvelt, sok változatban ingyenes változata a Linux. A UNIX-ot eredetileg nagyszámítógépes, hálózatos környezetre szánták, de manapság rohamosan terjed a személyi számítógépek világában is. Fő előnye a hatékony hardverkihasználás biztosítása és a különböző hardverkomponensek egységes rendszerbe illesztésének lehetősége. A UNIX volt az első olyan operációs rendszer, amelynek fejlesztése során figyelembe vették a nyílt rendszerek felépítésének alapelveit. A UNIX belső felépítésére jellemző a rétegszerkezet. Az alapfunkciókat az operációs rendszer állandóan futó magja, a kernel valósítja meg. A felhasználói interfészt a független shell biztosítja. Több párhuzamosan fejlesztett shell létezik, közös jellemzőjük a hatékony felhasználói környezet megteremtése. Multiprogramozott operációs rendszer, amely támogatja az alkalmazások párhuzamos futását is.

Személyi számítógépekre fejlesztett első UNIX-szerű operációs rendszert a MINIX volt, amit egy holland professzor, Andrew S. Tanenbaum (1944 -) fejlesztett.

A Linux fejlesztését a finn Linus Torvalds kezdte 1991-ben, aki akkor másodéves hallgató volt a Helsinki Egyetemen. A 80386 processzor védett módú (protected mode), feladat-váltó (task-switching) lehetőségeivel szeretett volna megismerkedni, és ehhez kezdett programot (rendszermagot, más néven kernelt) írni MINIX alatt, eleinte assembly-ben, majd C-ben. Az internet révén később többen bekapcsolódtak a Linux fejlesztésébe, ami a kilencvenes évek végére egyértelműen bebizonyította a létjogosultságát szabad szoftverek kategóriájában. A képen a Linux emblémája látható:

Nagyon sok Linux disztribúció létezik, köztük több magyar fejlesztésű. Néhány az ismertebbek közül: Debian, Red Hat, SuSe.