Operációs rendszerek



Hasonló dokumentumok
OPERÁCIÓS RENDSZEREK. Elmélet

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

A számítógép egységei

Alkalmazások típusai Szoftverismeretek

Operációs rendszerek. Bemutatkozás

Informatika érettségi vizsga

IT - Alapismeretek. Feladatgyűjtemény

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

Az operációs rendszer szerkezete, szolgáltatásai

Számítógép felépítése

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

elektronikus adattárolást memóriacím

6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.

A fejlődés megindulása. A Z3 nevet viselő 1941-ben megépített programvezérlésű elektromechanikus gép már a 2-es számrendszert használta.

A számítástechnika fejlődése

Alapismeretek. Tanmenet

Fábián Zoltán Hálózatok elmélet

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

ELSŐ LÉPÉSEK A SZÁMÍTÓGÉPEK RODALMÁBA AMIT A SZÁMÍTÓGÉPEKRŐL TUDNI ÉRDEMES

Számítógép architektúra

Az interrupt Benesóczky Zoltán 2004

Informatikai Rendszerek Intézete Gábor Dénes Foiskola. Operációs rendszerek oldal LINUX

Architektúra, megszakítási rendszerek

SZÁMÍTÓGÉP FELÉPÍTÉSE (TK 61-TŐL)

Utolsó módosítás:

A számítógépek felépítése. A számítógép felépítése

erettsegizz.com Érettségi tételek

Számítógépek felépítése, alapfogalmak

A mikroprocesszor felépítése és működése

Operációs rendszerek MINB240 V2+2+0

3. Az elektronikus számítógépek fejlődése napjainkig 1

Operációs rendszerek (I 1204)

Az informatika fejlõdéstörténete

Operációs rendszerek MINB240 V kredit KF Nagyváradi Anett 0. előadás Bevezetés

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Fejezetek az Információ-Technológia Kultúrtörténetéből

Operációs rendszerek

Számítógép architektúrák. Bevezetés

Operációs rendszerek

Operációs rendszerek Folyamatok 1.1

1. Milyen eszközöket használt az ősember a számoláshoz? ujjait, fadarabokat, kavicsokat

Operációsrendszerek. 2. elıadás. Standard ismeretek II.

Bepillantás a gépházba

1. MODUL - ÁLTALÁNOS FOGALMAK

1. Fejezet: Számítógép rendszerek. Tipikus számítógép hirdetés

Adatok ábrázolása, adattípusok

IT - Alapismeretek. Megoldások

Jacquard szövőgépe, vezérlési modulok használata 1805 lyukkártyás vezérlés

Számítógépek felépítése

1. Generáció( ):

Adatbázis rendszerek. dr. Siki Zoltán

Operációs Rendszerek II.

Számítógép fajtái. 1) személyi számítógép ( PC, Apple Macintosh) - asztali (desktop) - hordozható (laptop, notebook, palmtop)

TestLine - zsoltix83tesztje-01 Minta feladatsor

Léteznek nagyon jó integrált szoftver termékek a feladatra. Ezek többnyire drágák, és az üzemeltetésük sem túl egyszerű.

TestLine - zsoltix83tesztje-01 Minta feladatsor

Számítógépes munkakörnyezet II. Szoftver

Operációs rendszerek III.

Térinformatika. Térinformatika. GIS alkalmazói szintek. Rendszer. GIS funkcionális vázlata. vezetői szintek

Processzor (CPU - Central Processing Unit)

2. rész BEVEZETÉS A SZÁMÍTÓGÉPEK VILÁGÁBA. Az információ elérésének és felhasználásának képessége.

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

SZÁMÍTÓGÉPES ALAPISMERETEK

Hálózati ismeretek. Az együttműködés szükségessége:

ismerd meg! A PC vagyis a személyi számítógép

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

Operációs rendszerek - bevezető

Alapismeretek. Tanmenet

Digitális rendszerek. Digitális logika szintje

SZOFTVER = a számítógépet működtető és az azon futó programok összessége.

Operációs rendszerek II. Folyamatok ütemezése

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Bevezetés az informatikába

Operációs rendszerek. Az X Window rendszer

Operációs rendszerek. Az NT memóriakezelése

Számítógépes alapismeretek

Alapismeretek. Tanmenet

BEVEZETÉS A SZÁMÍTÓGÉPEK VILÁGÁBA

Számítógépek felépítése, alapfogalmak

SZÓBELI ÉRETTSÉGI TÉMAKÖRÖK

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Információs technológiák 1. Ea: Történelmese

Az informatika alapjai. 10. elıadás. Operációs rendszer

1. Fejezet: Számítógép rendszerek

Tartalomjegyzék. Előszó... xi. 1. Bevezetés Mechanikai, elektromos és logikai jellemzők... 13

Informatika szóbeli vizsga témakörök

Az Informatika Elméleti Alapjai Dr. Kutor László. A számolás korai segédeszközei A korszerű számítógépek kialakulása

Az Informatika Elméleti Alapjai Dr. Kutor László. A számolás korai segédeszközei A korszerű számítógépek kialakulása

Programozás alapjai. Wagner György Általános Informatikai Tanszék

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

Tananyagok adaptív kiszolgálása különböző platformok felé. Fazekas László Dr. Simonics István Wagner Balázs

A Számítógépek felépítése, mőködési módjai. A Számítógépek hardverelemei

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Operációsrendszerek. 1. elıadás. Standard ismeretek

Nemzetiség: Állampolgárság: Született: Elhunyt: Magyar Magyar

A személyi számítógép felépítése

14. Tétel. A kezelt hardvererőforrásoknak része többek között a memória, a processzor, a merevlemez és a perifériális eszközök használata.

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Átírás:

Knapp Gábor Dr. Adamis Gusztáv Operációs rendszerek A Windows c. függeléket írta: Ágoston György Bírálta: Dr. Csopaki Gyula egyetemi docens Lektorálta: Ribényi András foiskolai docens LSI Oktatóközpont A Mikroelektronika Alkalmazásának Kultúrájáért Alapítvány Budapest, 1999

