"Podstawy systemów operacyjnych Tom I"

Identyfikator Librowy: 241059

Spis treści

Przedmowa 22

CZĘŚĆ 1 PRZEGLĄD 38

Rozdział 1. Wstęp 40

1.1. Co robią systemy operacyjne? 41

1.2. Organizacja systemu komputerowego 45

1.3. Architektura systemu komputerowego 56

1.4. Działania systemu operacyjnego 64

1.5. Zarządzanie zasobami 72

1.6. Ochrona i bezpieczeństwo 78

1.7. Wirtualizacja 80

1.8. Systemy rozproszone 82

1.9. Struktury danych jądra 84

1.10. Środowiska obliczeniowe 88

1.11. Wolne systemy operacyjne i systemy o otwartym kodzie 97

1.12. Podsumowanie 104

Ćwiczenia 105

Dalsze lektury 109

Bibliografia 110

Rozdział 2. Struktury systemów operacyjnych 112

2.1. Usługi systemu operacyjnego 113

2.2. Interfejs użytkownika z systemem operacyjnym 115

2.3. Wywołania systemowe 120

2.4. Usługi systemowe 135

2.5. Konsolidatory i ładowacze 137

2.6. Dlaczego aplikacje zależą od systemu operacyjnego 140

2.7. Projektowanie i implementowanie systemów operacyjnych 142

2.8. Struktura systemu operacyjnego 145

2.9. Budowanie i rozruch systemu operacyjnego 158

2.10. Usuwanie błędów z systemu operacyjnego 163

2.11. Podsumowanie 168

Ćwiczenia 170

Bibliografia 173

Dalsze lektury 173

CZĘŚĆ 2 ZARZĄDZANIE PROCESAMI 174

Rozdział 3. Procesy 176

3.1. Koncepcja procesu 177

3.2. Planowanie procesów 183

3.3. Działania na procesach 189

3.4. Komunikacja międzyprocesowa (IPC) 198

3.5. IPC w systemach z pamięcią dzieloną 200

3.6. IPC w systemach z przekazywaniem komunikatów 203

3.7. Przykłady systemów IPC 208

3.8. Komunikacja w systemach klient-serwer 223

3.9. Podsumowanie 233

Ćwiczenia 234

Bibliografia 237

Dalsze lektury 237

Rozdział 4. Wątki i współbieżność 238

4.1. Przegląd 239

4.2. Programowanie wielordzeniowe 242

4.3. Modele wielowątkowości 246

4.4. Biblioteki wątków 249

4.5. Wątkowość niejawna 258

4.6. Problemy wątkowości 271

4.7. Przykłady systemów operacyjnych 279

4.8. Podsumowanie 281

Ćwiczenia 283

Bibliografia 285

Dalsze lektury 285

Rozdział 5. Planowanie przydziału CPU (jednostki centralnej) 286

5.1. Pojęcia podstawowe 287

5.2. Kryteria planowania 292

5.3. Algorytmy planowania 294

5.4. Planowanie wątków 308

5.5. Planowanie wieloprocesorowe 311

5.6. Planowanie CPU w czasie rzeczywistym 320

5.7. Przykłady systemów operacyjnych 330

5.8. Ocena algorytmów 341

5.9. Podsumowanie 347

Ćwiczenia 349

Bibliografia 352

Dalsze lektury 352

CZĘŚĆ 3 SYNCHRONIZACJA PROCESÓW 354

Rozdział 6. Narzędzia synchronizacji 356

6.1. Podstawy 356

6.2. Problem sekcji krytycznej 359

6.3. Rozwiązanie Petersona 362

6.4. Sprzętowe środki synchronizacji 365

6.5. Blokady muteksowe 372

6.6. Semafory 374

6.7. Monitory 378

6.8. Żywotność 386

6.9. Ocena 388

6.10. Podsumowanie 390

Ćwiczenia 392

Bibliografia 394

Dalsze lektury 394

Rozdział 7. Przykłady synchronizacji 396

7.1. Klasyczne problemy synchronizacji 397

7.2. Synchronizacja w jądrze 404

7.3. Synchronizacja POSIX-owa 408

7.4. Synchronizacja w Javie 412

7.5. Podejścia alternatywne 420

7.6. Podsumowanie 424

Ćwiczenia 425

Bibliografia 427

Dalsze lektury 427

Rozdział 8. Zakleszczenia 428

8.1. Model systemu 429

