Tartalom
Előszó 11
1. Bevezetés 15
1.1. Mi az az operációs rendszer? 17
1.1.1. Az operációs rendszer mint kiterjesztett gép 18
1.1.2. Az operációs rendszer mint erőforrás-kezelő 19
1.2. Az operációs rendszerek története 20
1.2.1. Az első generáció (1945-1955): vákuumcsövek és kapcsolótáblák 20
1.2.2. A második generáció (1955-1965): tranzisztorok és kötegelt rendszerek 21
1.2.3. Harmadik generáció (1965-1980): integrált áramkörök és multiprogramozás 23
1.2.4. A negyedik generáció (1980-tól napjainkig): személyi számítógépek 28
1.2.5. A MINIX 3 története 30
1.3. Az operációs rendszer fogalmai 33
1.3.1. Processzusok 34
1.3.2. Fájlok 36
1.3.3. A parancsértelmező 39
1.4. Rendszerhívások 40
1.4.1. Processzuskezelő rendszerhívások 42
1.4.2. Szignálkezelő rendszerhívások 45
1.4.3. Fájlkezelő rendszerhívások 47
1.4.4. Könyvtárkezelő rendszerhívások 52
1.4.5. A védelem rendszerhívásai 55
1.4.6. Az időkezelés rendszerhívásai 56
1.5. Az operációs rendszer struktúrája 57
1.5.1. Monolitikus rendszerek 57
1.5.2. Rétegelt rendszerek 59
1.5.3. Virtuális gépek 61
1.5.4. Exokernelek 63
1.5.5. A kliens-szerver modell 64
1.6. Könyvünk további részeinek felépítése 65
1.7. Összefoglalás 66 Feladatok 66
6 TARTALOM
2. Processzusok 69
2.1. Bevezetés 69
2.1.1. A processzusmodell 69
2.1.2. Processzusok létrehozása 71
2.1.3. Processzusok befejezése 73
2.1.4. Processzushierarchiák 74
2.1.5. Processzusállapotok 75
2.1.6. Processzusok megvalósítása 77
2.1.7. Szálak 79
2.2. Processzusok kommunikációja 83
2.2.1. Versenyhelyzetek 83
2.2.2. Kritikus szekciók 84
2.2.3. Kölcsönös kizárás tevékeny várakozással 86
2.2.4. Alvás és ébredés 91
2.2.5. Szemaforok 93
2.2.6. Mutexek 96
2.2.7. Monitorok 96
2.2.8. Üzenetküldés 100
2.3. Klasszikus IPC-problémák 104
2.3.1. Az étkező filozófusok probléma 104
2.3.2. Az olvasók és írók probléma 107
2.4. Ütemezés 109
2.4.1. Bevezetés az ütemezésbe 109
2.4.2. Ütemezés kötegelt rendszerekben 114
2.4.3. Ütemezés interaktív rendszerekben 118
2.4.4. Ütemezés valós idejű rendszerekben 125
2.4.5. Elvek és megvalósítás 126
2.4.6. Szálütemezés 127
2.5. A MINIX 3-proce$szusok áttekintése 128
2.5.1. A MINIX 3 belső szerkezete 129
2.5.2. Processzuskezelés a MINIX 3-ban 132
2.5.3. Processzusok közötti kommunikáció a MINIX 3-ban 136
2.5.4. Processzusok ütemezése a MINIX 3-ban 139
2.6. Processzusok megvalósítása MINIX 3-ban 141
2.6.1. A MINIX 3 forráskódjának szerkezete 141
2.6.2. A MINIX 3 fordítása és futtatása 144
2.6.3. A közös definíciós fájlok 147
2.6.4. A MINIX 3 definíciós állományok 154
2.6.5. Processzusok adatszerkezetei és definíciós állományai 163
2.6.6. A MINIX 3 indítása 173
2.6.7. A rendszer inicializálása 176
2.6.8. Megszakításkezelés a MINIX 3-ban 183
2.6.9. Processzusok közötti kommunikáció a MINIX 3-ban 194
2.6.10. Ütemezés a MINIX 3-ban 198
2.6.11. Hardverfüggő kernelkomponensek 202
2.6.12. Kiegészítő eljárások és a kernelkönyvtár 206
2.7. A MINIX 3-rendszertaszk 209
2.7.1. A rendszertaszk áttekintése 211
2.7.2. A rendszertaszk megvalósítása 214
2.7.3. A rendszerkönyvtár megvalósítása 217
2.8. A MINIX 3-időzítőtaszk 220
2.8.1. Időzítőhardver 220
2.8.2. Időzítőszoftver 222
2.8.3. A MINIX 3-időzítőmeghajtó áttekintése 225
2.8.4. A MINIX 3-id6zítőmeghajtó megvalósítása 230
2.9. Összefoglalás 231
Feladatok 233
3. Bevitel/Kivitel 238
3.1. Az I/O-hardver alapjai 238
3.1.1.1/O-eszközök 239
3.1.2. Eszközvezérlők 240
3.1.3. Memórialeképezésű I/O 242
3.1.4. Megszakítások 243
3.1.5. Közvetlen memóriaelérés (DMA) 244
3.2. Az I/O-szoftver alapelvei 246
3.2.1. Az I/O-szoftver céljai 246
3.2.2. Megszakításkezelők 248
3.2.3. Eszközmeghajtók 248
3.2.4. Eszközfüggetlen I/O-szoftver 250
3.2.5. A felhasználói szintű I/O-szoftver 253
3.3. Holtpontok 255
3.3.1. Erőforrások 256
3.3.2. A holtpont alapelvei 257
3.3.3. A strucc algoritmus 261
3.3.4. Felismerés és helyreállítás 262
3.3.5. A holtpont megelőzése 262
33.6. A holtpont elkerülése 265
3.4. A MINIX 3 I/O áttekintése 270
3.4.1. Megszakításkezelők és I/O-elérés a MINIX 3-ban 270
3.4.2. A MINIX 3 eszközmeghajtói 274
3.4.3. Eszközfüggetlen I/O-szoftver a MINIX 3-ban 278
3.4.4. Felhasználói szintű I/O-szoftver a MINIX 3-ban 278
3.4.5. Holtpontkezelés a MINIX 3-ban 279
3.5. Blokkos eszközök a MINIX 3-ban 280
3.5.1. Blokkos eszközmeghajtók áttekintése a MINIX 3-ban 280
3.5.2. Közös blokkos eszközmeghajtó szoftver 283
3.5.3. A meghajtó könyvtára 287
3.6. RAM-lemezek 289
3.6.1. Hardver és szoftver a RAM-lemeznél 290
3.6.2. A RAM-lemezmeghajtó áttekintése a MINIX 3-ban291
3.6.3. A RAM-lemezmeghajtó megvalósítása a MINIX 3-ban 293
3.7. Lemezek 296
3.7.1. Lemezhardver 297
3.7.2. RAID 299
3.7.3. Lemezszoftver 300
3.7.4. A MINIX 3 merevlemez-meghajtója 306
3.7.5. A merevlemez-meghajtó megvalósítása MINIX 3-ban 310
3.7.6. Hajlékonylemezek kezelése 319
3.8. A terminálok 322
3.8.1. A terminálhardver 323
3.8.2. A terminálszoftver 327
3.8.3. A MINIX 3 terminálmeghajtójának áttekintése 337
3.8.4. Az eszközfüggetlen terminálmeghajtó implementációja 353
3.8.5. A billentyűzetmeghajtó megvalósítása 372
3.8.6. A képernyőmeghajtó megvalósítása 380
3.9. Összefoglalás 389
Feladatok 390
4. Memóriagazdálkodás 395
4.1. Alapvető memóriakezelés 396
4.1.1. Monoprogramozás csere és lapozás nélkül 396
4.1.2. Multiprogramozás rögzített méretű partíciókkal 397
4.1.3. Relokáció és védelem 398
4.2. Csere 400
4.2.1. Memóriakezelés bittérképpel 402
4.2.2. Memóriakezelés láncolt listákkal 403
4.3. Virtuális memória 405
4.3.1. Lapozás 409
4.3.2. Laptáblák 413
4.3.3. TLB - címfordítási gyorsítótár 415
4.3.4. Invertált laptáblák 417
4.4. Lapcserélési algoritmusok 417
4.4.1. Az optimális lapcserélési algoritmus 418
4.4.2. Az NRU lapcserélési algoritmus 419
4.4.3. A FIFO lapcserélési algoritmus 420
4.4.4. A második lehetőség lapcserélési algoritmus 420
4.4.5. Az óra lapcserélési algoritmus 421
4.4.6. Az LRU lapcserélési algoritmus 422
4.4.7. Az LRU szoftveres szimulációja 424
4.5. A lapozásos rendszerek tervezési szempontjai 424
4.5.1. A munkahalmaz modell 426
4.5.2. Lokális vagy globális helyfoglalás 429
4.5.3. Lapméret 430
4.5.4. Virtuális memória interfész 431
4.6. Szegmentálás 434
4.6.1. A tiszta szegmentálás implementációja 435
4.6.2. Szegmentálás lapozással: Intel Pentium 439
4.7. A MINIX 3 processzuskezelője 441
4.7.1. A memória szerkezete 444
4.7.2. Üzenetkezelés 446
4.7.3. A processzuskezelő adatszerkezetei és algoritmusai451
4.7.4. A fork, az exit és a wait rendszerhívás 452
4.7.5. Az exec rendszerhívás 456
4.7.6. A brk rendszerhívás 456
4.7.7. Szignálkezelés 456
4.7.8. Egyéb rendszerhívások 464
4.8. A MINIX 3 processzuskezelőjének implementációja 465
4.8.1. A definíciós fájlok és az adatszerkezetek 465
4.8.2. A főprogram 469
4.8.3. A fork, az exit és a wait implementációja 474
4.8.4. Az exec implementációja 476
4.8.5. A brk implementációja 480
4.8.6. A szignálkezelés implementációja 480
4.8.7. A többi rendszerhívás implementációja 489
4.8.8. A memóriakezelés segédeljárásai 492
4.9. Összefoglalás 483
Feladatok 484
5. Fájlrendszerek 499
5.1. Fájlok 500
5.1.1. Fájlnevek 500
5.1.2. Fájlszerkezet 502
5.1.3. Fájltípusok 503
5.1.4. Fájlelérés 505
5.1.5. Fájlattribútumok 506
5.1.6. Fájlműveletek 507
5.2. Könyvtárak 509
5.2.1. Egyszerű könyvtárszerkezet 509
5.2.2. Hierarchikus könyvtárszerkezet 511
5.2.3. Útvonal megadása 511
5.2.4. Könyvtári műveletek 514
5.3. Fájlrendszerek megvalósítása 515
5.3.1. Fájlrendszerszerkezet 515
5.3.2. Fájlok megvalósítása 517
5.3.3. Könyvtárak megvalósítása 521
5.3.4. Lemezterület-kezelés 527
5.3.5. Fájlrendszerek megbízhatósága 530
5.3.6. Fájlrendszer hatékonysága 537
5.3.7. Naplózott fájlrendszer 542
5.4. Biztonság 543
5.4.1. Biztonsági környezet 544
5.4.2. Általános biztonság elleni támadások 549
5.4.3. Tervezési elvek a biztonság érdekében 550
5.4.4. Felhasználó azonosítása 550
5.5. Védelmi mechanizmusok 555
5.5.1. Védelmi tartományok 555
5.5.2. Hozzáférést vezérlő listák 557
5.5.3. Képességi listák 560
5.5.4. Rejtett csatornák 563
5.6. A MINIX 3 fájlrendszere 566
5.6.1. Üzenetek 567
5.6.2. A fájlrendszer felépítése 568
5.6.3. A bittérképek 572
5.6.4. Az i-csomópontok 574
5.6.5. A blokkgyorsítótár 576
5.6.6. Könyvtárak és elérési utak 578
5.6.7. Az állományleírók 581
5.6.8. Fájlzárolás 583
5.6.9. Adatcsövek és speciális fájlok 583
5.6.10. Egy példa: a read rendszerhívás 585
5.7. A MINIX 3 fájlrendszerének megvalósítása 586
5.7.1. Definíciós állományok és globális adatszerkezetek 587
5.7.2. A táblák kezelése 591
5.7.3.Afőprogram 600
5.7.4. Egyedi fájlokon végzett műveletek 604
5.7.5. Könyvtárak és elérési utak 614
5.7.6. További rendszerhívások 619
5.7.7. Az I/O-eszközcsatoló 621
5.7.8. Egyéb rendszerhívások 626
5.7.9. Fájlrendszer-segédeljárások 628
5.7.10. Egyéb MINIX 3-komponensek 629
5.8. Összefoglalás 630 Feladatok 631
6. További irodalom 635
6.1. Ajánlott irodalom 635
6.1.1. Bevezetés és általános témájú munkák 635
6.1.2. Processzusok 638
6.1.3. Bevitel/kivitel 638
6.1.4. Memóriakezelés 639
6.1.5. Fájlrendszerek 640
6.2. Betűrendes irodalomjegyzék 642
Függelék 649
El. A MINIX 3 telepítése 649
El.l. Előkészület 649
El.2. Rendszerindítás 651
F.1.3. Telepítés a merevlemezre 652
F.1.4. Tesztelés 654
F.1-5. Szimulátor használata 657
F.2. A MINIX 3 forráskódja - CD melléklet 657
F.3. Fájlmutató 659
Tárgymutató 661
Vissza