Horváth Gábor: Bepillantás az operációs rendszerek világába

Page 1


Tartalomjegyzék ELŐSZÓ.................................................................................................................................................................11

1. ELMELETI ALAPOK ..................................................................................................................12 1.1. Az operációs rendszer fogalma .....................................................................................................12 1.2. Alapfogalmak ...............................................................................................................................13 1.2.1. A program, a processzus és a thread fogalma .............................................................................13 1.2.2. A processzor ...............................................................................................................................14 1.2.3. A megszakítások ........................................................................................................................14 1.2.4. A rendszerhívások ......................................................................................................................14 1.3. Az operációs rendszerek szerkezete ..............................................................................................15 1.3.1. Monolitikus ................................................................................................................................15 1.3.2. Szintekre tagolt ..........................................................................................................................15 1.3.3. Mikrokernel ...............................................................................................................................15 1.3.4. Exokernel. ..................................................................................................................................16 1.4. A processzusok .............................................................................................................................16 1.4.1. A processzusok adatai ................................................................................................................16 1.4.2. A processzusok környezete ........................................................................................................17 1.4.3. A processzusok szerkezete .........................................................................................................17 1.5. Az ütemezés ..................................................................................................................................18 1.5.1. Bevezetés ...................................................................................................................................18 1.5.2. Ütemezési algoritmusok ............................................................................................................19 1.5.2.1. Az ütemezési osztályok ...........................................................................................................19 1.5.2.2. Előbb jött, előbb fut. ...............................................................................................................20 1.5.2.3. A legrövidebb előnyben ..........................................................................................................20 1.5.2.4. Körbenjárás .............................................................................................................................20 1.5.2.5. Prioritáson alapuló ütemezés ..................................................................................................21 1.5.2.6. Többsoros ütemezés ................................................................................................................21 1.5.2.7. Visszacsatolt több soros ütemezés ...........................................................................................22 1.6. Memóriakezelés............................................................................................................................ 22 1.6.1. Bevezetés ...................................................................................................................................22 1.6.2. A szegmentálás ..........................................................................................................................24 1.6.3. A lapozás ....................................................................................................................................24 1.6.4. A védelem ..................................................................................................................................26 1.6.5. A virtuális tárkezelés ..................................................................................................................26 1.7. A kommunikáció ...........................................................................................................................28 1.7.1. Bevezetés ...................................................................................................................................28 1.7.2. Állományok ...............................................................................................................................28 1.7.3. Csövek .......................................................................................................................................29 1.7.4. Üzenetek ....................................................................................................................................29 1.7.5. Osztott memória ........................................................................................................................30 2. DJGPP.............................................................................................................................................32 2.1. Bevezetés ......................................................................................................................................32 2.2. Telepítés ........................................................................................................................................32 2.3. A GNU C fordító ...........................................................................................................................34 2.3.1. A fordítás menete .......................................................................................................................34 2.3.2. Parancssori opciók .....................................................................................................................37 2.3.2.1. A C nyelvvel kapcsolatos opciók ............................................................................................37 2.3.2.2. Figyelmeztetések ....................................................................................................................38 2.3.2.3. Optimalizálás.......................................................................................................................... 40 2.3.2.4. Az előfordító ...........................................................................................................................41 2.3.2.5. Assembler és linker opciók .....................................................................................................42 2.3.2.6. Keresési útvonalak ..................................................................................................................43 2.3.2.7. A gép függő opciók .................................................................................................................44 2.3.2.8. A kódgenerálás.........................................................................................................................45