Tartalomjegyzék 1. ELOSZÓ...1 1.1 ELOSZÓ A MÁSODIK KIADÁSHOZ...1 1.2 ELOSZÓ AZ ELSO KIADÁS HOZ...2 1.3 A KÖNYVBEN HASZNÁLT JELEK...3 2. BEVEZETÉS...5 2.1 A SZÁMÍTÓGÉPEK FELÉPÍTÉSE...6 2.1.1 HARDVER MEGKÖZELÍTÉS...6 2.1.2 FUNKCIONÁLIS MEGKÖZELÍTÉS... 10 2.2 AZ OPERÁCIÓS RENDSZEREK FEJLODÉSE...12 2.2.1 A KEZDETEK... 12 2.2.2 KÖTEGELT FELDOLGOZÁS... 15 2.2.3 MULTIPROGRAMOZÁS (TÖBBFELADATOS RENDSZEREK)... 19 2.2.4 INTERAKTÍV RENDSZEREK... 21 2.2.5 SZEMÉLYI SZÁMÍTÓGÉPEK... 23 2.3 A JELEN ÉS A KÖZELJÖVO TENDENCIÁI...25 2.3.1 A UNIX OPERÁCIÓS RENDSZER... 26 2.3.2 TÖBBPROCESSZOROS RENDSZEREK... 27 2.3.3 ELOSZTOTT RENDSZEREK... 28 2.3.4 OPERÁCIÓS RENDSZER MINDENHOL... 29 2.4 ALAPFOGALMAK...30 2.4.1 FOLYAMATOK... 30 2.4.2 EROFORRÁSOK... 32 2.4.3 AZ OPERÁCIÓS RENDSZEREK MEGHATÁROZÁSA... 34 2.4.4 AZ OPERÁCIÓS RENDSZEREK SZERKEZETE, SZOLGÁLTATÁSAI... 35 2.4.4.1 Rendszermag (KERNEL)... 36 2.4.4.2 Rendszerhívások, válaszok... 37 2.4.4.3 Eszközkezelok, megszakításkezelés... 38 2.5 VIRTUÁLIS GÉPEK...41 2.5.1 AZ IBM VM RENDSZERE... 42 2.5.2 A SUN JAVA RENDSZERE... 44 2.6 ÖSSZEFOGLALÁS...45 2.7 ELLENORZO KÉRDÉSEK...45

3. A FELHASZNÁLÓI FELÜLET...47 3.1 A FELHASZNÁLÓ ÉS A RENDSZERMAG...48 3.1.1 KÜLSO EROFORRÁSOK... 48 3.1.2 BELSO EROFORRÁSOK... 49 3.2 A PROGRAMOZÓI FELÜLET...50 3.2.1 A FORRÁSKÓD ELKÉSZÍTÉSE... 50 3.2.2 FORDÍTÁS... 50 3.2.3 SZERKESZTÉS... 51 3.2.4 BETÖLTÉS, DINAMIKUS KÖNYVTÁRAK... 52 3.3 KARAKTERES FELHASZNÁLÓI FELÜLET...53 3.3.1 PROGRAMKEZELÉS... 53 3.3.1.1 Program indítása... 54 3.3.1.2 Program környezet beállítása... 55 3.3.1.3 A folyamat futásának ellenorzése... 56 3.3.1.4 Vezérlési szerkezetek... 56 3.3.2 A PARANCSÉRTELMEZO EGYÉB FUNKCIÓI... 56 3.4 GRAFIKUS FELHASZNÁLÓI FELÜLETEK...57 3.4.1 AZ ABLAKOZÓ RENDSZER MUKÖDÉSE... 58 3.4.2 A GRAFIKUS FELÜLETEK JELLEMZOI... 59 3.4.2.1 Ablakok rendszere... 59 3.4.2.2 Az események címzettjének felismerése... 60 3.4.2.3 Eszközfüggetlen muködés... 60 3.4.2.4 Az adatforgalom csökkentése... 61 3.5 SEGÉDPROGRAMOK, ALRENDSZEREK...61 3.6 EGY FELHASZNÁLÓBARÁT FELÜLET JELLEMZOI...63 3.7 ELLENORZO KÉRDÉSEK...64 4. ÁLLOMÁNYOK...67 4.1 FÁJLNEVEK...69 4.2 FÁJLOK JELLEMZOI...72 4.3 KÖZVETETT HIVATKOZÁSOK...73 4.4 KATALÓGUSOK (DIRECTORY)...74 4.4.1 KATALÓGUS NÉLKÜL... 75 4.4.2 EGYSZINTU KATALÓGUS... 75 4.4.3 KÉTSZINTU KATALÓGUS... 76 4.4.4 TÖBBSZINTU (HIERARCHIKUS) FÁJL RENDSZER... 77 4.5 HOZZÁFÉRÉSI JOGOK...79

4.5.1 JOGOSULTSÁGOK TÍPUSAI... 80 4.5.2 JOGOK NYILVÁNTARTÁSA... 81 4.6 FÁJLOK ELHELYEZÉSE...81 4.6.1 FOLYTONOS KIOSZTÁS... 82 4.6.2 LÁNCOLT ELHELYEZÉS... 84 4.6.3 INDEXTÁBLA ALKALMAZÁSA... 85 4.7 MUVELETEK ÁLLOMÁNYOKKAL, KATALÓGUSOKKAL...86 4.7.1 ÁLLOMÁNY, KATALÓGUS LÉTREHOZÁSA... 86 4.7.2 ÍRÁS, OLVASÁS ÁLLOMÁNYOKBA... 87 4.8 ELLENORZO KÉRDÉSEK...88 5. LEMEZKEZELÉS...90 5.1 HÁTTÉRTÁROLÓK FELÉPÍTÉSE...91 5.1.1 MÁGNESSZALAGOK... 92 5.1.2 MÁGNESLEMEZEK... 94 5.1.3 OPTIKAI TÁROLÓK... 97 5.2 ESZKÖZMEGHAJTÓK...99 5.2.1 A LEMEZ ESZKÖZMEGHAJTÓJÁNAK FELÉPÍTÉSE... 100 5.2.2 LEMEZÜTEMEZÉS - A MEGHAJTÓ FELSO OLDALA... 102 5.2.2.1 Sorrendi kiszolgálás... 102 5.2.3 A CÍMSZÁMÍTÁS - AZ ESZKÖZMEGHAJTÓ ALSÓ OLDALA... 104 5.2.4 MEMÓRIA TERÜLETEK KIVÁLASZTÁSA... 105 5.2.4.1 Aszinkron átvitel megvalósítása... 105 5.2.4.2 Átmeneti tárak (Buffer pool)... 106 5.2.4.3 Lemezgyorsítás (Disc caching)... 106 5.3 AZ ADATTÁROLÁS OPTIMALIZÁLÁSÁNAK MÁS MÓDSZEREI...107 5.3.1 BLOKKMÉRET OPTIMALIZÁLÁSA... 107 5.3.2 ADATTÖMÖRÍTÉS... 109 5.3.3 MEGBÍZHATÓSÁG, REDUNDANCIA... 112 5.4 ELLENORZO KÉRDÉSEK...114 6. EROFORRÁSKEZELÉS...116 6.1 EROFORRÁS KEZELÉS...117 6.2 EROFORRÁS FOGLALÁSI GRÁF...118 6.3 HOLTPONT...119 6.4 KIÉHEZTETÉS...120 6.5 PÉLDA - A VACSORÁZÓ BÖLCSEK...122

