Előszó | 11 |
Elméleti alapok | 12 |
Az operációs rendszer fogalma | 12 |
Alapfogalmak | 13 |
A program, a processzus és a thread fogalma | 13 |
A processzor | 14 |
A megszakítások | 14 |
A rendszerhívások | 14 |
Az operációs rendszerek szerkezete | 15 |
Monolitikus | 15 |
Szintekre tagolt | 15 |
Mikrokernel | 15 |
Exokernel | 16 |
A processzusok | 16 |
A processzusok adatai | 16 |
A processzusok környezete | 17 |
A processzusok szerkezete | 17 |
Az ütemezés | 18 |
Bevezetés | 18 |
Ütemezési algoritmusok | 19 |
Memóriakezelés | 22 |
Bevezetés | 22 |
A szegmentálás | 24 |
A lapozás | 24 |
A védelem | 26 |
A virtuális tárkezelés | 26 |
A kommunikáció | 28 |
Bevezetés | 28 |
Állományok | 28 |
Csövek | 29 |
Üzenetek | 29 |
Osztott memória | 30 |
DJGPP | 32 |
Bevezetés | 32 |
Telepítés | 32 |
A GNU C fordító | 34 |
A fordítás menete | 34 |
Parancssori opciók | 37 |
Környezeti változók | 46 |
A GNU assembler | 46 |
Bevezetés | 46 |
Az AT&T assembly formátuma | 47 |
Assembly forráskód előállítása | 49 |
A beépített assembly a C forráskódokban | 51 |
A GNU szerkesztő | 61 |
Bevezetés | 61 |
Parancssori opciók | 61 |
Az Id parancsnyelve | 66 |
Az ar program | 75 |
A make program | 77 |
Bevezetés | 77 |
A változók | 78 |
Függvényhívások | 80 |
A direktívák | 81 |
A függőségi szabályok | 81 |
Automatikus változók | 83 |
Egyéb szabályok | 86 |
A parancssori paraméterek | 87 |
A függőségek automatizálása | 88 |
Összefoglalás | 90 |
NASM | 91 |
bevezetés | 91 |
A NASM és a MASM rövid összehasonlítása | 92 |
Parancssori opciók | 94 |
A NASM nyelvi elemei | 97 |
A NASM forrássorok | 97 |
Egyéb utasítások | 98 |
Az effektív címek | 99 |
A konstansok | 100 |
A kifejezések | 101 |
A SEG és a WRT kulcsszavak | 102 |
A lokális címkék | 102 |
A NASM előfeldolgozó | 103 |
Egysoros makrók | 104 |
Többsoros makrók | 106 |
A feltételes fordírtás | 114 |
Előfordítási ciklusok | 118 |
Forrásállományok beillesztése | 118 |
Adatszerkezetek | 119 |
A NASM direktivái | 121 |
BITS | 122 |
SECTION | 122 |
ABSOLUTE | 122 |
EXTERN és GLOBAL | 123 |
COMMON | 124 |
Kimeneti formátumok | 124 |
A bin formátum | 125 |
Az obj formátum | 126 |
A coff, elf és aout formátumok | 129 |
Az rdf formátum | 130 |
Összefoglalás | 131 |
Az operációs rendszerek betöltése | 132 |
A bootolás | 132 |
Bootolás a DOS alól | 134 |
Bootolás lemezről | 152 |
Boot lemez készítése | 153 |
Boot szektor példa | 154 |
A memória mérete | 160 |
Bootolás hajlékonylemezről | 163 |
A boot szektor lemezre írása | 167 |
Multiboot és a Grub | 172 |
Bevezetés | 172 |
A MultiBoot fejléc | 172 |
A multiboot info formátuma | 174 |
A kernel betöltése utáni állapot | 177 |
MultiBoot struktúrák C nyelven | 178 |
A GRUB | 180 |
A GRUB parancsai | 183 |
A lemezek és a filerendszerek kezelése | 186 |
Egy példa a Multiboot használatára | 189 |
A GRUB menüállomány használata | 197 |
Az OS32 | 199 |
Az OS32 alapjai | 199 |
A kernel készítése | 199 |
A szerkesztés | 201 |
A multiboot fejléc | 203 |
A példa kipróbálása | 206 |
A GDT és az IDT | 206 |
A globális deszkriptorok | 206 |
Megszakítások és kivételek kezelése | 211 |
A PIC és a PIT | 217 |
A képernyőkezelés | 222 |
A képernyőelérés módjai | 222 |
Képernyőkezelés az OS32-ben | 224 |
A kivételkezelők módosítása | 232 |
A példa kipróbálása | 236 |
A billentyűzet kezelése | 237 |
A billentyűzet működése | 237 |
A billentyűzet megszakítás kezelése | 241 |
A makefile alkalmazása | 250 |
A memóriakezelés | 252 |
Bevezetés | 252 |
Definíciók | 255 |
A lapok kezelése | 259 |
A példa kipróbálása | 272 |
A taszkok kezelése | 275 |
Bevezetés | 275 |
Definíciók | 276 |
A taszk-állapotszegmens | 279 |
Környezetváltás a veremben | 283 |
A sejtmp() és a longjmp() | 286 |
A környezetváltás az OS32-ben | 289 |
A taszkok kezelése | 296 |
A felhasználói programok elindítása | 306 |
A példa kipróbálása | 310 |
A rendszerhívások | 312 |
A rendszerhívások beállítása | 312 |
Az OS32 szolgáltatásai | 315 |
A rendszerhívások használata a felhasználó szinten | 326 |
A példa kipróbálása | 331 |
Az ütemezés | 336 |
Az FCFS és az SJF ütemezés | 336 |
A Round-Robin ütemezés | 350 |
Az ütemezők összehasonlítása | 357 |
Prioritásos ütemezés | 358 |
A threadek kezelése | 386 |
A taszkok és threadek elválasztása | 386 |
A taszkok és threadek kezelése | 389 |
A threadek ütemezése | 409 |
A rendszerhívások | 411 |
Egy több threadból álló program | 413 |
A példa kipróbálása | 420 |
Problémák a threadekkel | 422 |
Kommunikáció | 423 |
Üzenetek az OS32-ben | 423 |
A rendszerhívások | 424 |
Az üzenetek átadása | 428 |
Az üzenetek kezelése | 430 |
A threadek megszüntetése | 435 |
A példa kipróbálása | 437 |
A szemaforok | 441 |
A megváltozott fejlécek | 441 |
A szemaforok kezelése | 444 |
A rendszerhívások | 448 |
A példa kipróbálása | 450 |
Osztott memória | 453 |
Az osztott memória az OS32-ben | 453 |
A megváltozott fejlécek | 454 |
A rendszerhívások | 457 |
Az osztott memória kezelése | 460 |
A lapok leképezése | 465 |
A példa kipróbálása | 469 |
Mikrokernel-gondolatok | 475 |