2.3.3. Környezeti változók ...................................................................................................................46 2.4. A GNU assembler..........................................................................................................................46 2.4.1. Bevezetés ...................................................................................................................................46 2.4.2. Az AT&T assembly formátuma ..................................................................................................47 2.4.3. Assembly forráskód előállítása ..................................................................................................49 2.4.4. A beépített assembly a C forráskódokban ..................................................................................51 2.4.4.1. Az egyszerű alak .....................................................................................................................51 2.4.4.2. A kiterjesztett alak ...................................................................................................................52 2.5. A GNU szerkesztő ........................................................................................................................61 2.5.1. Bevezetés ...................................................................................................................................61 2.5.2. Parancssori opciók .....................................................................................................................61 2.5.3. Az ld parancsnyelve ...................................................................................................................66 2.5.3.1. Kifejezések .............................................................................................................................67 2.5.3.2. Beépített függvények ..............................................................................................................68 2.5.3.3. Szakaszok definiálása .............................................................................................................68 2.5.3 A. Egyszerű parancsok ................................................................................................................74 2.6. Az ar program ...............................................................................................................................75 2.7. A make program ............................................................................................................................77 2.7.1. Bevezetés....................................................................................................................................77 2.7.2. A változók ..................................................................................................................................78 2.7.3. Függvényhívások .......................................................................................................................80 2.7.4. A direktívák ...............................................................................................................................81 2.7.5. A függőségi szabályok ...............................................................................................................81 2.7.6. Automatikus változók ................................................................................................................83 2.7.7. Egyéb szabályok ........................................................................................................................86 2.7.8. A parancssori paraméterek .........................................................................................................87 2.7.9. A függőségek automatizálása .....................................................................................................88 2.8. Összefoglalás ................................................................................................................................90 3. NASM .............................................................................................................................................91 3.1. Bevezetés ......................................................................................................................................91 3.2. A NASM és a MASM rövid összehasonlítása ...............................................................................92 3.3. Parancssori opciók ........................................................................................................................94 3.4. A NASM nyelvi elemei .................................................................................................................97 3.4.1. A NASM forrássorok .................................................................................................................97 3.4.2. Egyéb utasítások ........................................................................................................................98 3.4.3. Az effektív címek .......................................................................................................................99 3.4.4. A konstans ok ...........................................................................................................................100 3.4.5. A kifejezések ............................................................................................................................101 3.4.6. A SEG és a WRT kulcsszavak ..................................................................................................102 3.4.7. A lokális címkék ......................................................................................................................102 3.5. A NASM előfeldolgozó ..............................................................................................................103 3.5.1. Egysoros makrók .....................................................................................................................104 3.5.2. Többsoros makrók ...................................................................................................................106 3.5.2.1. Többsoros makrók eltérő paraméterekkel .............................................................................107 3.5.2.2. Lokális címkék ......................................................................................................................108 3.5.2.3. Paraméterek összevonása ......................................................................................................108 3.5.2.4. Alapértelmezett paraméter ....................................................................................................109 3.5.2.5. Ismeretlen számú paraméterek ..............................................................................................110 3.5.2.6. Paraméterek összefűzése .......................................................................................................112 3.5.2.7. Feltételes ugrások ..................................................................................................................113 3.5.3. A feltételes fordítás ..................................................................................................................114 3.5.3.1. A %if direktíva ......................................................................................................................114 3.5.3.2. A %ifdef direktíva .................................................................................................................115 3.5.3.3. A %ifidn direktíva .................................................................................................................116 3.5.3.4. A %ifid, %ifnum és %ifstr direktívák ...................................................................................116 3.5 A. Előfordítási ciklusok ...............................................................................................................118


3.5.5. Forrásállományok beillesztése .................................................................................................118 3.6. Adatszerkezetek...........................................................................................................................119 3.7. A NASM direktívái .....................................................................................................................121 3.7.1. BITS ........................................................................................................................................122 3.7.2. SECTION ................................................................................................................................122 3.7.3. ABSOLUTE .............................................................................................................................122 3.7.4. EXTERN és GLOBAL ............................................................................................................123 3.7.5. COMMON................................................................................................................................124 3.8. Kimeneti formátumok..................................................................................................................124 3.8.1. A bin formátum ........................................................................................................................125 3.8.1.1. ORG ......................................................................................................................................125 3.8.1.2. SECTION..............................................................................................................................126 3.8.2. Az obj formátum ......................................................................................................................126 3.8.2.1. SEGMENT............................................................................................................................128 3.8.2.2. GROUP..................................................................................................................................128 3.8.2.3. UPPERCASE ........................................................................................................................129 3.8.2.4. IMPORT és EXPORT............................................................................................................129 3.9. A coff, elf és aout formátumok.....................................................................................................129 3.10. Az rdf formátum .......................................................................................................................130 3.11. Összefoglalás.............................................................................................................................131