6.6 HOLTPONT KEZELO STRATÉGIÁK...123 6.6.1 HOLTPONT MEGELOZO STRATÉGIÁK... 125 6.6.1.1 Egyetlen foglalási lehetoség (One-shot allocation)... 125 6.6.1.2 Rangsor szerinti foglalás (Hierarchical allocation)... 126 6.6.1.3 A bankár algoritmus (Banker s algorithm)... 128 6.6.2 HOLTPONT FELSZÁMOLÁSA... 137 6.6.2.1 Holtpont detektálása... 137 6.6.2.2 Holtpont megszüntetése... 138 6.7 KÖZÖS EROFORRÁSOK...140 6.8 ELLENORZO KÉRDÉSEK...148 7. FOLYAMAT- ÉS PROCESSZORKEZELÉS...150 7.1 FOLYAMATOK LÉTREHOZÁS A...150 7.2 MUVELETEK FOLYAMATOKKAL...152 7.2.1 VÁRAKOZÁSI SOROK... 152 7.2.2 KÖRNYEZETVÁLTÁS... 154 7.3 A FOLYAMATOK ALAPÁLLAPOTAI...154 7.4 FELFÜGGESZTETT ÁLLAPOT...156 7.5 PROCESSZORÜTEMEZÉS...157 7.5.1 ELOBB JÖTT, ELOBB FUT (FCFS)... 159 7.5.2 LEGRÖVIDEBB ELONYBEN (SJF)... 161 7.5.3 KÖRBEN JÁRÓ ALGORITMUS (RR)... 162 7.5.4 PRIORITÁSOS MÓDSZEREK... 165 7.6 ELLENORZO KÉRDÉSEK...165 8. MEMÓRIAKEZELÉS...168 8.1 VALÓSÁGOS TÁRKEZELÉS...168 8.1.1 RÖGZÍTETT CÍMZÉS... 169 8.1.2 ÁTHELYEZHETO CÍMZÉS... 169 8.1.3 ÁTLAPOLÓ (OVERLAY) MÓDSZER... 170 8.1.4 TÁRCSERE (SWAPPING)... 171 8.1.5 ÁLLANDÓ PARTÍCIÓK... 172 8.1.6 RUGALMAS PARTÍCIÓK... 174 8.1.7 LAPOZÁS (PAGING)... 175 8.2 VIRTUÁLIS TÁRKEZELÉS...180 8.2.1 A VIRTUÁLIS TÁRKEZELÉS ALAPJAI... 182 8.2.2 LAPKIOSZTÁSI ELVEK... 186

8.2.3 LAPCSERE STRATÉGIÁK... 188 8.2.3.1 Az optimális stratégia (Optimal - OPT)... 188 8.2.3.2 Elobb jött - elobb megy (First In First Out - FIFO)... 189 8.2.3.3 Legrégebben használt (Last Recently Used - LRU)... 191 8.2.3.4 Egyéb lapozási stratégiák... 192 8.2.3.5 Második esély (Second Chance - SC)... 193 8.2.3.6 Mostanában nem használt... 194 8.2.4 A PROGRAMOZÓ SZEREPE A LAPHIBÁK SZÁMÁNAK CSÖKKENTÉSÉBEN... 194 8.2.5 A CÍMSZÁMÍTÁS GYORSÍTÁSA ASSZOCIATÍV TÁRRAL... 195 8.3 TÁRVÉDELEM, SZEGMENTÁLÁS...199 8.3.1 A FOLYAMATOK LOGIKAI EGYSÉGEINEK VÉDELME... 200 8.3.2 A FOLYAMATOK VÉDELME EGYMÁSTÓL... 203 8.3.3 AZ OPERÁCIÓS RENDSZER VÉDELME - PRIORITÁSOK... 204 8.3.3.1 A címszámítás gyorsítása szegmentálásnál... 205 8.3.3.2 Összetett memóriakezelés... 206 8.4 GYORSTÁRAK (CACHE MEMÓRIÁK)...209 8.5 TÁROLÓ HIERARCHIA...210 8.6 ELLENORZO KÉRDÉSEK...212 9. A PÁRHUZAMOS PROGRAMOZÁS ALAPJAI...214 9.1 BEVEZETÉS...214 9.2 A PRECEDENCIAGRÁF...215 9.3 FORK - JOIN UTASÍTÁSPÁR...218 9.4 PARBEGIN - PAREND UTASÍTÁSPÁR...222 9.5 ELLENORZO KÉRDÉSEK...232 10. IRODALOMJEGYZÉK...234 FÜGGELÉK 1. A WINDOWS (ÁGOSTON GYÖRGY)... F1 2. A LINUX (KNAPP GÁBOR)... F21