8.2. Zakleszczenie w aplikacjach wielowątkowych 431

8.3. Charakterystyka zakleszczenia 434

8.4. Metody postępowania z zakleszczeniami 438

8.5. Zapobieganie zakleszczeniom 440

8.6. Unikanie zakleszczeń 443

8.7. Wykrywanie zakleszczenia 451

8.8. Likwidowanie zakleszczenia 457

8.9. Podsumowanie 458

Ćwiczenia 459

Bibliografia 464

Dalsze lektury 464

CZĘŚĆ 4 ZARZĄDZANIE ZASOBAMI PAMIĘCI 466

Rozdział 9. Pamięć główna (operacyjna) 468

9.1. Podstawy 469

9.2. Przydział ciągły pamięci 477

9.3. Stronicowanie 482

9.4. Struktura tablicy stron 495

9.5. Wymiana 502

9.6. Przykład: 32- i 64-bitowe architektury Intela 505

9.7. Przykład – architektura ARMv8 509

9.8. Podsumowanie 511

Ćwiczenia 513

Bibliografia 516

Dalsze lektury 516

Rozdział 10. Pamięć wirtualna 518

10.1. Podstawy 519

10.2. Stronicowanie na żądanie 522

10.3. Kopiowanie przy zapisie 530

10.4. Zastępowanie stron 532

10.5. Przydział ramek 547

10.6. Szamotanie 555

10.7. Kompresja pamięci 563

10.8. Przydział pamięci dla jądra 564

10.9. Inne rozważania 569

10.10. Przykłady z systemów operacyjnych 577

10.11. Podsumowanie 581

Ćwiczenia 583

Bibliografia 588

Dalsze lektury 588

CZĘŚĆ 5 ZARZĄDZANIE PAMIĘCIĄ MASOWĄ 590

Rozdział 11. Struktura pamięci masowej 592

11.1. Przegląd struktur pamięci masowej 593

11.2. Planowanie dysków twardych (HDD) 603

11.3. Planowanie nieruchomych urządzeń pamięci (NVM) 608

11.4. Wykrywanie i korygowanie błędów 610

11.5. Zarządzanie urządzeniami pamięci masowej 611

11.6. Zarządzanie obszarem wymiany 617

11.7. Podłączanie pamięci masowej 620

11.8. Struktury RAID 625

11.9. Podsumowanie 640

Ćwiczenia 641

Bibliografia 646

Dalsze lektury 646

Rozdział 12. Systemy wejścia-wyjścia 648

12.1. Przegląd 649

12.2. Sprzęt wejścia-wyjścia 649

12.3. Użytkowy interfejs wejścia-wyjścia 663

12.4. Podsystem wejścia-wyjścia w jądrze 672

12.5. Przekształcanie zamówień wejścia-wyjścia na operacje sprzętowe 684

12.6. Strumienie (STREAMS) 687

12.7. Wydajność 689

12.8. Podsumowanie 693

Ćwiczenia 694

Bibliografia 697

Dalsze lektury 697

CZĘŚĆ 6 SYSTEM PLIKÓW 698

Rozdział 13. Interfejs systemu plików 700

13.1. Pojęcie pliku 701

13.2. Metody dostępu 713

13.3. Struktura katalogowa 717

13.4. Ochrona 728

13.5. Pliki odwzorowane w pamięci 734

13.6. Podsumowanie 739

Ćwiczenia 740

Bibliografia 743

Dalsze lektury 743

Rozdział 14. Implementacja systemu plików 744

14.1. Budowa systemu plików 745

14.2. Operacje systemu plików 748

14.3. Implementacja katalogu 752

14.4. Metody przydziału 753

14.5. Zarządzanie wolną przestrzenią 764

14.6. Wydajność i osiągi 768

14.7. Rekonstrukcja 774

14.8. Przykład – system plików WAFL 779

14.9. Podsumowanie 784

Ćwiczenia 785

Bibliografia 787

Dalsze lektury 787

Rozdział 15. Wewnętrzna organizacja systemów plików 788

15.1. Systemy plików 788

15.2. Montowanie systemu plików 790

15.3. Partycje i montowanie 793

15.4. Dzielenie plików 795

15.5. Wirtualne systemy plików 796

15.6. Zdalne systemy plików 798

15.7. Semantyka spójności 803

15.8. NFS 804

15.9. Podsumowanie 812

Ćwiczenia 813

Bibliografia 815

Dalsze lektury 815