Operációs Rendszerek 2. Második előadás
Közlemény Jövő héten az óra elején külsős előadás kooperatív képzéssel kapcsolatban Kb. 10 perc Ha lehet, minél többen jöjjenek
Előadás témái Néhány szó a hardverről Operációs rendszerekről tömören Miért hibás, miért késik? Fejlődés háttere
Hardver Néhány szó a hardverről –Processzor –Memória –I/O
Processzor Néhány szó a hardverről –Processzor Utasítások végrehajtása (utasításkészlet) Utasítások forrása: központi memória Regiszterek (általános célú, státusz és vezérlő) További adatok tárolása: központi memória Megszakítások (hw. és sw.) –Memória –I/O
Memória Néhány szó a hardverről –Processzor –Memória Utasítások és adatok tárolása Stack terület RAM és NVRAM (ROM) részek –I/O
I/O Néhány szó a hardverről –Processzor –Memória –I/O Másodlagos tároló Humán interfész Gép-gép kapcsolat Szélsőséges sávszélesség igények
Operációs rendszerek Néhány szó a hardverről Operációs rendszerekről tömören –Esetek Nincs operációs rendszer Minimál operációs rendszer Multiprogramozás –Értékelési szempontok Processzor, memória, I/O kezelése Védekezés hibás, rosszindulatú kódoktól Környezet változására való érzékenység
Nincs operációs rendszer Rendszer indításakor a program feladata az inicializálás –(Legalább részben) NVRAM-ból kell futnia –CPU beállítások (opcionális) –Perifériavezérlő áramkörök inicializálása Teljes kontroll az összes hardver elem felett (beleértve a processzort is)
Nincs OS - értékelés Processzor, memória, I/O kezelése –Teljes mértékben egyéni megvalósítás Védekezés hibás, rosszindulatú kódoktól –Amit a programozó beépít, nincsenek „társak” (csak önmagától kell megvédenie magát) Környezet változására való érzékenység –Amit a programozó beépít (jellemzően rendkívül nagy lehet)
Kitérő - megszakítások Programozott I/O esetén a programnak folyamatosan figyelni kell a perifériák jelzéseit – ez különösen interaktív rendszereknél problémás! Megszakítások alkalmazásával a folyamatos lekérdezés kiváltható, az eseményekről annak kiváltója (érzékelője) küld jelzést (ha tud) Megszakításos működés: CPU támogatás is! De…
Kitérő – de… Megszakítás beérkezése esetén a CPU egy előre meghatározott címen található kódnak adja át a vezérlést Ha a megszakítás feldolgozásra kerül, a vezérlés visszaadódik az eredeti kódhoz (ehhez persze ennek címét el kell tárolni) Mi lesz az adatokkal (CPU regiszterek)? Többszörös megszakítások?
Minimál operációs rendszer Rendszer indítás és inicializálás Minimális parancs interfész (CLI, batch) Loader funkció, program lehet másodlagos tárolón vagy távoli helyen (tftp) – a betöltés után a vezérlés alapvetően a programnál van Opcionálisan: sokat használt funkciók megvalósítása (kezdetleges virtuális gép!) –Perifériák kezelése (tip. megszakítás alapon)
Minimál OS – értékelés Processzor, memória, I/O kezelése –Egyéni megvalósítás, esetleg I/O esetén minimális támogatás (kb. instant eljárások) Védekezés hibás, rosszindulatú kódoktól –Amit a programozó beépít, nincsenek „társak” –Az OS védtelen a programtól ( MS DOS éra) Környezet változására való érzékenység –Alapvetően nagy, de mértéke az „instant eljárások” segítségével csökkenthető
Minimál OS-en túl – védelem Az operációs rendszer védje meg magát –Memória védelme
Memória védelme
Minimál OS-en túl – védelem Az operációs rendszer védje meg magát –Memória védelme –Kontroll memória műveletek (címek) alapján –Bizonyos utasítások letiltása a programnak (pl. amivel a memória védelmet lehet befolyásolni) –Hardver támogatás nélkül nem lehet hatékonyan megoldani (esetleg emulációval, lassú) Memória védelmi rendszer Legalább kétféle CPU üzemmód: privilegizált az OS és „normál” a user kód számára (korlátozott) Átjárás a két mód között: szoftver megszakítások
Minimál OS-en túl – szolgáltatások Virtualizáció, az eredeti utasításkészlet kibővítése Elsődlegesen I/O menedzsment (most) –Logikai perifériák Másodlagos tároló: fájlok, fájlrendszerek Humán interfész: csatornák (input, output) Gép-gép kapcsolat: csatornák –Absztrakciós szint eltérő lehet
Multiprogramozott rendszerek A rendszer egyetlen program általi kisajátítása nem „szerencsés” –Régen: drága a számítógép idő Kötegelt: egyetlen program ált. nem tudja folyamatosan kihasználni a rendszer erőforrásait (pl. I/O-ra vár) Időosztásos: a számítógépek túl drágák voltak ahhoz, hogy egy időben egyetlen ember használja őket –Ma: hatékonyság A PC felhasználók szeretnek egyszerre több dologgal foglalkozni (ugye Önök is) A szerverek egy időben több kliens kérését is ki kell, hogy szolgálják (ezért szerverek)
Multiprogramozott rendszerek Elvárás: több program váltott futtatása –Kötegelt rendszerek esetén a rendszer terhelését maximalizáljuk (ha egy program nem tud tovább futni /mert vár/ válasszunk helyette egy másik, futásra készet) –Interaktív rendszerek esetén a válaszidőt kell kordában tartani, a programok között periodikusan kell váltani (a felhasználók egymást nem akadályozhatják) –PC-k: egy felhasználó több programjára igaz
Váltás programok között Programok közötti váltás: „ki birtokolja” a processzort? A (vissza) váltás után a program a futását ott folytatassa, ahol korábban abbahagyta (hasonlót már láttunk – megszakítások) A processzor birtoklásán túl egyéb problémák is adódnak: –Memóriakezelés –I/O kezelés
Memóriakezelés A processzor csak a központi memóriában található kódhoz/adathoz fér közvetlenül hozzá Programok (adatok) folyamatos mozgatása a másodlagos tárolóról/ra jelentős erőforrás és időigényt jelentene, ezalatt a processzor semmittevésre kényszerül Egy időben több programot kell a memóriában tartani egyetlen program sem sajátíthatja ki a memóriát A memóriamenedzsment az operációs rendszer feladata, meglehetősen összetett probléma (foglalási módok, relokáicó)
I/O kezelés A „minden I/O eszköz kisajátítása” koncepció nem működik (és felesleges) Az operációs rendszernek kell felügyelnie az I/O kezelést úgy, hogy a programoknak ne kelljen egymással törődniük –Megosztható és nem megosztható erőforrások –Nem megosztható erőforrás megoszthatóvá tétele Ha az operációs rendszer nem eléggé „szigorú” egész rendszer hatékonysága múlhat egyes programok „jólneveltségén”
Multiprogramozott rendszerek Az operációs rendszernek váltogatnia a programok között ütemezés Minden programnak úgy kell „éreznie”, hogy csak „övé a gép” – interferencia nem lehetséges (memória, I/O kezelés) Már nem csak az operációs rendszer védelme, de a programok egymástól való védelme is fontos (a memória védelme mellett az I/O is) alkalmazások nem érhetik el közvetlen a hardvert!
Folyamatok Multiprogramozott operációs rendszerek egyik alapfogalma Először a Multics rendszer fejlesztői használták (60-as évek) Jelentése (egyik): a program végrehajtás alatt álló példánya De mi is ez?
Program futó példánya A folyamat leírható: –Terület a központi memóriában (kód, adat, stack) –Adatok és státuszinformációk a processzor regisztereiben –Egyéb státuszinformációk (pl. erőforrásokkal kapcsolatos) –Egy végrehajtási szál (most éppen melyik utasítást kell végrehajtani) Kiindulás: az operációs rendszerek folyamatok szintjén ütemeznek Folyamat váltáskor a teljes folyamat környezetet meg kell őrizni – ez biztosítja a folytathatóságot!
Folyamatok
Folyamatok – bonyolítás Szál (thread) alapú rendszerek, egy folyamaton belül több végrehajtási szál Több fizikai processzor, így egy időben valóban (nem csak látszólag) több folyamat futhat
Multiprogramozott OS – értékelés Processzor, memória, I/O kezelése –Virtualizált környezet Védekezés hibás, rosszindulatú kódoktól –A folyamatok csak a saját címterükben futhatnak (önmagukat igen, másokat nem károsíthatnak) –Az élet nem ennyire egyszerű Nem megfelelő (védelmi) rendszerbeállítások Hibák, hibák, hibák Környezet változására való érzékenység –Alapvetően az operációs rendszer szintjén jelentkezik –Valós és virtuális erőforrások minél teljesebb szétválasztása –Ha az OS nem kezeli a változást, alkalmazás szintről nem (vagy nagyon nehezen) lehet rajta segíteni
Miért hibás, késik? A funkciók bővülése, a támogatandó hardverek körének bővülése az operációs rendszerek komplexitásának jelentős növekedését eredményezte –Az egyik első időosztásos rendszer, a CTSS (1963, MIT) utasításból állt –Az egy évvel később bemutatott OS/360 (IBM) mérete már 1 millió+ sort tartalmazott –1975-re a Multics rendszer mérete meghaladta a 20 millió programsort –Az NT 4 mérete 16 millió+ sor, a Windows 2000 ennek több, mint kétszerese –Ettől a kezdetben kicsi és egyszerű Unix mai mérete sem marad el –A Linux mérete is jelentősen növekedett a kezdetekhez képest
A méret következményei Nehezen menedzselhető fejlesztés –A kiadások jellemzően késnek –A rendszerben mindig vannak hibák, a javítások (bizonyos hibák megszűntetésén túl) nem egyszer újabb hibákat generálnak –A teljesítmény sokszor nem éri el az elvárt szintet –A rendszer sérülékeny (biztonsági fenyegetések) A rendszer struktúrája fontos kérdés!
Változások motorja Optimalizálás, javítás (meglévő kódé) Hardver fejlődése –Új hardver eszközök –Új hardver „családok” –Hardverek teljesítmény, „mennyiségi” jellemzőinek változása Felhasználási mód, igények változása Programozási modell, elvárások változása –Pl. objektum orientált paradigma –Szálak