Ábrajegyzék 2.1 ábra Számítógépek blokkvázlata...6 2.2 ábra Neumann-ciklus...8 2.3 ábra Számítógép blokkvázlat, operációs rendszerrel...10 2.4 ábra A hétszintu logikai modell...11 2.5 ábra Az operációs rendszer helye az alkalmazás hierarchiában...11 2.6 ábra Számítógép használat a kezdetekben: "open shop"...14 2.7 ábra Operátor vezette géptermek: "closed shop"...15 2.8 ábra Mágnesszalag és segédszámítógép alkalmazása...16 2.9 ábra A Job Control Language...17 2.10 ábra Spooling rendszer...18 2.11 ábra Átlapolt rendszerek...19 2.12 ábra Az operációs rendszerek alapfunkciói, a kernel...21 2.13 ábra Interaktív rendszerek...22 2.14 ábra Személyi számítógépek születése...24 2.15 ábra Napjaink tendenciái...25 2.16 ábra A Unix terjedése, jelentosége...26 2.17 ábra Megszakítható és Nem megszakítható eroforrások...34 2.18 ábra Felhasználói folyamatok, kernel, hardver...35 2.19 ábra Az operációs rendszerek további rétegei...36 2.20 ábra Megszakítások kezelése...41 2.21 ábra DOS + Windows alkalmazás hardver kezelése...42 2.22 ábra Az IBM VM vázlatos felépítése...43 2.23 ábra A JAVA virtuális gép felépítése...44 3.1 ábra Betöltheto program készítése...52 3.2 ábra A Windows 95 néhány ablaka...58 3.3 ábra Üzenetvezérlési ciklus...59 3.4 ábra A Norton Commander...62 4.1 ábra Felhasználói folyamatok kiszolgálása...69 4.2 ábra Mintapéldák fájlnevekre...71 4.3 ábra Példák helyettesíto karakterek használatára...72 4.4 ábra Állományok jellemzoi...73 4.5 ábra Fájlok láncolása...74 4.6 ábra Egyszintu katalógus...76 4.7 ábra Kétszintu katalógus...77

4.8 ábra Fa struktúrájú katalógus...78 4.9 ábra Példák fájlnevekre...79 4.10 ábra Szabad helyek nyilvántartása...82 4.11 ábra Állományok folytonos elhelyezése...83 4.12 ábra Láncolt elhelyezés...84 4.13 ábra Indexelt elhelyezés...86 5.1 ábra Háttértár típusok...91 5.2 ábra Mágnesszalagok jellemzoi...92 5.3 ábra Mágnesszalagok felépítése...93 5.4 ábra A winchester felépítése...94 5.5 ábra A lemezoldalak felosztása...95 5.6 ábra Winchesterek jellemzoi...96 5.7 ábra Optikai lemezek jellemzoi...97 5.8 ábra Optikai lemezek olvasása...98 5.9 ábra Háttértárolók összehasonlítása...99 5.10 ábra Az átvitelhez szükséges adatok...100 5.11 ábra A lemezegység számára szükséges adatok...100 5.12 ábra A lemez eszközmeghajtó muködése...101 5.13 ábra Lemezütemezo algoritmusok...104 5.14 ábra Példa a blokkok számozására...105 5.15 ábra Körkörös átmeneti tárolók...106 5.16 ábra Adatok tárolása lemezen...108 5.17 ábra A foglaltsági tábla mérete...109 5.18 ábra Példa a Huffmann-kódolásra...111 5.19 ábra Tömörítési eljárások...111 5.20 ábra Az adattárolás biztonságának növelése...114 6.1 ábra Eroforrás foglalási gráf...119 6.2 ábra Holtponti eroforrás foglalási gráf...120 6.3 ábra Kínai bölcsek...122 6.4 ábra Holtpont kialakulásának feltételei...124 6.5 ábra Rangsor szerinti foglalás...127 6.6 ábra Biztonságos és Nem biztonságos állapotok...130 6.7 ábra Termelo és fogyasztó folyamatok...140 6.8 ábra Szemafor...142 6.9 ábra P és V primitívek használata...144 6.10 ábra Torlódásvezérlo nembináris szemaforok...146

6.11 ábra P és V primitívek használata nembináris szemaforokkal...147 7.1 ábra Folyamatok születése...152 7.2 ábra A folyamatok listájának felépítése...153 7.3 ábra Várakozási sor módosítása...153 7.4 ábra Folyamatok állapotai I...154 7.5 ábra Folyamatok állapotai II...155 7.6 ábra Felfüggesztett állapotok...157 7.7 ábra Ütemezési szintek...158 7.8 ábra Ütemezési statisztikák...159 8.1 ábra Áthelyezheto címzés...170 8.2 ábra Átlapoló (overlay) technika...171 8.3 ábra Tárcsere...172 8.4 ábra Partícionált rendszer...173 8.5 ábra Rugalmas partíciók és tömörítés...175 8.6 ábra A laptábla használata...176 8.7 ábra Fizikai cím számítása...178 8.8 ábra Memóriabovítés laptábla segítségével...180 8.9 ábra Lapszervezésu virtuális tár...183 8.10 ábra A virtuális tárkezelés algoritmusa...185 8.11 ábra Keretek számának meghatározása...187 8.12 ábra Laphibák száma az OPT stratégia esetén...189 8.13 ábra Laphibák a FIFO stratégia esetén...190 8.14 ábra Laphibák LRU stratégia esetén...192 8.15 ábra Laphibák SC stratégia esetén...193 8.16 ábra Asszociatív (tartalom címezheto) memória...196 8.17 ábra A TLB muködése...199 8.18 ábra Címszámítás szegmentáláskor...201 8.19 ábra A szegmensleíró tábla egy sorának felépítése...205 8.20 ábra A szegmentálás és a virtuális tárkezelés együttes alkalmazása...208 8.21 ábra A cache memória helye...209 8.22 ábra Minél nagyobb, annál lassabb...211 9.1 ábra Precedenciagráf...217 9.2 ábra A fork utasítás...218 9.3 ábra A join utasítás...219 9.4 ábra A fork-join utasításpár használata...220 9.5 ábra A parbegin-parend utasítások használata...223

