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ó

5. fejezet - 3. Multiprogramozott operációs rendszerek

5. fejezet - 3. Multiprogramozott operációs rendszerek

Ebben a fejezetben azokat a problémákat és megoldási elveket tárgyaljuk, amelyek a modellszinten felvázolt operációs rendszer – az absztrakt virtuális gép – egyetlen processzort tartalmazó hardverarchitektúrán történő megvalósítása során merülnek fel.

Több processzor többféleképpen alkothat rendszert. Ezek egy része nem alkalmaz minőségileg új megoldásokat és elveket a multiprogramozáshoz képest. Az ilyen rendszerek egyszerűen a CPU többszörös erőforrásként történő figyelembevételével, vagy összekapcsolt, önálló multiprogramozott alrendszerekként kezelhetők. Az első esetben a CPU-ütemezés vesz figyelembe néhány új szempontot, a második esetben pedig az alrendszerek külső kapcsolatként látják egymást. A rendszerek más része azonban néhány szolgáltatásban minőségileg is újat nyújt. Ezekkel az ún. hálózati és elosztott rendszerekkel a következő, 4. fejezet foglalkozik.

Ugyancsak ebben a fejezetben szerepelnek a tárak, készülékek, kezelői felületek megvalósításának azok a megoldásai, amelyek a szokásos eszközökre építenek, és a multiprogramozott rendszerekben alakultak ki. Természetesen ezek a megoldások a hálózati és elosztott rendszerekbe is beépülnek.

3.1. Bevezetés

Az 1.2. alfejezetben az operációs rendszerek története kapcsán már szó volt a multiprogramozott rendszerek létrejöttének okairól, illetve néhány szóban arról is, hogy milyen új kihívásokat jelentett e rendszerek megjelenése, és előnyeik mellett milyen új feladatok megoldása elé állították a rendszerfejlesztőket. Röviden szeretnénk tehát csak összefoglalni azokat az indítékokat, amelyek a mai multiprogramozott rendszerek kialakulásához vezettek, valamint vázolni azokat a – később részletesen tárgyalt – problémákat, amelyek megoldása szükséges feltétele volt a multiprogramozott operációs rendszerek megbízható és helyes működésének.

A félvezető technika és a számítógép architektúrák fejlődése során a CPU sebessége olyan nagymértékben megnövekedett, hogy felvetette a lassú pe­ri­fériás műveletek eredményeire várakozás idejének esetleges kihasználását. Megoldást erre egy másik program futtatása jelenthetett. Vagyis az, hogy az operációs rendszer „egyszerre” több munkát futtat. A multiprogramozott rendszerek létrejöttében az alapvető gazdaságossági szempontok mellett természetesen szerepet játszottak olyan további szükséges technikai feltételek is, mint a véletlen hozzáférésű tárak megjelenése vagy a tárkapacitás megnövekedése.

A multiprogramozott rendszerekben a következő lépések alapján történik a folyamatok futtatása:

  • Az operációs rendszer nyilvántartja és tárolja a futtatandó folyamatokat.

  • A futtatható folyamatok közül az operációs rendszer választ.

  • A futásra kiválasztott folyamat addig fut, amíg várakozni nem kényszerül, illetve bizonyos rendszereknél amíg el nem veszik tőle a futás jogát.

  • Az operációs rendszer megjegyzi a várakozni kényszerülő folyamat várakozási okát, és elmenti azt a környezetet, amely a későbbi továbbfutáshoz szükséges. Ezután kiválaszt egy másik, futni képes folyamatot (beállítja a környezetét) és elindítja.

  • Ha a félbehagyott folyamat várakozási feltétele teljesül, az operációs rendszer a következő alkalommal, amikor az éppen futó folyamat várakozni kényszerül, újra elindít(hat)ja.

Az alapmodellből és a fenti lépésekből adódóan a multiprogramozott rendszerek a következő új problémákat vetették fel:

  • A folyamatok közötti hatékony átkapcsolások megkövetelik, hogy több program egyidőben a központi tárban tartózkodhasson, vagyis a tárgazdálkodást.

  • A folyamatok között egyszerre több futásra kész is lehet, amelyek közül az operációs rendszer a CPU-ütemezés során választ.

  • A CPU mellett a rendszerben levő többi erőforrás használatát több folyamat is igényelheti. Ennek megfelelően az erőforrásokat folyamathoz kell rendelni, a hozzáféréseket koordinálni (szinkronizálni) kell, bizonyos erőforrásokhoz biztosítani kell a kizárólagos használat jogát, a holtpont helyzeteket kezelni kell.

  • A védelmi mechanizmusokon keresztül az operációs rendszernek biztosítania kell, hogy az egyes programok ne zavarják egymás, illetve az operációs rendszer működését.

  • A számítógép bonyolultságának növekedése miatt a hardver­archi­tek­túra, és különösen a B/K készülékek részleteit el kell rejteni, és a szol­gáltatásokat megfelelően ki kell bővíteni a felhasználóbarát virtuális gép és környezet biztosítása révén.

  • A hálózatok, elosztott rendszerek megjelenése óta biztosítani kell a megfelelő kommunikációs felületet, kapcsolatot más számítógépek és programok felé.

A következő alfejezetekben először annak a hardverarchitektúrának a lényegesebb jellemzőit foglaljuk össze, amelyre a multiprogramozott operációs rendszerek építhetnek, majd az imént felsorolt problémákat és megoldásai­kat fogjuk részletesebben vizsgálni.