4. AZ OPERÁCIÓS RENDSZEREK BETÖLTÉSE .............................................................132 4.1. A bootolás ...................................................................................................................................132 4.2. Bootolás a DOS alól ...................................................................................................................134 4.3. Bootolás lemezről .......................................................................................................................153 4.3.1. Boot lemez készítése.................................................................................................................153 4.3.2. Boot szektor példa ...................................................................................................................154 4.3.3. A memória mérete.....................................................................................................................160 4.3.4. Bootolás hajlékonylemezrol......................................................................................................163 4.3.5. A boot szektor lemezre írása ....................................................................................................167 5. A MULTIBOOT ES A GRUB.......................................................................................................172 5.1. Bevezetés.....................................................................................................................................172 5.2. A MultiBoot fejléc.......................................................................................................................172 5.3. A multiboot info formátuma ........................................................................................................174 5.4. A kernel betöltése utáni állapot....................................................................................................177 5.5. MultiBoot struktúrák C nyelven .................................................................................................178 5.6. A GRUB .....................................................................................................................................183 5.7. A GRUB parancsai ......................................................................................................................183 5.8. A lemezek és a filerendszerek kezelése .......................................................................................186 5.9. Egy példa a Multiboot használatára ............................................................................................189 5.10. A GRUB menü állomány használata .........................................................................................197 6. AZ OS32....................................................................................................................................... 199 6.1. Az OS32 alapjai ..........................................................................................................................199 6.1.1. A kernel készítése ....................................................................................................................199 6.1.2. A szerkesztés ............................................................................................................................201 6.1.3. A multiboot fejléc ....................................................................................................................203 6.104. A példa kipróbálása ..................................................................................................................206 6.2. A GDT és az IDT ........................................................................................................................206 6.2.1. A globális deszkriptorok ..........................................................................................................206 6.2.2. Megszakítások és kivételek kezelése .......................................................................................211 6.2.3. A PIC és a PIT ..........................................................................................................................217 6.3. A képernyőkezelés ......................................................................................................................222 6.3.1. A képernyoelérés módjai ..........................................................................................................222 6.3.2. Képernyőkezelés az OS32-ben ................................................................................................224 6.3.3. A kivételkezelők módosítása ....................................................................................................232


6.3 A. A példa kipróbálása .................................................................................................................236 6.4. A billentyűzet kezelése................................................................................................................237 6.4.1. A billentyűzet működése ..........................................................................................................237 6.4.2. A billentyűzet megszakítás kezelése ........................................................................................241 6.4.3. A makefile alkalmazása ...........................................................................................................250 6.5. A memóriakezelés........................................................................................................................252 6.5.1. Bevezetés .................................................................................................................................252 6.5.2. Definíciók ................................................................................................................................255 6.5.3. A lapok kezelése ......................................................................................................................259 6.5.3.1. A változók .............................................................................................................................259 6.5.3.2. A lapozás előkészítése ...........................................................................................................260 6.5.3.3. A lapok lefoglalása és felszabadítása ....................................................................................263 6.5.3.4. Több lap lefoglalása és felszabadítása ...................................................................................266 6.5.3.5. A lapcímtárak létrehozása és törlése ......................................................................................270 6.5 A. A példa kipróbálása .................................................................................................................272 6.6. A taszkok kezelése ......................................................................................................................275 6.6.1. Bevezetés .................................................................................................................................275 6.6.2. Definíciók ................................................................................................................................276 6.6.3. A taszk-állapotszegmens ..........................................................................................................279 6.6.4. Környezetváltás a veremben ....................................................................................................283 6.6.5. A setjmp() és a longjmp() .........................................................................................................286 6.6.6. A környezetváltás az OS32-ben ...............................................................................................289 6.6.6.1. A 3. szintű taszkok e1indítása ...............................................................................................293 6.6.7. A taszkok kezelése ...................................................................................................................296 6.6.7.1. A taszkok létrehozása ............................................................................................................298 6.6.7.2. A taszkok törlése ...................................................................................................................302 6.6.7.3. A taszkok folytatása ..............................................................................................................304 6.6.8. A felhasználói programok elindítása ........................................................................................306 6.6.9. A példa kipróbálása ..................................................................................................................310 6.7. A rendszerhívások .......................................................................................................................312 6.7.1. A rendszerhívások beállítása ....................................................................................................312 6.7.2. Az OS32 szolgáltatásai.............................................................................................................315 6.7.2.1. Definíciók .............................................................................................................................315 6.7.2.2. A számláló ............................................................................................................................318 6.7.2.3. A taszkok kilépése .................................................................................................................319 6.7.2.4. A taszkok memóriakezelése ..................................................................................................322 6.7.3. A rendszerhívások használata a felhasználó szinten .................................................................326 6.7.3.1. Az assembly nyelvű megvalósítás .........................................................................................326 6.7.3 .2. A C nye1vu megvalósítás .....................................................................................................328 6.7.4. A példa kipróbálása ..................................................................................................................331 6.8. Az ütemezés ................................................................................................................................336 6.8.1. Az FCFS és az SJF ütemezés ...................................................................................................336 6.8.1.1. Az FCFS ütemezés megvalósítása ........................................................................................342 6.8.1.2. Az SJF ütemezés megvalósítása ............................................................................................343 6.8.1.3. A felhasználói szintű paraméterek .........................................................................................344 6.8.1.4. A példa kipróbálása ...............................................................................................................348 6.8.2. A Round- Robin ütemezés .......................................................................................................350 6.8.2.1. A preemptív ütemezés ...........................................................................................................350 6.8.2.2. A Round-Robin ütemezés megvalósítása ..............................................................................351 6.8.2.3. A kilépés ...............................................................................................................................355 6.8.2.4. A példa kipróbálása ...............................................................................................................357 6.8.3. Az ütemezők összehasonlítása .................................................................................................357 6.8.4. Prioritásos ütemezés ................................................................................................................358 6.8.4.1. Új rendszerhívások ...............................................................................................................361 6.8.4.2. A taszkok kezelése ................................................................................................................364 6.8.4.3. A prioritási szintek kezelése ..................................................................................................366 6.8.4.4. Az idle taszk ..........................................................................................................................374