9.6 ábra A parbegin-parend utasítás használata - gyakorlás...224 9.7 ábra A parbegin-parend utasításokkal leírhatatlan precedenciagráf...225 9.8 ábra Szemaforok használata precedenciagráf parbegin - parend utasításokkal való leírásához...227 9.9 ábra Parbegin-parend program szemaforokkal...227

Bevezetés 1. Eloszó 1.1 Eloszó a második kiadáshoz Az operációs rendszerek fejlodése, mint megannyi más informatikai területé, továbbra is nagy ütemben folytatódik. Az elozo kiadás óta eltelt egy évben csaknem minden vezeto szoftvercég generációváltást hajtott végre, megjelent a NetWare 5, vége felé közeledik a Windows NT 5.0 tesztje, példátlan terjedésnek indult a Linux. A változások többnyire az elosztott rendszerek irányába mutatnak, így könyvünket is e szellemben igyekeztünk átformálni. Alapveto változás, hogy szakítottunk az operációs rendszerek tárgyalásának hagyományos sorrendjével, és a felhasználók számára közvetlenül tapasztalható kezeloi felület és állománykezelés témaköreinek tárgyalása után mélyedünk el fokozatosan az operációs rendszerek magjában zajló folyamatokban. A korszeru, többszálú operációs rendszerek megértéséhez nélkülözhetetlen témakörökkel, a párhuzamos programozás, valamint a közösen használt eroforrások tárgyalásával is kiegészült a könyv. Az elméleti részekben tanultakat a függelék esettanulmányai segítenek elhelyezni a valóságos környezetben. A bemutatott valóságos operációs rendszerek száma reményeink szerint az aktuális igényeknek megfeleloen a jövoben tovább bovül. A könyvben megnöveltük a példák és a kérdések számát annak érdekében, hogy az önálló tanulást jobban támogassuk, a nehezebben értheto részeket több oldalról próbáltuk megvilágítani. A fontos, illetve hosszabb tanulmányozást igénylo bekezdéseket a lap szélén figyelemfelhívó jelekkel láttuk el. Dr. Adamis Gusztáv adamis@bme-tel.ttt.bme.hu Knapp Gábor knapp@gdf-ri.hu 1

Operációs rendszerek 1.2 Eloszó az elso kiadáshoz Azt szokták mondani, hogy nem is igazi tudomány az, amely nem úgy kezdodik, hogy már az ókori görögök is megmondták... Be kell vallani, hogy az operációs rendszerekrol az ókori görögök nem mondtak semmit. Azonban éppen az a gondolkodásmód, amelyet az antik tudósok hagytak ránk, tette lehetové a technika hihetetlen fejlodését, az elektromos, majd elektronikus gépek, automaták, majd a számítógépek és az operációs rendszerek megjelenését. A gondolkodásmód lényege, hogy függetlenül attól, hogy egy természeti jelenség megértésére vágyunk (analízis), vagy egy probléma megoldását lehetové tévo szerkezetet szeretnénk készíteni (szintézis), a folyamatot részekre kell bontani, a részeket további részekre, egészen addig, amíg olyan alapegységhez nem jutunk, ami már könnyedén leírható vagy elkészítheto, és az egészet azután ezekbol az egyszeru részekbol rakhatjuk össze. Az európai történelem során ez a szemlélet rendkívül eredményesnek bizonyult, de felszínre került a legnagyobb hátrány is: ha túlságosan elotérbe kerülnek a részletek, néha feledésbe merül az egész. Az operációs rendszerek tárgyalása során alapvetoen a részekre bontó, analizáló módszert fogjuk alkalmazni, de megpróbáljuk ezt úgy tenni, hogy ne vesszen el az egész, vagy ha háttérbe is szorulna egy kis idore, végül a kis részek újra egyetlen egységgé álljanak össze. A könyv elso részének feladata a szükséges eloismeretek összefoglalása, a fogalmak történeti megalapozása. A második és harmadik rész az operációs rendszerek legfontosabb funkcióit ismerteti, míg az utolsó, negyedik fejezet a legutóbbi idokben az érdeklodés középpontjába került feladatokat, a párhuzamos feldolgozás, és az elosztott rendszerek egyes kérdéseit elemzi. Minden fejezetet összefoglaló kérdések és feladatok zárnak, melyek segítségével mindenki ellenorizheti, hogy kelloképpen elsajátította-e azokat az ismereteket, melyekre a további részek építenek. Az apró részletek kimeríto tárgyalása nem célunk, az operációs rendszerek készítése manapság a nagy szoftver óriások kiváltsága. Egyes vélemények szerint egy operációs rendszer akkor jó, ha muködése észrevehetetlen, kezelése magától értetodo. Ez így is van egészen addig, amíg a számítógép 2

Bevezetés hardver konfigurációja meg nem változik, vagy amíg nem próbáljuk olyan feladatra rávenni, amire nem, vagy csak korlátozottan alkalmas. Mint számítógépes szakembereknek, meg kell válaszolnunk, vagy legalábbis meg kell értenünk az ilyen esetekben felvetodo kérdéseket! 1.3 A könyvben használt jelek Összefoglalás. Az elozo fejezet vagy alfejezet legfontosabb fogalmai, néhány szóban Kérdések. Áttekinto kérdések az ismertetett anyagrészhez. Segítségükkel meggyozodhetünk, hogy nem siklottunk-e el egy-egy rész felett. Kiegészítés. A jel mellett található rész nem tartozik szorosan az anyaghoz, de segít annak jobb feldolgozásában. Tanulmányozandó. Az így jelölt bekezdéseket nem elég csak egyszer elolvasni, megértésükhöz alaposabb tanulmányozásra van szükség Definíció. A meghatározásokat, törvényszeruségeket tartalmazó bekezdéseket jelöltük így. Fogalom magyarázatok. A fontosabb fogalmak magyarázata, körülírása található a felkiáltójellel jelölt bekezdésekben. Súlyponti rész. A megjelölt rész különös figyelmet érdemel.??! 3

Operációs rendszerek 4

