OPERÁCIÓS RENDSZEREK OS fogalom, struktúrák
2006/2007. tanév II. 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
2
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
3
1
A gyakorlatok
Vadász
4
Irodalom • Tannenbaum: Modern Operating Systems, Prentice Hall, 1992. • Silberschach, Galvin: Operating Systems Concepts, AddisonWesley, 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/iitweb/opencms/users/DVadasz • Unix on-line manual lapok, helps stb. Tudni kell angolul olvasni! Vadász
5
Az ütemterv • Lásd a hirdetőtáblán!
Vadász
6
2
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
7
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
8
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
9
3
Történetük • Tanenbaum 4 generációja (5 lap) – 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.
• Az egyes funkciók kialakulásának sorrendje (3 lap) • Táblázatos összefoglaló (2 lap) Vadász
10
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
Tanenbaum koncepciója
11
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
Tanenbaum koncepciója
12
4
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
Tanenbaum koncepciója
13
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
Tanenbaum koncepciója
14
A IV. generáció után ... • 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
Tanenbaum koncepciója
15
5
OS történet elemek • Eleinte direkt futtatás a hardveren • Primitív I/O rutinok összegyűjtve ROM-ban – Konzol kezelő és parancsértelmező (monitor) – Alkalmazások betölthetők, indíthatók, eredményük visszajelezhető
• Előrelépés a memóriamenedzselésben – Rögzített partíciós memória gazdálkodás, JOB fogalom
• Fejlődő I/O rutinkészlet, eszközök – Lyukkártya, lyukszalag, nyomtató – Primitív fájlrendszerek – Kötegelt (batch) feldolgozás Vadász
Funkciók kialakulása
16
OS történet elemek • Előrelépés az ütemezésben – Nem beavatkozó ütemezés a kötegelt feldolgozásban – Single user mód
• Sokszínű igénynövekedés – Interaktivitásra igény és kielégítése – Ütemezésben fejlődés (időosztás, valós idejű ütemezés, kölcsönös kizárás stb.) – Processz koncepció – Multi user mód, session menedzselés – Virtuális memóriamenedzselés – Fejlett I/O (CRT terminálok és vonalak, diszkek és fájlrendszerek) Vadász
Funkciók kialakulása
17
OS történet elemek • Asztali és személyi gépek (olcsóvá vált processzálás) – Fejlődő megjelenítés, grafika, GUI igény – Hálózatosodási igény kezdődik
• Az Internet elterjedése – – – –
Hálózati operációs rendszerek Multimédia, GUI uralkodóvá válik A védelmi koncepciók jelentősége megnőtt Kommunikáció és információnyerés (WEB)
• Infokommunikáció – – – –
A telekommunikációs és informatika összefonódása Olcsó sávszélesség Grid Mobil
Vadász
Funkciók kialakulása
18
6
Az utóbbi évtizedek a számítástechnikában Az évek
60-as
A Kötegelt paradigma feldolgozás
70-es
80-as
90-es
Időosztás
Asztali gépek
Hálózatok
Hol?
SzámítóTerminálközpontban szobában
Íróasztalon
Mobil
Az adatok
Numerikus Szövegek + adatok számok
…+ rajzok
Multimédia
Fő cél
Számítások Hozzáférés
Megjelenítés
Kommunikáció
Vadász
19
Az utóbbi évtizedek a számítástechnikában 2 Az évek
60-as
70-es
80-as
90-es
A paradigma
Batch
Time sharing
Desktop
Network
Az interfész
Lyukkártya
Billentyűzet + CRT
Lásd és kattints
Kérdezd és mondd
Kapcsolódás
Nincs
Terminál vonalak
LAN
Internet
Tulajdonos
Intézeti sz.központ
Osztályok
Osztályok dolgozói
Mindenki
Vadász
20
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
21
7
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 Alkalmazás1
Alkalmazás2
OS kernel Hardver • Lehetne-e struktúrálni? Vadász
22
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
23
Kernel struktúrák • Funkcionális szerkezetek (szolgáltatások szerinti komponensek) • Implementációs szerkezetek (hogyan programozzák az egyes komponenseket).
Vadász
24
8
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
25
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
26
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
27
9
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
28
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
29
Esettanulmányok • A VAX/VMS, • a W NT és a • UNIX funkcionális struktúrája.
Vadász
30
10
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
31
A VMS struktúra Layered Products (Apps) Utilities
Program Development Tools
User
Support Libraries
Command Language Interpreter (CLI) Supervisor Record Management Service (RMS) Executive System services Kernel Memory Process and I/O Subsystem Management time management System-wide data structures Platform-Adaptation Layer (PAL) - Alpha Vadász
32
Az NT struktúra, magas szinten Environment Subsystems System & Service Processes User Mode
User Application Subsystem DLL
OS/2
Windows
POSIX Windows
Kernel Mode Executive Device Drivers
Kernel
Hardware Abstraction Layer (HAL) Vadász
Windows User/GDI Device Driver 33
11
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
34
Alkalmazás Felhasználói mód Kernel mód
Windows NT Executive Executive szolgáltatások
I/O Objektum Biztonsági Folyamat menedzser menedzser figyelő menedzser Eszköz meghajtók
Helyi elj.hívás
Virtuális mem. men.
Microkernel
Win32K & GDI Grafikus eszk.megh.
Hardware Abstraction Layer (HAL) Hardver
Windows NT Kernel
Vadász
35
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
36
12
A Unix funkcionális felépítése Felhasználói processz
Felhasználói mód Kernel mód
(trap)
Programozói felület, rendszerhívás diszpécser
Fájlrendszer I/O alrendszer Buffer cache
Folyamat vezérlő alrendszer
Folyamatok közti kommunikáció Ütemező Memória menedzser
Device drivers Hardver szint
Hardver, vezérlők Vadász
37
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
38
Lehetséges archetí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 futtatható program rutinjai. Vadász
39
13
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
40
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
41
A THE struktúrája Rétegek 5
Operátor
Az operátor indít, lelő processzeket
4
Felhasználói programok
Független processzek
3
I/O menedzsment, eszközök
Felette virtuális (absztrakt) I/O
2
Operátor-processz kommunikáció
A processzeknek saját, virtuális konzolok
1
Memória-dob menedzsment
Virtuális memória, a processz látja a teljes címtartományát
0
Processz allokálás, multiprogramozás
Virtuális CPU-k, minden processztől elrejtve a többi
Dijkstra professzor és hallgatói készítették, 1968. A rétegezés tervezési koncepció volt: egyetlen modulba linkelték. Vadász
42
14
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
43
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
44
A kliens – szerver modell Ad Implementációs struktúra
Felhasználói mód
Kliens processz
Kliens processz
Kernel mód
Terminál szerver
…
Fájl szerver
Kérelem, válasz üzenet Mikro-kernel
Nyomtató szerver Memória szerver
Kliens processz
Fájl szerver
Processz szerver
Kernel
Kernel
Kernel
Üzenet
Vadász
45
15
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
46
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
47
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
48
16
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
49
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
50
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
51
17
Ö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
52
OPERÁCIÓS RENDSZEREK OS fogalom, struktúrák, Vége
18