950 likes | 1.17k Views
Operációs rendszerek. Az operációs rendszerek feladatai és funkciói. Az operációs rendszer egy olyan program, amely felügyeli az alkalmazói programok (alkalmazások) végrehajtását és interfészként működik a számítógép felhasználója és a hardver közt.
E N D
Az operációs rendszerek feladatai és funkciói Az operációs rendszer egy olyan program, amely felügyeli az alkalmazói programok (alkalmazások) végrehajtását és interfészként működik a számítógép felhasználója és a hardver közt. Az operációs rendszereknek három elvárásnak kell megfelelniük: • Számítógép használatát egyszerűbbé kell tenniük • Biztosítaniuk kell a számítógép erőforrásainak hatékony kihasználását • Képesnek kell lenniük a fejlődésre. Új eszközök, lehetőségek megjelenésekor úgy kell bővíteni, hogy eredeti funkcióiban változás ne történjen
Operációs rendszer, mint felhasználó/számítógép interfész A számítógépes rendszert réteges struktúrában szemléltetve: • Felhasználó csak az alkalmazásokkal foglalkozik, miket programozók készítenek. • Legfontosabb rendszerprogram az operációs rendszer, ami elfedi a hardvert a programozók elől, egyszerűbb felhasználást biztosítva
Operációs rendszer, mint erőforrás kezelő Az operációs rendszer ugyanúgy utasításokból áll, mint bármely program. Alkalmazások szempontjából az operációs rendszer futtatásával töltött idő, holtidő, mivel ugyan azokat az erőforrásokat használja, mint az alkalmazói programok. Ezért csak az operációs rendszer központ része (mag, kerner), aminek mindig a memóriában kell lennie! Ez felelős az erőforrások kezeléséért – így speciális jogokkal rendelkezik (system mód).
Erőforrások, melyek kezeléséért az operációs rendszer felelős Memória: Megfelelő szabályok szerint kell osztani az alkalmazói programok közt. Processzor: Egy időpillanatban a processzor csak egyetlen programot futtathat. Ennek kiválasztása az operációs rendszer feladata. Többprocesszoros rendszer esetén a feladatot tovább bonyolítja a közel azonos terheltség biztosítása. I/O eszközök: I/O igények kielégítése, eszközök kezelése.
Fejlődés biztosítása Az operációs rendszerek továbbfejlesztésének okai: • Hardverek fejlődése, új technológiák megjelenése • Felhasználói igények kielégítése • Hibajavítások (Hibátlan program nem létezik, csak olyan, amiben még nem találtak hibát!)
Soros feldolgozás 50-es évek közepéig használt módszer. Operációs rendszerek még nem voltak, a programok közvetlenül a hardverrel kommunikáltak. Közvetlen adatbevitel (pl. lyukkártya) eredmény kiadása (pl. nyomtató).
Egyszerű kötegelet feldolgozású (batch) rendszerek A számítógépek holtidejének megszűntetésére fejlesztették ki az első kötegelt operációsrendszeret. Központi eleme a monitornak nevezett program, ami szabályozza a gép működését. A megkapott programok előkészítését automatikusan megkezdte, amik futásuk befejeztével visszaadták a vezérlést a monitornak. Ezért a monitor egy részének mindig a memóriában kellett lennie. (rezidens monitor) A többi részét (segédprogramok…) igény szerint tölti be a rendszer. JCL (Job Control Language): Munkák előkészítését végző része a monitornak.
Kötegelt rendszerek hatékony működéséhez szükséges hardver feltételek Memória védelem: A program nem férhet hozzá a monitor által használt memóriaterületekhez Időzítő: Időzítő használatával egyetlen „job” se sajátíthatja ki magának a rendszert Privilegizált utasítások: Bizonyos utasításokat csak a monitor hajthat végre, felhasználói programok ilyen próbálkozása esetén a vezérlés rögtön visszakerül a monitorhoz. Megszakítások: Az aszinkron eseményekre való reagálás lehetőségének támohatása.
Multiprogramozott kötegelt rendszerek A jelentősen lassabb I/O műveletek miatti kihasználatlan processzoridő csökkentésére hozták létre. Ha a memória elegendő több program tárolására is, akkor míg az egyik I/O műveleteket végrehajtása miatt várakozik, addig a másik futhat. Mikor az I/O művelet befejeződött, a processzor ismét az első programmal dolgozik tovább. Az eljárás neve: multiprograming, vagy multitasking A kihasználtság mértéke erősen függ a futtatott feladatok jellegétől, és erőforrásigényétől.
Időosztásos rendszerek Ha az „egy felhasználó egy gép” elv nem valósul meg, és egy program futás alatti interaktivitást igényel, akkor a multiprogramozott kötegelt rendszerek hatékonysága jelentősen csökken. Ebben az esetben minden felhasználónak biztosítanak egy időszeletet, amiben csak az ő programja fut. Így a rendszer sebessége n-ed része a tényleges sebességnek.
Multiprogramozott, és időosztásos rendszerek összehasonlítása
Processzorok működésének módjai Bizonyos utasításokat csak a processzor privilegizált módjában lehet végrehajtani. Ezek a processzor működését befolyásoló utasítások, az I/O utasítások, memória-, megszakításkezelést befolyásoló utasítások. Mivel privilegizált üzemmódban többnyire csak a kernel működik, ezért az üzemmód neve rendszer-, vagy kerenelmód. Felhasználómód sokkal kötöttebb, kevesebb utasítást engedélyez, és korlátozott hozzáférést engedélyez a memóriához. Ezt a módot használjuk a felhasználói programok futtatására. Két üzemmódot hardver szinten meg kell különböztetni, hogy megvédhessük az operációs rendszert a felhasználói programoktól!
A processzor aktuális üzemmódját a státuszregiszterben tárolja. Megszakítások hatására a rendszer automatikusan privilegizált üzemmódba jut. (Megszakítást kiválthat hardver, illetve egy felhasználói módban, nem megengedet tevékenységet végrehajtani akaró program is. Kiválthat egy felhasználói módú program „direkt” megszakítást is, ha az operációs rendszer egy szolgáltatását szeretné kérni.)
Folyamatok létrehozásának lépései • Egyedi azonosító hozzárendelése az új folyamathoz. (Új bejegyzés a folyamat táblában) • Folyamat számára szükséges memória lefoglalása. (Minden program valamilyen módon tartalmazza a futásához szükséges memória méretét. Ha egy másik folyamat hozza létre, neki kell foglalnia a memóriát. Végül memóriát kell foglalni a folyamat leíró számára is!) • A folyamat leírót inicializálni kell. (PC-t a program első utasítására kell állítani, a veremmutatót pedig a folyamathoz tartozó verem elejére. A folyamat kezdeti állapota várakozó, vagy swap-elt lesz) • További függőségek beállítása (Pl. folyamat hozzáadása a megfelelő várakozósorhoz) • Lehetnek további adatstruktúrák, amik a folyamathoz tartoznak
Swaping Megeshet, hogy pl. I/O műveletek miatt a központi memóriában levő összes folyamat blokkolt állapotba kerül. Mivel a memória nem bővíthető korlátlanul más eljárásra van szükség: Amennyiben az összes memóriabeli folyamat blokkolt állapotba kerül, valamelyik folyamatot környezetével együtt lemezre mentjük, és egy másik futásra kész programot töltünk a helyére.
Holtpont-deadlock Mi van akkor, ha az 1. folyamat lefoglalta A erőforrást, 2. folyamat pedig B erőforrást, és a két folyamat befejezéséhez kölcsönösen szükség van a másik erőforrásra? Ekkor lép fel holtpont! Mivel több folyamat egy erőforrás felszabadulására vár, amit csak egy másik folyamat tud előidézni, a helyzet reménytelen! Megoldás: Ha egy folyamat lefoglal egy erőforrást, akkor annak az erőforrásnak használatát nem engedélyezzük más folyamatoknak. Hátrány: Kihasználatlan erőforrások; erőforráskezelő stratégiája miatt, egy folyamat nem jut erőforráshoz belátható időn belül.
Holtpont kialakulásához vezet • Kölcsönös kizárás: Vannak olyan erőforrások, mik nem megoszthatók: Egyszerre csak egy folyamat használhatja. • Erőforrásokra várakozó folyamatok várakozás közben erőforrásokat lefoglalva tartanak. • Erőszakkal el nem vehető (nem rabolható) erőforrások • Ciklikus várakozás: Erőforrásokra várakozó folyamatok körkörösen egymásra várnak.
Egyetlen foglalási lehetőség Csak az a folyamat foglalhat erőforrást, amelyik még egyetlen egyel se rendelkezik. Folyamatok csak induláskor foglalhatják le a szükséges erőforrásokat, mert azt később nem tehetik. Előnye: Futó folyamatok nem kényszerülnek várakozni, várakozók nem foglalnak erőforrásokat. Hátránya: Pazarló. Folyamatok akkor is foglalva tartank erőforrásokat, ha nincs rá szükségük. Ha egy folyamatnak sose lesz szabad az összes szükséges erőforrás, fennáll a kiéheztetés veszélye.
Rangsor szerint foglalás Egy folyamat csak olyan osztályból igényelhet erőforrást, melynek sorszáma magasabb, mint a már birtokolt erőforrások száma. Holtpont csak akkor alakulhat ki, ha egy folyamat megsértené a rangsort. Módszer hatékonyságát befolyásolja a sorszámok kiadása. (Sajnos előre tökéletesen nem meghatározható) Ha egy folyamatnak szüksége van egy alacsonyabb szintű erőforrásra, akkor addig a szintig fel kell szabadítania az összes általa lekötött erőforrást.
Bankár algoritmus Sose elégítsünk ki egy igényt, ha az nem biztonságos állapotot eredményez. A rendszert mindig úgynevezett biztonságos állapotban tartja. Egy állapotot akkor tekintünk biztonságosnak, ha létezik legalább egy olyan sorozat, amely szerint az összes folyamat erőforrásigénye kielégíthető. Az algoritmus csak akkor működik, ha induláskor tudják, hogy az erőforrások közül egyszerre hányat fog egy folyamat igényelni. Nem biztonságos helyzet nem vezet feltétlenül holtpont kialakulásához!
Holtpont felszámolás Mivel egyik stratégia sem 100%-ig biztonságos, így kialakulhatnak holtpontok! Így ha kialakul egy, azt meg kell próbálni megszüntetni. • Holtpont detektáló algoritmus segítségével először meg kell keresni a holtpontot. • Meg kell kísérelni megszüntetni! • Bezárhatjuk a holtpontban szereplő összes folyamatot (pazarlás) • Kiválaszthatunk egy folyamatot bezárásra, a holtpontban szereplők közül
Bezárandó folyamat kiválasztásának elvei • Melyikkel hány erőforrást nyerek • Hány további erőforrást igényel még • Mennyi processzor, illetve I/O időt vesztek elvesztésével • Mennyi idő van még hátra a futásból
Perifériák csatlakozási módja a géphez • CPU (I. generációs gépek I/O központuak. I/O a CPU-n keresztül valósul meg.) • Csatorna (II. generációs gépeknél, ami az operatív tárhoz férhet hozzá, munkáját a CPU vezérli. Elég autonómak) • DMA • IOP (Napjainkban)
I/O fajtái – Programozott I/O Az I/O művelet teljes egészében a CPU által irányítottan történik, azaz a CPU hajtja végre a programot, amely kezdeményezi, irányítja és lezárja az I/O műveletet. Ez szinte valamennyi számítógépben létezik. Megvalósítása egyszerű, de értékes processzoridőt köt le minden (akár triviális) I/O vezérlési funkció, pl. I/O port READY állapotának ellenőrzése.
I/O fajtái – DMA A hardver komplexitás viszonylag szerény növelésével az I/O egység kialakítható úgy, hogy a CPU beavatkozása nélkül adatblokkot tudjon átvinni az operatív tár, és a memória közt. Ez azt igényli, hogy az I/O egység legyen egy sin master. A CPU továbbra is felelős az adatátvitel kezdeményezéséért, de magát az átvitelt az I/O egység bonyolítja le a CPU beavatkozása nélkül. A CPU és az I/O vezérlő (DMA) csak akkor van kapcsolatban egymással, mikor átadják a rendszersin vezérlését.
I/O fajtái – IO processzor (IOP) A DMA csak részben vezérli az I/O műveletet. Az IOP bevezetésével lehet megvalósítani az I/O műveleteknek CPU-tól független vezérlését. IOP képes a memória és az operatív tár közvetlen elérésére, CPU munkájának megszakítására, illetve közvetlen programfeldolgozásra. Az IOP közvetlen adatátvitelt tud megvalósítani a memória, és egy vagy több operatív tár között úgy, hogy közben nem fordul a CPU-hoz.
DMA Direct Memory Access
DMA-t célszerű alkalmazni • Nagy sebességű eszközök használatánál • Nagyobb tömegű adat átvitele esetén
DMA lényege Nagy tömegű adatforgalom Egyedi adatforgalom Operatív memória DMA-vezérlő Processzor Merevlemez A szükséges megszakítások száma nagyságrendekkel csökken, így a processzor ideje jelentős mértékben felszabadul.
DMA megvalósítása Memória Adress Data AC MAR DC IOAR IODR DMA Request IR Vezérlő egység Vezérlő egység DMA Acknowledgement CPU I/O egység
DMA megvalósítása • DC (data count): Adatszámláló (még hány adatot kell átvinni) • IODR: Regiszter • IOAR: Címregiszter (következő adat címe) DMA vezérléshez szükséges logika könnyen elhelyezhető egy IC-ben, amit DMA vezérlő IC-nek hívnak.
DMA felparaméterezése • Írás vagy olvasási műveletre van szükség • Szükséges I/O egységek címe • Memória-cím kezdő-értéke (honnan olvasunk/írunk) • Átviendő egységek jellege (bájt, félszó, szó…) • Olvasandó/írandó egységek száma • Sínhasználat módja (blok-sínciklusok, cikluslopások) • DMA csatornákhoz hozzárendelhető prioritás értékek • Átviteli kapcsolat választása. (Memóri-I/O, memória-memória, I/O-I/O)
Hosszú távú ütemezés Feladat: Feldolgozandó folyamatok hozzáadása a rendszerhez. (Ütemező szabályozza a rendszerben feldolgozandó feladatok számát.) Hosszú távú ütemezőt kötegelt rendszerekben használunk. Itt a feldolgozásra átadott munka először egy várakozó sorba kerül. Minél több folyamat várakozik, annál kisebb az esélye, hogy egy folyamat processzoridőhöz jusson, ezért szükséges a folyamatok számának limitálása. Ha túl kevés a folyamat, akkor a központ egység kihasználtsága nem lesz megfelelő.
Közép távú ütemező A középtávú ütemező a swap funkció végrehajtásában vesz részt. Feladata: Részt vesz a folyamatok betöltésé a központi memóriába, illetve azok eltávolításában (swap).
Rövid távú ütemező Legfinomabb ütemezést végzi. Akkor aktivizálódik, mikor egy folyamat futása megszakad, és újabb folyamat futtatás válli lehetségessé. Ilyen események: • Időzítő generált megszakítás • I/O tevékenység befejeződését jelző megszakítás • Szolgáltatás kérése az operációs rendszertől • Stb.
Memóriakezeléssel kapcsolatos elvárások • Relokáció • Védelem • Megosztás • Logikai szervezés • Fizikai szervezés
Relokáció Multiprogramozott rendszerekben a memóriát több folyamat közt osztjuk szét, így a programozó nem tudhatja előre, hogy programja milyen memóriacímtől kezdődően fog elhelyezkedni. Továbbá egy háttértárra kimásolt folyamat image visszatöltése se biztos, hogy ugyan arra a címre történik, ahonnan kimásoltuk.
Védelem A rendszerben futó összes programot meg kell védeni a többi folyamattól. Mivel a programok dinamikus memóriakezelési műveleteket végeznek, fordítási időben a címellenőrzés nem oldható meg. További gond, hogy a program kódterülete a program számára csak olvasható, míg az adatterület írható, és olvasható is.
Megosztás Célja, hogy a folyamatok hozzáférhessenek egymás memória területéhez. Pl. ha egy programot többször futtatunk, felesleges, hogy a kódterület kétszer is a memóriában legyen. Ekkor a folyamatok közösen használják a kódterületet. Ennél még bonyolultabb az írható/olvasható területek megosztása…
Logikai szervezés Programok szervezése általában eltér a fizikai memória szervezéstől. Míg legtöbbször a fizikai memória lineáris címterületű, addig a programok jól elhatárolható modulokra oszthatók. (OO) Ezeknek mások a védelmi, megosztási szabályai.
Fizikai szervezés A mai rendszerek legalább kétszintű tárolási hierarchiát használnak. Elsődleges memória a fizikai memória, ami drága, de gyors, míg a másodlagos sokkal lassabb, de olcsóbb. A központi egység csak az elsődleges memória tartalmához tud hozzáférni. A két szint közti adatmozgatás központi kérdés.
Virtuális memóriakezelés tervezési szempontjai Betöltési politika Lapcserélési politika Rezidens lapkezelési politika Laptisztítási politika Terhelésszabályozás
Betöltési (fetch) politika Meghatározza mikor kell új lapot betölteni a memóriába. Igény szerinti betöltés: Lapot akkor töltjük be, ha arra hivatkozás történik. Folyamat indításakor azonnal laphiba lép fel, és az indítás utáni viszonylag rövid időszakban magas lesz a laphibák száma. Idővel a laphibák száma csökken, és beáll egy viszonylag alacsony értékre. Előzetes betöltés: Azokat a lapokat is betöltjük, miket a betöltött lap igényel. Lényegesen gyorsabb, mert egy diszkhez fordulásnál az elérési idő a legnagyobb. Hátránya a nagyobb memóriaigény.
Lapcserélési (replacement) politika Meghatározza új lap betöltésénél melyik lapot távolítsuk el a memóriából. Minden rendszerben van rezidens lapkészlet. (Pl. kernel) A memóriaterületnek mit lefoglalnak, a tartalma nem cserélhető. Ezek a lapok nem szerepelnek a lapcserélési algoritmus eldobható lapjai közt. (ezek az úgynevezett zárolt lapok)