Bevezetés 2. Bevezetés A bevezeto fejezet átismétli a korábban tanultakból a számítógépek felépítésének, muködésének azon kérdéseit, melyek a továbblépés szempontjából fontosak lehetnek. Az operációs rendszerek funkcionális egységeit, illetve azok feladatát kialakulásuk folyamatában tárgyaljuk, majd megismerkedünk azokkal a tendenciákkal, melyek az új operációs rendszerek fejlesztoit jelenleg foglalkoztatják. A fejezet végére az olvasó az operációs rendszerek tárgyalásához szükséges fogalmak megfelelo mélységu meghatározásának birtokába jut. Az operációs rendszerekrol elozo tanulmányaink alapján annyit azért már sejthetünk, hogy valami vezérlo program félék, amelyek könnyebbé teszik a felhasználó életét azáltal, hogy a hardver vezérlésének feladatát átveszik tole, tehát a meztelen hardver és a felhasználók között helyezkednek el. Az operációs rendszerek fogalmának pontos meghatározása elég nehéz feladat. Nem is biztos, hogy érdemes EGY nyakatekert definíciót adni, mivel alapvetoen más oldalról közelíti meg a feladatokat a hardver gyártó, a rendszerprogramozó (azaz az operációs rendszer készítoje), a programozó és maga a felhasználó. Ebben a fejezetben eloször összefoglaljuk a számítógépek muködésének legfontosabb elemeit, majd megismerkedünk az operációs rendszerek kialakulásának történetével, azokkal az indokokkal, melyek egy-egy változást eloidéztek. A funkciók ismeretében a fejezet végén visszatérünk az alapfogalmak pontosabb, legalábbis a továbblépéshez elegendo mélységu definiálásra. 5

Operációs rendszerek 2.1 A számítógépek felépítése 2.1.1 Hardver megközelítés? A számítógépek nagyon sokat változtak az elmúlt négy évtizedben, azonban ez a változás kapacitásukat, sebességüket érintette elsosorban, muködési elvükben követték a Neumann János által 1945-ben kidolgozott szabályokat. Ezek közül a legfontosabbak a következok: 1. Tárolt program: Az utasításokat az adatokkal azonos módon, közös nagy kapacitású memóriában, numerikus kódok formájában kell tárolni. 2. Kettes számrendszer: Az adatok- és program kódok ábrázolására a kettes számrendszert kell alkalmazni. 3. Vezérloegység: Szükség van egy olyan vezérloegységre, amely különbséget tud tenni utasítás és adat között, majd önmuködoen végrehajtatja az utasításokat. 4. Aritmetikai-logikai egység (ALU): A számítógép tartalmazzon olyan egységet, amely az aritmetikai muveletek mellett képes elvégezni az alapveto logikai muveleteket is. 5. Perifériák: Szükség van olyan ki/bemeneti egységekre, amelyek biztosítják a kapcsolatot az ember és a számítógép között. A fenti elvek alapján megvalósított számítógépek felépítése a következo: VEZÉRLO BUSZ MEMW MEMR IOW IOR IRQ ÓRA?P Memória I/O CÍMBUSZ ADATBUSZ 2.1 ábra Számítógépek blokkvázlata 6

Bevezetés A CPU (Central Processing Unit, központi egység, processzor) tölti be a vezérloegység és az aritmetikai-logikai egység feladatát. Napjainkban legtöbb számítógépben egyetlen mikroprocesszor látja el ezt a funkciót. A CPU értelmezi és hajtja végre az utasításokban kódolt aritmetikai és logikai muveleteket, vezérli az adatforgalmat a memória és a perifériák között. A Memória szavanként címezheto tárolóegység, melynek rekeszei tárolják az utasításokat és az adatokat egyaránt. Az, hogy egy rekesz tartalma adat vagy utasítás, csak értelmezés kérdése, hiszen az ábrázolás módja azonos. A memóriáknak gyorsan olvashatóknak és írhatóknak kell lenniük, hiszen hozzáférési idejük alapvetoen meghatározza az utasítássorozat végrehajtásának sebességét. Az ideális sebesség csak félvezeto memóriák alkalmazásával érheto el, ezek viszont drágák, és kikapcsoláskor tartalmukat elvesztik. A mágneslemezek kapacitása már lényegesen jobb, a tápfeszültség megszunése után is megorzik adataikat, sebességük viszont több nagyságrenddel elmarad a félvezeto tárakétól. A sebesség és a kapacitás közötti optimum keresése és megvalósítása a számítógépek használhatóságának egyik legfontosabb kérdése. A Perifériák alapveto feladata a kapcsolattartás a külvilággal, a felhasználóval. Számtalan típus képzelheto el. A felhasználókkal való közvetlen kapcsolattartásra szolgál a billentyuzet, az egér, a monitor, nyomtató, rajzgép, szkenner stb., a hosszú távú archiválást a mágnesszalagos egységek és optikai lemezek szolgálják. A perifériák közül az operációs rendszerek szempontjából kiemelkedo fontosságúak a mágneslemezes háttértárak, mint az adat- és programtárolás alapveto eszközei. A Busz (vagy másik nevén Sín) biztosítja a funkcionális egységek közötti kapcsolatot. Kissé leegyszerusítve a dolgot, felfogható egy vezetékkötegként, melyen az adatok, címek és vezérlojelek eljuthatnak a címzettjükhöz. A buszon keresztül kommunikáló eszközöknek természetesen közös nyelven kell beszélniük, azaz meghatározott jelszinteket, sebességet, kódolást kell használniuk. A tárolóegységek elnevezései mind a magyar, mind a nemzetközi szakirodalomban meglehetosen nagy változatosságot mutatnak. Könyvünkben, elsosorban a funkciót szem elott tartva a következo elnevezéseket használjuk: Memória: az a tárolóegység, ahol a programozó által közvetlenül címezheto módon (például egy assembly utasítással) az aktuálisan 7