6.8.4.5. A várakozás kezelése ............................................................................................................374 6.8.4.6. A példa kipróbálása ...............................................................................................................377 6.8.4.7. Az öregedés ...........................................................................................................................381 6.9. A threadek kezelése .....................................................................................................................386 6.9.1. A taszkok és threadek elválasztása ...........................................................................................386 6.9.2. A taszkok és threadek kezelése ................................................................................................389 6.9.2.1. A taszkok létrehozása és törlése ............................................................................................392 6.9.2.2. A threadek létrehozása és törlése ...........................................................................................395 6.9.2.3. A threadek közötti váltás .......................................................................................................398 6.9.2.4. A verem létrehozása és törlése ..............................................................................................401 6.9.2.5. A kilépés ...............................................................................................................................406 6.9.3. A threadek ütemezése ...............................................................................................................409 6.9.4. A rendszerhívások ....................................................................................................................411 6.9.5. Egy több threadból álló program ..............................................................................................413 6.9.6. A példa kipróbálása ..................................................................................................................420 6.9.7. Problémák a threadekkel ..........................................................................................................422 6.10. Kommunikáció .........................................................................................................................423 6.10.1. Üzenetek az OS32-ben ...........................................................................................................423 6.10.2. A rendszerhívások ..................................................................................................................424 6.10.3. Az üzenetek átadása ...............................................................................................................428 6.10.4. Az üzenetek kezelése .............................................................................................................430 6.10.5. A threadek megszüntetése ......................................................................................................435 6.10.6. A példa kipróbálása.................................................................................................................437 6.11. A szemaforok ............................................................................................................................441 6.11.1. A megváltozott fejlécek ..........................................................................................................441 6.11.2. A szemaforok kezelése ...........................................................................................................444 6.11.3. A rendszerhívások ..................................................................................................................448 6.11.4. A példa kipróbálása ................................................................................................................450 6.12. Osztott memória .......................................................................................................................453 6.12.1. Az osztott memória az OS32-ben ...........................................................................................453 6.12.2. A megváltozott fejlécek ..........................................................................................................454 6.12.3. A rendszerhívások ..................................................................................................................457 6.12.4. Az osztott memória kezelése ..................................................................................................460 6.12.5. A lapok leképezése .................................................................................................................465 6.12.6. A példa kipróbálása ................................................................................................................469 6.13. Mikrokernel-gondolatok ...........................................................................................................475


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.