520 likes | 676 Views
OPERÁCIÓS RENDSZEREK OS fogalom, struktúrák. 2006/2007. tanév I. félév Dr. Vadász Dénes. Célkitűzések, tárgyfelépítés. Alapfogalmak, koncepciók, struktúrák, működés megismerése OS példák: Unix, Linux, W (a közös kiemelve) Témakörök: OS fogalom, történet, struktúrák,
E N D
OPERÁCIÓS RENDSZEREKOS fogalom, struktúrák 2006/2007. tanév I. félév Dr. Vadász Dénes
Célkitűzések, tárgyfelépítés • Alapfogalmak, koncepciók, struktúrák, működés megismerése • OS példák: Unix, Linux, W (a közös kiemelve) • Témakörök: • OS fogalom, történet, struktúrák, • Felületek a kernelhez (burok és API) • processzek és menedzsmentjük, • memóriamendzsment, • I/O, eszköz és fájlmenedzsment. Vadász
Módszerek • Előadások: lényegkiemelés, összefoglalások • Gyakorlatok: a tanszéki laborokban, teljesítendő feladatok minden gyakorlaton • Teljesítés • aláírás feltétele: gyakorlatokon aktív részvétel, legalább 8 gyakorlat elismertetése. Évközi zárthelyi. Aláírás pótlás a vizsgaidőszakban nincs. • Vizsga: írásbeli + szóbeli. Vizsgatételek az év végén. Évközi zárthelyi beszámít. • A tárgy anyaga szigorlati tananyag is! Vadász
A gyakorlatok, gyakorlatvezetők • IN 104 labor Répási Tibor • Kedd 8:00 2MMI • Kedd 9:00 2In • Kedd 12:00 2FP • Kedd 15:00 3In • Szerda 13:00 2EP Vadász
Irodalom • Tannenbaum: Modern Operating Systems, Prentice Hall, 1992. • Silberschach, Galvin: Operating Systems Concepts, Addison-Wesley, 1994. • Kóczy, Kondorossi szerk: Operációs rendszerek mérnöki megközelítésben, Panem, 2000. • Bach: The Unix System, Prentice Hall, 1985. • Vahalia: UNIX Internals: the new frontiers, Prentice Hall, 1996 • Vadász: Operációs rendszerek, ME, http://www.iit.uni-miskolc.hu/~vadasz/GEIAL202 • Unix on-line manual lapok, helps stb. Tudni kell angolul olvasni! Vadász
Az ütemterv • Lásd a hirdetőtáblán! Vadász
Számítógéprendszer fő komponensei • A HW fő részei: CPU, memória, eszközök, buszok • A működtető rendszer: OS • Az alkalmazások: segédprogramok, fejlesztők, AB rendszer, üzleti programok stb. • A felhasználó: alkalmazás használó, fejlesztő stb. Vadász
Működtető rendszerek fejlődése • Direkt futtatás a hardveren • Monitor • Futtatható rutinok gyűjteménye, ROM. Ismeri a konzolt • Konzol terminálon parancsok • examine mem-cell • set mem-cell • go mem-cell • etc. • Esetleg primitív fájl-rendszer, load, store parancsok • Operációs rendszer Vadász
Az operációs rendszer fogalma • Kiterjesztett gép (Extended Machine). • Kényelmessé, "felhasználóbarát" jellegűvé teszi a géphasználatot. • Erőforrás menedzser. • Hatékonnyá, biztonságossá, igazságossá teszi a géphasználatot. • Válaszoló gép (Veszély: burok (kezelő, UI) - kernel összetévesztés) Vadász
Történetük • Kapcsolódik a hardver fejlődéshez, • a számítógép használók munkamegosztása történetéhez • (hardveresek, rendszerprogramozók, rendszer-menedzserek, operátorok, programozók, felhasználók.) • a programozási módszerek fejlődéséhez stb. • Tanenbaum 4 generációt említ … Vadász
I. generáció: 1945-55. (Prelingual Stage) • Csövek, dugaszoló táblák, lyukkártyák • Nincs munkamegosztás: egybeesik a számítógépépítő, működtető, programozó, felhasználó szerepkör • Gépi nyelvű programozás • Nincs operációs rendszer Vadász
II. generáció: 1955-65 (Exploiting Machine Power) • Tranzisztorok. Kötegelt rendszerek. Karakterorientált (1401) és szószervezésű (7094) gépek. • Tervezők és építők; karbantartók; operátorok; programozók, felhasználók (Increasing the Expressive Power) • FORTRAN nyelv • A JOB fogalom: load-translate-load-exec szekvencia, eleinte “kézzel“, később “automatizálva“. • nem_rezidens “loader“ = monitor jellegű OS. Végül: ütemező is. • Tipikus a kötegelt (batch) feldolgozás Vadász
III. generáció: 1965-80 • (Reducing the Machine Dependency) • Egységesítés a karakter- és szófeldolgozásban (360) • Integrált áramkörök • Időosztásos multiprogramozás, memória particionálás, spooling (Simultaneuos Peripheral Operation On-Line) • Interaktivitás igény: kifejlődnek a parancsnyelvi értelmezők • “Kis“ gépek (PDP-11, VAX 780 stb.) • Sok operációs rendszer (OS360, MULTICS, RSX, Unix stb.) • Hardveresek; operátorok; rendszerprogramozók; programozók; felhasználók • Imperatív, funkcionális, logikai nyelvek. Szoftverkrízis (Algol, PL1, APL, LISP, PROLOG, C stb.) Vadász
IV. generáció: 1980-90 • (Reducing the Complexity) • LSI, VLSI; Személyi számítógépek, munkaállomások, szuperszámítógépek • Visszaesés a védelemben • Interaktivitás, felhasználóbarát kapcsolattartás. GUI is! • MS DOS, Unix, VAX/VMS, Novell stb. • Hálózati operációs rendszerek, osztott feldolgozás • Teljes a munkamegosztás • Objektumorientált programozás, párhuzamos programozás, szoftvertechnológiák, CASE Vadász
És ma? • Személyi számítógépek (kliensek), szerverek, grafikus munkaállomások, különleges architektúrák, az Internet, grid • Mikrokernelek • Unix, MS W, Linux, mach • Internet és WEB technológiák, OOP, Java, CORBA, DCOM, SW reengineering • Teljes munkamegosztás, mindenki felhasználó Vadász
Az utóbbi évtizedek … • 1985 – 95: olcsó processzálás • 1995 - 02: olcsó sávszélesség • A jövő: olcsó érzékelők … • Egy másik áttekintés … Két lapot mutatok … Vadász
OS osztályozási szempontok • Hardver függőség szerint • Személyi, kis, nagy gépek OS-e (?), architektúra független • Cél szerint • Általános, vagy speciális célú • Processzek, processzorok, felhasználók száma szerint • Single, vagy multi tasking, multi processing, multi threading • Single, vagy multi user • Distributed • Időkiosztás szerint • Szekvenciális, kooperatív, vagy beavatkozó; time sharing, real time • Memóriakezelés szerint • Valós címzésű, vagy virtuális címzésű • I/O és fájlrendszer megvalósítás szerint Vadász
A számítógép architektúrában az OS • Az OS rendszerszoftver, 2 fő céllal • kényelmet biztosít, • hatékonyságot, védelmet biztosít. • Elválasztja az alkalmazásokat a hardvertől • Lehetne-e struktúrálni? Vadász
Egy később tovább részletezett fogalom: a folyamat (processz) • A folyamat (processz) egy (párhuzamos szerkezetet nem tartalmazó) program futó példánya • Önálló entitás, azonosítható • Megkülönböztetem a programtól • Ugyanannak a programnak több futó példánya is lehet • A processz kontextus fogalmat is fogjuk tárgyalni • Az „alkalmazás” kifejezést itt „felhasználói processz” értelemben fogom használni • A taszk – fonál fogalmat is tárgyaljuk majd Vadász
Kernel struktúrák • Funkcionális szerkezetek (szolgáltatások szerinti komponensek) • Implementációs szerkezetek (hogyan programozzák az egyes komponenseket). Vadász
Szolgáltatások szerinti komponensek • Processz (taszk, fonál) menedzsment komponensek • CPU ütemezés, eseménykezelés, szignálozás, kölcsönös kizárás, szinkronizáció, processz-közti kommunikáció • Memória menedzselő komponensek • I/O menedzsment • device driver interface • szabad terület (blokk) menedzselése • blokk allokáció, diszk blokk scheduling • pufferezés • Fájl-rendszert megvalósító komponensek • jegyzék (directory) megvalósítás (fájl attribútumok kezelése) • fájlkezelés, biztonsági komponensek • Védelmi komponens(ek) • Hálózatkezelő komponensek • Felhasználói felület (nem feltétlenül OS komponens) Vadász
Processz (taszk, fonál) menedzsment komponensek Ad Funkcionális struktúra • Processzek kreációját és terminálódását biztosító funkciók • Processz/taszk/fonál kontroll, ütemezés • Állapotok nyilvántartása, • CPU ütemezés, kiosztás; felfüggesztés, elvétel, • processz szinkronizációs mechanizmusok (beleértve a holtpont elkerülését is biztosító kölcsönös kizárási mechanizmusokat), • processzek közti kommunikációs mechanizmusok. Vadász
Memória menedzselő komponensek Ad Funkcionális struktúra • Memória használatának nyilvántartása • Memória allokálás/felszabadítás a processzek számára • Címleképzés: logikai (virtuális) címek leképzése valós (buszra kiadható) címekre) • közben ki/be söprés, vagy • ki/be lapozás. • Utóbbiakhoz kapcsolat a másodlagos tároló menedzsmenttel. Vadász
I/O és másodlagos tároló menedzsment Ad Funkcionális struktúra • Eszközmeghajtó szoftverek (device drivers) biztosítása • blokkorientált eszközökhöz (diszkekhez), • karakterorientált eszközökhöz (terminálok, nyomtatók, portok stb.), • speciális eszközökhöz (óra, hálózat(?)) • Szabad blokk menedzselés (diszkeken) • Blokk allokálás/deallokálás (fájlokhoz, virtuális memóriához) • Diszk-blokk buffer cashing Vadász
Fájl-rendszert megvalósító komponensek Ad Funkcionális struktúra • Jegyzék (directory) struktúra biztosítása • Jegyzék implementáció, fájl-attribútumok rögzítése • Blokkhozzárendelés módszerei • Fájlok kreálása/törlése • Jegyzékek kreálása/törlése • Fájlok írása/olvasása • Fájlrendszer létrehozásának, helyreállításának segédprogramjai • Mentések és visszaállítások segédprogramjai Vadász
Esettanulmányok • A VAX/VMS, • a W NT és a • UNIX funkcionális struktúrája. • 6 lapot mutatunk … Vadász
A VAX/VMS struktúrája • A VAX CPU négy futási módja: User, Supervisor, Executive, Kernel. Áttérés: trap mechanizmussal. Lásd: $ MONITOR MODES • U mode: alkalmazások, segédprogramok, fejlesztők • S mode: a DCL (A DCL szoros kapcsolatban a VMS-sel) • E mode: RMS rutinok: felelősek a fájl szervezésért; ACP-k: felelősek az elhelyezkedésért, méretekért. • K mode: System Services: • I/O alrendszer • Memória menedzsment • Processz és időkezelés • Vegyes szolgáltatások (nincs az ábrán): logikai név kezelés, lock menedzsment stb. Vadász
A VMS struktúra Layered Products(Apps) Program Development Tools Utilities Support Libraries User Command Language Interpreter (CLI)Supervisor Record Management Service (RMS)Executive System servicesKernel Memory Management I/O Subsystem Process andtime management System-wide data structures Platform-Adaptation Layer (PAL) - Alpha Vadász
Az NT struktúra, magas szinten Environment Subsystems System & ServiceProcesses Windows POSIX OS/2 User Application Windows User Mode Kernel Mode Subsystem DLL Executive Windows User/GDI Device Driver Device Drivers Kernel Hardware Abstraction Layer (HAL) Vadász
Az NT struktúra • HAL: csatoló a HW és a mikrokernel között. A HW különbözőségeket (processzor architektúra, processzorok száma stb.) küszöböli ki. A HW gyártók készítik, szállítják. • Mikrokernel: IT kezelés, ütemezés a szálakra, CPU szinkronizáció stb. • Szolgáltatások: • Objektum menedzser: objektum elnevezések, biztonsági tényezők kezelése. “Handle“ készítés az objektumokhoz. • Folyamat menedzser: taszkok létrehozása, törlése, szálak létrehozása, törlése. Együttműködik a biztonsági rendszerrel, a memória menedzserrel. • Helyi elj. hívás: (hasonlít az RPC-hez) egy alkalmazáshoz a rendszerkörnyezetet létrehozó alrendszer (kliens-szerver) létrehozáshoz hívás. Vadász
Windows NT Kernel Vadász
Az NT struktúra (folyt.) • Szolgáltatások (folyt.): • I/O menedzser: Cache funkciókat, fájl-rendszereket (FAT, NTFS, CDFS), eszköz meghajtókat (NET+diszkes) biztosít. • Virtuális memória menedzser (ld. később). • Megjelenítő rendszer: • Win32K ablak menedzser: kezeli az ablakokat, képernyőt; a bejövő jeleket (eljuttatja az alkalmazásokhoz). • GDI (Graphics Device Interface): grafikus csatoló: képernyő rajzoló eszköz (primitívek) gyűjtemény. • Grafikus eszközmeghajtók (drivers): vezérlik a HW-t. • A konzol (ez felhasználói szintű, csak a teljesség kedvéért itt!): szöveges ablak támogatást biztosít. • Biztonsági figyelő. Vadász
A Unix funkcionális felépítése Felhasználói processz Felhasználói mód (trap) Kernel mód Programozói felület, rendszerhívás diszpécser Fájlrendszer Folyamatvezérlőalrendszer Folyamatok köztikommunikáció I/Oalrendszer Buffer cache Ütemező Device drivers Memóriamenedzser Hardver szint Hardver, vezérlők Vadász
Implementációs struktúrák • Hogyan programozzák a komponenseket … • Funkciókhoz rutinok … • „Call” jelleggel hívható rutinok • Argumentumok – visszatérési érték • Megszakítással hívható rutinok (IT kezelők) • Az IT típusa – Iret • Eseménykezelő rutinok (esemény kezelők) • Az esemény jellemzői – visszatérési érték, ha egyáltalán …) • Hol lehetnek ezek a rutinok? • A betöltődő kernelbe linkelve … • Futtatható programba linkelve … Vadász
Lehetséges archeo típusok • Monolitikus rendszer • Réteges struktúrák • Az ügyfél – szolgáltató (kliens – szerver) modell A módváltás – a trap • A szolgáltató rutinok (sokszor) kernel módban futnak! • Akár a kernelbe vannak linkelve, • Akár futtaható program rutinjai. Vadász
Monolitikus rendszer Ad Implementációs struktúra • Egyszerű szerkezet • A kernel (mag): egy betölthető modulba összelinkelt, szolgáltató rutinok összessége • A kernel a rendszer indításkor (teljes egészében) betöltődik • A szolgáltató rutinok hívása: rendszerhívással (system call), megszakítással (IT), vagy kivételes eseményre való reagálással. • Futási mód váltás (user mód - kernel mód: trap) • Tipikus példa: korai Unix-ok Vadász
Réteges struktúra Ad Implementációs struktúra • A szolgáltató rutinok rétegekbe szervezettek. • A rétegezés előnye • Egy rétegben jól meghatározott, összetartozó funkciók • Egy réteg elrejti az alatta lévő komponensek részleteit • Magasabb absztrakciós szintű szolgáltatásokat biztosít: virtuális gépet • A rétegeket külön-külön betölthető fájlokba linkelik • A betöltés akár dinamikusan is történhet (DLL) • Már a monolitikusban is lehet diszpécser réteg • Lehetséges: a rétegekhez egyre privilegizáltabb futási módok. • Tipikus példa: a The OS Vadász
A THE struktúrája Dijkstra professzor és hallgatói készítették, 1968. A rétegezés tervezési koncepció volt: egyetlen modulba linkelték. Vadász
A réteges struktúrától a virtuális gépig Ad Implementációs struktúra • Emlékezz: az operációs rendszer virtuális gép: ezt a koncepciót erősíti a rétegezettség • A rétegek virtuális (absztrakt, kiterjesztett) gépek • Absztrakt (kiterjesztett, virtuális) instrukcióknak foghatók fel a rétegek közötti felületek hívásai Vadász
A kliens-szerver modell Ad Implementációs struktúra • Igény a kisebb kernelre: mikrokernel • Bizonyos rendszerszolgáltatások kiszolgálására önálló processzeket készítenek. • Ezek önállóan linkelhetők • Betöltődhetnek a rendszer egész életére, vagy időlegesen (daemon processzek) • Futhatnak kernel-, vagy akár felhasználói módban • Processzek közti kommunikációval kérhetők a szolgáltatások. A kernel szinte csak a kommunikációt és az időosztást biztosítja. • Ebből fejlődtek ki a hálózati osztott rendszerek. Vadász
A kliens – szerver modell Kliens processz Kliens processz Terminál szerver … Fájl szerver Nyomtató szerver Felhasználói mód Kernel mód Kérelem, válasz üzenetMikro-kernel Memória szerver Kliens processz Kernel Fájl szerver Kernel Processz szerver Kernel Üzenet Ad Implementációs struktúra Vadász
Kis összefoglalás • Két oldalon összefoglaljuk a programtechnikai megoldásokat, majd tárgyaljuk • a kernelbe való „belépés” és „kilépés” lehetőségeit, forgatókönyveit. Vadász
Programtechnikai megvalósítások • Szolgáltató eljárás, függvény kód; call hívással érhető el (trap) • Kivételes eseményt, megszakítást kiszolgáló rutinok; elérésük: IT-vel, kivétellel • Önálló processzek (felhasználói/rendszer processzek) rutinjai; elérhetők processz közti kommunikációs mechanizmusokkal. Ilyenek pl.: • a swapper; a módosított lapok készletét kiíró processz; az ACP-k (Ancillary Control Process), melyek pl. a fájloknak az eszközökön való elhelyezéséért felelősek (a rekordformátumokért az RMS felelős!); mentő/visszaállító processzek stb. Vadász
Programtechnikai megvalósítások • Statikusan betöltődő kernel rutinok (A rutinokat fordítják, összelinkelik egyetlen végrehajtható fájlba; a betöltés során betöltődik és megkapja a vezérlést) • Call hívással elérhetőek (gyakran trap-pel) • IT-vel elérhetőek • Dinamikusan betöltődő rutinok (regisztráció -betöltés - inicializálás - szokásos hívások [call/IT] - shutdown - regisztráció megszüntetés szekvenciák) • Önálló processzek (felhasználói vagy kernel szinten) Vadász
Hogyan juthat a vezérlés a kernelbe? • A felhasználói processzekből rendszerhívással (System Call). (Ez a programozónak RTL hívásnak tűnik.) • Hardverből megszakítással (Interrupt). Aszinkron. • Hardverből kivételes esemény (Exeption Condition) bekövetkezésével. Váratlan, de szinkron. (Némely esetben ezt nevezik trap-nek.) Vadász
A kernelbe lépés eseményei (Unix) • Átkapcsolás kernel módba • Push PC és PSW (már a kernel verembe!) • Hívás kódja a verembe • Ált. célú regiszterek lementése (assembly rutin) • Hívódik • syscall() : rendszerhíváshoz (ez diszpécser); • trap() : kivételes eseményhez; • device driver rutin : IT-hez. • A diszpécser • ellenőrzi, másolja a paramétereket, • felkészül a megszakítására, • hívja a megfelelő szolgáltató rutint. Jegyezzük meg: a syscall és kivétel kiszolgálás processz kontextusban fut, míg az IT kiszolgálás rendszer kontextusban! Vadász
Visszatérés a kernelből • Visszatérés a diszpécserhez (siker/sikertelenség jelezve); • Szignál vizsgálat, szignál kiszolgálás; • Ált. regiszterek visszavétele (assembly rutin); • Hibakód az errno-ba, visszatérési regiszter beállítása; • Return-from-interrupt instrukció (Pop PSW és PC); • Visszaáll a felhasználói mód. Vadász
Összefoglalás. Eddig vettük: • Az OS fogalmát, OS-ek fejlődési fokozatait, • OS struktúrákat különböző nézőpontok szerint: • funkcionális struktúra, • az implementáció szerinti struktúra. • A kernelbe lépés, a kernelből való kilépés eseményeit. Ezeket később még részletezzük. Vadász