Operációs rendszerek végrehajtott utasítások és azok operandusai találhatók, attól függetlenül, hogy ez a funkció fizikailag hogyan került megvalósításra (lásd késobb: valós memória, virtuális memória). Használatos elnevezések még: main storage, memory, operatív tár, fotár, központi tár. Háttértár: az a mágneses vagy optikai elven muködo tárolóegység, mely a programok, adatok hosszabb távú megorzésére szolgál. Az utasítások és adatok tehát a memóriában találhatók, ezeken kell a CPUnak muveleteket végeznie. Egy feladat elvégzésére szolgáló utasítások sorozata a program. Egy program futása során a processzor az utasításszámláló regiszterében található cím alapján a memóriából utasítást hív le (fetch), értelmezi (decode), majd végrehajtja azt (execute), és az utasításszámlálót a következo utasítás címére állítja. A memória és a processzor együttmuködésének folyamatát írja le az úgynevezett Neumann-ciklus. Program betöltése, PC beállítása Utasítás lehívása PC növelése Végrehajtás nem igen Vége? Vége! 2.2 ábra Neumann-ciklus A Neumann-ciklusban a perifériák nem szerepelnek, pedig a végso cél mindig az, hogy a külvilág egy eseményére (például emberi beavatkozás, vagy egy méromuszer, érzékelo jele) szintén a külvilág számára értelmezheto választ adjunk (üzenet kiírása vagy egy motor bekapcsolása). A külvilággal való kapcsolattartás pedig a perifériák feladata. A perifériákkal történo kommunikáció háromféleképpen történhet: 8

Bevezetés 1. Lekérdezéses átvitel (polling): A processzor folyamatosan kérdezi le a periféria állapotát, és ha érdemleges információt talál, beolvassa azt. A módszer legnagyobb hátránya, hogy a processzor folyamatosan foglalt, a periféria átvitel alatt semmi mást nem képes csinálni. 2. Megszakításos átvitel (Interrupt ReQest - IRQ): A periféria a számára kijelölt megszakítás kéro vonalon értesíti a megszakítás vezérlon keresztül a processzort, ha adatátvitelt igényel. A kérés elfogadása esetén a CPU egy idore félreteszi éppen végzett munkáját, kiszolgálja a perifériát, majd folytatja ott, ahol abbahagyta. A processzor ez esetben nincs teljesen kiszolgáltatva a perifériának, viszont a programok közötti átkapcsolás, a visszatéréshez szükséges információk elmentése adminisztrációt, szervezést igényel, idot vesz el. 3. Közvetlen memória átvitel (Direct Memory Access - DMA): DMA esetén a memória és a periféria közötti átvitel a processzortól függetlenül, önálló vezérlo segítségével történik. A processzor egy pillanatig sem foglalt (ez nem mondható el azonban a buszról), mindössze az átvitel megkezdése elott a kezdo memóriacímet, és az átadandó blokk méretét kell közölnie az autonóm vezérlovel. De hol helyezkedik el az operációs rendszer? Jelenlegi meghatározásunk szerint az operációs rendszer egy program, amely a hardver kezelését hivatott megkönnyíteni. Ha program, akkor a helye a memóriában van. Az operációs rendszereknek hardverkezelo funkciójukból következoen azonban vannak erosen hardver-specifikus funkciói is, amelyeket a muködési sebesség javítása érdekében célszeru hardver eszközökkel megvalósítani. Az operációs rendszerek támogatására egyes feladatokat a processzor (pl. speciális regiszterek, címzési módok, mikroprogram tár) illetve a perifériák (pl. IDE Integrated Device Electronics - vezérlo) egyes áramkörei láthatnak el. 9

Operációs rendszerek? P Mikrokód, regiszter támogatás Memória Operációs rendszer SÚLYPONTJA I/O Eszköz vezérlo áramkörök CÍMBUSZ ADATBUSZ 2.3 ábra Számítógép blokkvázlat, operációs rendszerrel 2.1.2 Funkcionális megközelítés A számítógépek felépítésének, az operációs rendszer elhelyezésének egy másik megközelítésében azt vizsgáljuk, hogy mi szükséges ahhoz, hogy egy alkalmazás, például egy táblázatkezelo program futhasson. A legeloször is szükséges egy csomó logikai áramkör, amelyekbol felépíthetok a processzorok alapegységei, az ALU, a vezérloegység és a regiszterek, valamint a mikroprogram tár. A mikroprogram tár tartalma, azaz a gépi kódú utasítások végrehajtását vezérlo program alkotja a következo szintet. Az alsó két réteget valósítja meg a mikroprocesszor. A mikroprocesszorhoz memóriát és perifériákat illesztve építheto fel a számítógép, a a lelketlen vas. A negyedik lépcso a hardverhez legközelebb álló szoftver réteg, az operációs rendszer, amely többek között a hardver vezérlésének nehézségeit hivatott elfedni. Az ötödik és hatodik szint a programozók birodalma, a gépi kódú (assembly), valamint a magas szintu nyelvek tartománya. A programozási nyelvek segítségével végre elkészülhetnek az alkalmazások, a hetedik szinten. 10

Bevezetés Alkalmazások (Word, Excel) Magas szintu nyelvek (Pascal, C) Alacsony szintu nyelvek (Assembly) Operációs rendszer Hardver (Memória, busz, perifériák) CPU (mikroprogram, regiszterek) Logikai áramkörök (kapuk, összeadó) 2.4 ábra A hétszintu logikai modell A fenti modellben az operációs rendszernek külön szintet adtunk, tehát látszólag teljesen egyértelmuen a helyére került. De így van-e valójában? Gondoljuk csak meg, hogy nem az operációs rendszer dolga-e például az az alkalmazás szintu feladat, hogy a felhasználó által begépelt parancsokat értelmezze? És nem az operációs rendszert támogatják-e a processzor egyes regiszterei vagy speciális üzemmódjai? A késobbiekben még sok szó esik ezekrol a kérdésekrol, azonban ha bizonyítani még nem is tudjuk, de talán érzékelheto, hogy hiábavaló volt az erolködés. Az operációs rendszer nem zárható be egy, a logikai sémában éppen félúton lévo dobozba, csápjai a legalacsonyabbtól a legmagasabb szintig nyúlnak. Alkalmazások (Word, Excel) Magas szintu nyelvek (Pascal, C) Alacsony szintu nyelvek (Assembly) Operációs rendszer Hardver (Memória, busz, perifériák) CPU (mikroprogram, regiszterek) Logikai áramkörök (kapuk, összeadó) 2.5 ábra Az operációs rendszer helye az alkalmazás hierarchiában 11

