320 likes | 448 Views
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.
E N D
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
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 – 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) 32 000 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