Operációs rendszerek A funkcionális megközelítés elore vetíti az operációs rendszerek meghatározásának egy további nehézségét. Nem elég, hogy több megközelítési mód létezik, ráadásul bizonyos mértékig önkényesnek is kell lenni az operációs rendszerek határainak definiálásában. 2.2 Az operációs rendszerek fejlodése 2.2.1 A kezdetek Az 1940-es években megjelent elso elektronikus számítógépeknek nem volt operációs rendszerük. Az 1944-ben készített jelfogós Mark I, és az 1946-os elektroncsöves ENIAC már bináris elven muködött, de a mai értelemben tulajdonképpen nem is volt igazi számítógép, programozásához huzalok százait kellett átdugdosni. Az elso tárolt program elvén muködo Neumann-féle számítógép 1949-ben, Angliában készült, és a vezetékek cseréje helyett kapcsolók segítségével bitenként lehetett programozni. Ki készítette az elso számítógépet? A számítógépek kialakulásának folyamata a történelem elotti idokbe, az abakuszhoz nyúlik vissza. A jelentosebb változások azonban csak a XIX. Században kezdodtek Charles Babbage és Lady Lovelace munkássága nyomán. Ezek a nem lebecsülendo eredmények azonban inkább csak elozménynek tekinthetok, az igazi jogelodöt az 1930-as évek végétol megjeleno elektronikus szerkezetek között kell keresnünk. Egészen a 60-as évek végéig a probléma teljesen egyszerunek tunt. Mindenki elfogadta, hogy a számítógépek kifejlesztésében nagy szerepe volt az ABC (Atanasoff-Berry Computer) alkotóinak, John Atanasoff-nak, Clifford Berry-nek, az elso mikrovezérlo készítojének, Konrad Zuse-nek, az ENIAC (Electronic Numerical Integrator And Calculator) készítoinek, John Maurchly-nak és Presper Eckert-nek, valamint a nagy matematikusnak, a magyar származású John von Neumann-nak. A bonyodalmat a pénz okozta - mint oly sok más esetben. Amikor az amerikai hadsereg a 40-es évek közepén elhatározta, hogy ballisztikai számítások gyors és pontos végrehajtására szolgálatába állítja az ENIAC-ot, az üzleti élet is megmozdult. Sperry Rand kapcsolt eloször, és 1951-ben a Mauchly-Eckert párostól megvásárolta a szabadalmi jogokat az ENIAC-ra és az összes olyan muködési elv-re, mely annak felépítésében jelentos szerepet játszott. De mit ér egy szabadalom, ha nem származik belole haszon? A Sperry Rand Corporation tehát ostromolni kezdte az idoközben gyarapodó számítógép gyártókat, hogy fizessenek szerzoi jogdíjat az alapveto elemek, elsosorban az aritmetikai logikai egység és a memória frissíto áramkörök után. Az akció természetesen nem találkozott a versenytársak osztatlan tetszésével, különösen az akkoriban már nagyobb üzleti sikereket elkönyvelo Honeywell találta sérelmesnek a dolgot. 12

Bevezetés Honeywell ügyvédei nagy kutatásba kezdtek, és hamarosan bizonyítékokat szolgáltattak arra, hogy az Iowa Állami Egyetemen dolgozó Atanasoff és Berry már 1939-ben épített muködo prototípust, 1942-ben pedig már általános célú számítógéppel rendelkezett, mely tartalmazta a két kiemelt részegységet is. Tehát legalább 3 évvel megelozték az ENIAC-ot! A kapcsolat az ABC és az ENIAC között még szorosabbnak bizonyult, ugyanis kiderült, hogy Mauchly 1941-ben konzultált Atanasoffal, és néhány megoldás éppen ezután a találkozás után jelent meg az ENIAC projectben. Végül 1973-ban, több évi pereskedés után a bíróság megsemmisítette az ENIAC szabadalmat, és kimondta, hogy Atanasoff mu nkásságának dönto szerepe van az ENIAC elkészítésében is. John Vincent Atanasoff (1903-1995) volt tehát az elektronikus számítógép atyja? Talán helyesebb, ha megmaradunk a kezdeti bizonytalanságnál. A számítógép születésénél a körülmények legalább olyan súllyal estek latba, mint a szellemi kapacitás. Ha Atanasoff és Berry szabadalmaztatják találmányaikat és nem kénytelenek szolgálni a II. világháborúban, ha Zuse nem áll a hitleri Németország szolgálatában és nem vonják el figyelmét a konkrét hadi alkalmazások, ha az amerikai hadsereg és az üzleti élet nem az ENIAC-ra figyel fel, az általános célú, Neumann-elvet követo számítógépek hoskora kissé máshogy alakult volna, de az eredmény, a tárolt programmal muködo elektronikus számítógép mindenképpen megszületik. (J.S. Warford: Computer Science c. könyvének melléklete alapján) A mechanikus programozási módszer nemcsak a felhasználónak volt kellemetlen, a felhasználók kényelmi szempontjai eltörpültek amellett, hogy az óriási és hihetetlenül drága gép (melynek mellesleg a két meghibásodás közötti élettartama órákban volt mérheto) kihasználatlanul állt az ido legnagyobb hányadában. A hatékonyság növelése érdekében ekkor kezdtek alkalmazni kártyaolvasókat a bevitel gyorsítására, és a bináris programozás következtében óhatatlanul eloforduló hibák számát nagyban csökkentették elso szimbolikus nyelvek, az assemblerek. Az 1950-es években a felhasználói kör szélesedni kezdett, azaz a bitvadászok mellett megjelentek a valóságos matematikai problémákat megoldani szándékozó igazi felhasználók. Az elso magas szintu, algoritmusokra optimalizált programozási nyelv, a FORTRAN megjelenésével a számítógép által kezelheto feladatok köre is bovült. A felhasználó a számára biztosított gépidoben szemtol szembe került a komputerrel, azt csinált vele, amit akart, pontosabban amit tudott (open shop). 13