Szczegóły ebooka

Systemy operacyjne. Wydanie V

Systemy operacyjne. Wydanie V

Andrew S. Tanenbaum, Herbert Bos

Ebook

Większość aplikacji i usług jest zależna od interakcji z systemem operacyjnym, dlatego profesjonaliści IT potrzebują głębokiej, a przede wszystkim aktualnej wiedzy w tej dziedzinie. To właśnie zrozumienie systemów operacyjnych pozwala inżynierowi IT na skuteczne diagnozowanie problemów, optymalizowanie wydajności i tworzenie solidnych rozwiązań, które oprą się próbie czasu i podniosą poziom bezpieczeństwa.

To piąte, gruntownie zaktualizowane wydanie podręcznika, który doceni każdy student informatyki i inżynier oprogramowania. Książka obejmuje szeroki zakres zagadnień, od podstawowych pojęć po zaawansowaną problematykę związaną z najnowszymi trendami w systemach operacyjnych. Wyczerpująco omawia procesy, wątki, zarządzanie pamięcią, systemy plików, operacje wejścia-wyjścia, zakleszczenia, interfejsy użytkownika, multimedia czy kompromisy wydajnościowe. Szczegółowo, jako studia przypadków, zostały tu opisane systemy: Windows 11, Unix, Linux i Android. Jasny i przystępny styl, a także liczne przykłady i ćwiczenia ułatwiają zrozumienie nawet bardzo skomplikowanych zagadnień.

W książce między innymi:

  • podstawowe pojęcia i struktura systemów operacyjnych
  • sprzęt a funkcjonowanie systemu operacyjnego
  • przegląd systemów operacyjnych, w tym internetu rzeczy i systemów wbudowanych
  • systemy: Unix, Linux, Android ― procesy, zarządzanie pamięcią, bezpieczeństwo
  • Windows 11 ― struktura, procesy i wątki, wirtualizacja, zabezpieczenia
  • projektowanie systemów operacyjnych

Mistrz oprogramowania zaczyna od systemu operacyjnego!

Przedmowa

O autorach

1. WPROWADZENIE

  • 1.1. CZYM JEST SYSTEM OPERACYJNY?
    • 1.1.1. System operacyjny jako rozszerzona maszyna
    • 1.1.2. System operacyjny jako menedżer zasobów
  • 1.2. HISTORIA SYSTEMÓW OPERACYJNYCH
    • 1.2.1. Pierwsza generacja (1945 - 1955) - lampy elektronowe
    • 1.2.2. Druga generacja (1955 - 1965) - tranzystory i systemy wsadowe
    • 1.2.3. Trzecia generacja (1965 - 1980) - układy scalone i wieloprogramowość
    • 1.2.4. Czwarta generacja (1980 - czasy współczesne)
    • 1.2.5. Piąta generacja (1990 - czasy współczesne)
  • 1.3. SPRZĘT KOMPUTEROWY - PRZEGLĄD
    • 1.3.1. Procesory
    • 1.3.2. Pamięć
    • 1.3.3. Pamięć nieulotna
    • 1.3.4. Urządzenia wejścia-wyjścia
    • 1.3.5. Magistrale
    • 1.3.6. Uruchamianie komputera
  • 1.4. PRZEGLĄD SYSTEMÓW OPERACYJNYCH
    • 1.4.1. Systemy operacyjne komputerów mainframe
    • 1.4.2. Systemy operacyjne serwerów
    • 1.4.3. Systemy operacyjne komputerów osobistych
    • 1.4.4. Systemy operacyjne smartfonów i komputerów podręcznych
    • 1.4.5. Internet rzeczy i wbudowane systemy operacyjne
    • 1.4.6. Systemy operacyjne czasu rzeczywistego
    • 1.4.7. Systemy operacyjne kart elektronicznych
  • 1.5. POJĘCIA DOTYCZĄCE SYSTEMÓW OPERACYJNYCH
    • 1.5.1. Procesy
    • 1.5.2. Przestrzenie adresowe
    • 1.5.3. Pliki
    • 1.5.4. Wejście-wyjście
    • 1.5.5. Zabezpieczenia
    • 1.5.6. Powłoka
    • 1.5.7. Ontogeneza jest rekapitulacją filogenezy
  • 1.6. WYWOŁANIA SYSTEMOWE
    • 1.6.1. Wywołania systemowe do zarządzania procesami
    • 1.6.2. Wywołania systemowe do zarządzania plikami
    • 1.6.3. Wywołania systemowe do zarządzania katalogami
    • 1.6.4. Różne wywołania systemowe
    • 1.6.5. Interfejs Windows API
  • 1.7. STRUKTURA SYSTEMÓW OPERACYJNYCH
    • 1.7.1. Systemy monolityczne
    • 1.7.2. Systemy warstwowe
    • 1.7.3. Mikrojądra
    • 1.7.4. Model klient-serwer
    • 1.7.5. Maszyny wirtualne
    • 1.7.6. Egzojądra i unijądra
  • 1.8. ŚWIAT WEDŁUG JĘZYKA C
    • 1.8.1. Język C
    • 1.8.2. Pliki nagłówkowe
    • 1.8.3. Duże projekty programistyczne
    • 1.8.4. Model fazy działania
  • 1.9. BADANIA DOTYCZĄCE SYSTEMÓW OPERACYJNYCH
  • 1.10. PLAN POZOSTAŁEJ CZĘŚCI KSIĄŻKI
  • 1.11. JEDNOSTKI MIAR
  • 1.12. PODSUMOWANIE

2. PROCESY I WĄTKI

  • 2.1. PROCESY
    • 2.1.1. Model procesów
    • 2.1.2. Tworzenie procesów
    • 2.1.3. Kończenie działania procesów
    • 2.1.4. Hierarchie procesów
    • 2.1.5. Stany procesów
    • 2.1.6. Implementacja procesów
    • 2.1.7. Modelowanie wieloprogramowości
  • 2.2. WĄTKI
    • 2.2.1. Wykorzystanie wątków
    • 2.2.2. Klasyczny model wątków
    • 2.2.3. Wątki POSIX
    • 2.2.4. Implementacja wątków w przestrzeni użytkownika
    • 2.2.5. Implementacja wątków w jądrze
    • 2.2.6. Implementacje hybrydowe
    • 2.2.7. Przystosowywanie kodu jednowątkowego do obsługi wielu wątków
  • 2.3. SERWERY STEROWANE ZDARZENIAMI
  • 2.4. SYNCHRONIZACJA I KOMUNIKACJA MIĘDZYPROCESOWA
    • 2.4.1. Wyścig
    • 2.4.2. Regiony krytyczne
    • 2.4.3. Wzajemne wykluczanie z wykorzystaniem aktywnego oczekiwania
    • 2.4.4. Wywołania sleep i wakeup
    • 2.4.5. Semafory
    • 2.4.6. Muteksy
    • 2.4.7. Monitory
    • 2.4.8. Przekazywanie komunikatów
    • 2.4.9. Bariery
    • 2.4.10. Inwersja priorytetów
    • 2.4.11. Unikanie blokad: odczyt-kopiowanie-aktualizacja
  • 2.5. SZEREGOWANIE
    • 2.5.1. Wprowadzenie do szeregowania
    • 2.5.2. Szeregowanie w systemach wsadowych
    • 2.5.3. Szeregowanie w systemach interaktywnych
    • 2.5.4. Szeregowanie w systemach czasu rzeczywistego
    • 2.5.5. Oddzielenie strategii od mechanizmu
    • 2.5.6. Szeregowanie wątków
  • 2.6. PRACE BADAWCZE NAD PROCESAMI I WĄTKAMI
  • 2.7. PODSUMOWANIE

3. ZARZĄDZANIE PAMIĘCIĄ

  • 3.1. BRAK ABSTRAKCJI PAMIĘCI
    • 3.1.1. Uruchamianie wielu programów w systemach bez abstrakcji pamięci
  • 3.2. ABSTRAKCJA PAMIĘCI: PRZESTRZENIE ADRESOWE
    • 3.2.1. Pojęcie przestrzeni adresowej
    • 3.2.2. Wymiana pamięci
    • 3.2.3. Zarządzanie wolną pamięcią
  • 3.3. PAMIĘĆ WIRTUALNA
    • 3.3.1. Stronicowanie
    • 3.3.2. Tabele stron
    • 3.3.3. Przyspieszenie stronicowania
    • 3.3.4. Tabele stron dla pamięci o dużej objętości
  • 3.4. ALGORYTMY ZASTĘPOWANIA STRON
    • 3.4.1. Optymalny algorytm zastępowania stron
    • 3.4.2. Algorytm NRU
    • 3.4.3. Algorytm FIFO
    • 3.4.4. Algorytm drugiej szansy
    • 3.4.5. Algorytm zegarowy
    • 3.4.6. Algorytm LRU
    • 3.4.7. Programowa symulacja algorytmu LRU
    • 3.4.8. Algorytm bazujący na zbiorze roboczym
    • 3.4.9. Algorytm WSClock
    • 3.4.10. Podsumowanie algorytmów zastępowania stron
  • 3.5. PROBLEMY PROJEKTOWE SYSTEMÓW STRONICOWANIA
    • 3.5.1. Lokalne i globalne strategie alokacji pamięci
    • 3.5.2. Zarządzanie obciążeniem
    • 3.5.3. Strategia czyszczenia
    • 3.5.4. Rozmiar strony
    • 3.5.5. Osobne przestrzenie instrukcji i danych
    • 3.5.6. Strony współdzielone
    • 3.5.7. Biblioteki współdzielone
    • 3.5.8. Pliki odwzorowane w pamięci
  • 3.6. PROBLEMY IMPLEMENTACJI
    • 3.6.1. Zadania systemu operacyjnego w zakresie stronicowania
    • 3.6.2. Obsługa błędów braku strony
    • 3.6.3. Archiwizowanie instrukcji
    • 3.6.4. Blokowanie stron w pamięci
    • 3.6.5. Magazyn stron
    • 3.6.6. Oddzielenie strategii od mechanizmu
  • 3.7. SEGMENTACJA
    • 3.7.1. Implementacja klasycznej segmentacji
    • 3.7.2. Segmentacja ze stronicowaniem: MULTICS
    • 3.7.3. Segmentacja ze stronicowaniem: Intel x86
  • 3.8. BADANIA DOTYCZĄCE ZARZĄDZANIA PAMIĘCIĄ
  • 3.9. PODSUMOWANIE

4. SYSTEMY PLIKÓW

  • 4.1. PLIKI
    • 4.1.1. Nazwy plików
    • 4.1.2. Struktura plików
    • 4.1.3. Typy plików
    • 4.1.4. Dostęp do plików
    • 4.1.5. Atrybuty plików
    • 4.1.6. Operacje na plikach
    • 4.1.7. Przykładowy program wykorzystujący wywołania obsługi systemu plików
  • 4.2. KATALOGI
    • 4.2.1. Jednopoziomowe systemy katalogów
    • 4.2.2. Hierarchiczne systemy katalogów
    • 4.2.3. Nazwy ścieżek
    • 4.2.4. Operacje na katalogach
  • 4.3. IMPLEMENTACJA SYSTEMU PLIKÓW
    • 4.3.1. Układ systemu plików
    • 4.3.2. Implementacja plików
    • 4.3.3. Implementacja katalogów
    • 4.3.4. Pliki współdzielone
    • 4.3.5. Systemy plików o strukturze dziennika
    • 4.3.6. Księgujące systemy plików
    • 4.3.7. Systemy plików na nośnikach typu flash
    • 4.3.8. Wirtualne systemy plików
  • 4.4. ZARZĄDZANIE SYSTEMEM PLIKÓW I OPTYMALIZACJA
    • 4.4.1. Zarządzanie miejscem na dysku
    • 4.4.2. Kopie zapasowe systemu plików
    • 4.4.3. Spójność systemu plików
    • 4.4.4. Wydajność systemu plików
    • 4.4.5. Defragmentacja dysków
    • 4.4.6. Kompresja i deduplikacja
    • 4.4.7. Bezpieczne usuwanie plików i szyfrowanie dysków
  • 4.5. PRZYKŁADOWY SYSTEM PLIKÓW
    • 4.5.1. System plików MS-DOS
    • 4.5.2. System plików V7 systemu UNIX
  • 4.6. BADANIA DOTYCZĄCE SYSTEMÓW PLIKÓW
  • 4.7. PODSUMOWANIE

5. WEJŚCIE-WYJŚCIE

  • 5.1. WARUNKI, JAKIE POWINIEN SPEŁNIAĆ SPRZĘT WEJŚCIA-WYJŚCIA
    • 5.1.1. Urządzenia wejścia-wyjścia
    • 5.1.2. Kontrolery urządzeń
    • 5.1.3. Urządzenia wejścia-wyjścia odwzorowane w pamięci
    • 5.1.4. Bezpośredni dostęp do pamięci (DMA)
    • 5.1.5. O przerwaniach raz jeszcze
  • 5.2. WARUNKI, JAKIE POWINNO SPEŁNIAĆ OPROGRAMOWANIE WEJŚCIA-WYJŚCIA
    • 5.2.1. Cele oprogramowania wejścia-wyjścia
    • 5.2.2. Programowane wejście-wyjście
    • 5.2.3. Wejście-wyjście sterowane przerwaniami
    • 5.2.4. Wejście-wyjście z wykorzystaniem DMA
  • 5.3. WARSTWY OPROGRAMOWANIA WEJŚCIA-WYJŚCIA
    • 5.3.1. Procedury obsługi przerwań
    • 5.3.2. Sterowniki urządzeń
    • 5.3.3. Oprogramowanie wejścia-wyjścia niezależne od urządzeń
    • 5.3.4. Oprogramowanie wejścia-wyjścia w przestrzeni użytkownika
  • 5.4. PAMIĘĆ MASOWA: DYSKI MAGNETYCZNE I SSD
    • 5.4.1. Dyski magnetyczne
    • 5.4.2. Dyski SSD
    • 5.4.3. RAID
  • 5.5. ZEGARY
    • 5.5.1. Sprzęt obsługi zegara
    • 5.5.2. Oprogramowanie obsługi zegara
    • 5.5.3. Zegary programowe
  • 5.6. INTERFEJSY UŻYTKOWNIKÓW: KLAWIATURA, MYSZ, MONITOR
    • 5.6.1. Oprogramowanie do wprowadzania danych
    • 5.6.2. Oprogramowanie do generowania wyjścia
  • 5.7. CIENKIE KLIENTY
  • 5.8. ZARZĄDZANIE ENERGIĄ
    • 5.8.1. Problemy sprzętowe
    • 5.8.2. Problemy po stronie systemu operacyjnego
    • 5.8.3. Problemy do rozwiązania w programach aplikacyjnych
  • 5.9. BADANIA DOTYCZĄCE WEJŚCIA-WYJŚCIA
  • 5.10. PODSUMOWANIE

6. ZAKLESZCZENIA

  • 6.1. ZASOBY
    • 6.1.1. Zasoby z możliwością wywłaszczania i bez niej
    • 6.1.2. Zdobywanie zasobu
    • 6.1.3. Problem pięciu filozofów
  • 6.2. WPROWADZENIE W TEMATYKĘ ZAKLESZCZEŃ
    • 6.2.1. Warunki powstawania zakleszczeń zasobów
    • 6.2.2. Modelowanie zakleszczeń
  • 6.3. ALGORYTM STRUSIA
  • 6.4. WYKRYWANIE ZAKLESZCZEŃ I ICH USUWANIE
    • 6.4.1. Wykrywanie zakleszczeń z jednym zasobem każdego typu
    • 6.4.2. Wykrywanie zakleszczeń dla przypadku wielu zasobów każdego typu
    • 6.4.3. Usuwanie zakleszczeń
  • 6.5. UNIKANIE ZAKLESZCZEŃ
    • 6.5.1. Trajektorie zasobów
    • 6.5.2. Stany bezpieczne i niebezpieczne
    • 6.5.3. Algorytm bankiera dla pojedynczego zasobu
    • 6.5.4. Algorytm bankiera dla wielu zasobów
  • 6.6. PRZECIWDZIAŁANIE ZAKLESZCZENIOM
    • 6.6.1. Atak na warunek wzajemnego wykluczania
    • 6.6.2. Atak na warunek wstrzymania i oczekiwania
    • 6.6.3. Atak na warunek braku wywłaszczania
    • 6.6.4. Atak na warunek cyklicznego oczekiwania
  • 6.7. INNE PROBLEMY
    • 6.7.1. Blokowanie dwufazowe
    • 6.7.2. Zakleszczenia komunikacyjne
    • 6.7.3. Uwięzienia
    • 6.7.4. Zagłodzenia
  • 6.8. BADANIA NA TEMAT ZAKLESZCZEŃ
  • 6.9. PODSUMOWANIE

7. WIRTUALIZACJA I PRZETWARZANIE W CHMURZE

  • 7.1. HISTORIA
  • 7.2. WYMAGANIA DOTYCZĄCE WIRTUALIZACJI
  • 7.3. HIPERNADZORCY TYPU 1 I TYPU 2
  • 7.4. TECHNIKI SKUTECZNEJ WIRTUALIZACJI
    • 7.4.1. Wirtualizacja systemów bez obsługi wirtualizacji
    • 7.4.2. Koszt wirtualizacji
  • 7.5. CZY HIPERNADZORCY SĄ PRAWIDŁOWYMI MIKROJĄDRAMI?
  • 7.6. WIRTUALIZACJA PAMIĘCI
  • 7.7. WIRTUALIZACJA WEJŚCIA-WYJŚCIA
  • 7.8. MASZYNY WIRTUALNE NA PROCESORACH WIELORDZENIOWYCH
  • 7.9. CHMURY OBLICZENIOWE
    • 7.9.1. Chmury jako usługa
    • 7.9.2. Migracje maszyn wirtualnych
    • 7.9.3. Punkty kontrolne
  • 7.10. WIRTUALIZACJA NA POZIOMIE SYSTEMU OPERACYJNEGO
  • 7.11. STUDIUM PRZYPADKU: VMWARE
    • 7.11.1. Wczesna historia firmy VMware
    • 7.11.2. VMware Workstation
    • 7.11.3. Wyzwania podczas opracowywania warstwy wirtualizacji na platformie x86
    • 7.11.4. VMware Workstation: przegląd informacji o rozwiązaniu
    • 7.11.5. Ewolucja systemu VMware Workstation
    • 7.11.6. ESX Server: hipernadzorca typu 1 firmy VMware
  • 7.12. BADANIA NAD WIRTUALIZACJĄ I CHMURĄ
  • 7.13. PODSUMOWANIE

8. SYSTEMY WIELOPROCESOROWE

  • 8.1. SYSTEMY WIELOPROCESOROWE
    • 8.1.1. Sprzęt wieloprocesorowy
    • 8.1.2. Typy wieloprocesorowych systemów operacyjnych
    • 8.1.3. Synchronizacja w systemach wieloprocesorowych
    • 8.1.4. Szeregowanie w systemach wieloprocesorowych
  • 8.2. WIELOKOMPUTERY
    • 8.2.1. Sprzęt wielokomputerów
    • 8.2.2. Niskopoziomowe oprogramowanie komunikacyjne
    • 8.2.3. Oprogramowanie komunikacyjne poziomu użytkownika
    • 8.2.4. Zdalne wywołania procedur
    • 8.2.5. Rozproszona współdzielona pamięć
    • 8.2.6. Szeregowanie systemów wielokomputerowych
    • 8.2.7. Równoważenie obciążenia
  • 8.3. SYSTEMY ROZPROSZONE
    • 8.3.1. Sprzęt sieciowy
    • 8.3.2. Usługi i protokoły sieciowe
    • 8.3.3. Warstwa middleware bazująca na dokumentach
    • 8.3.4. Warstwa middleware bazująca na systemie plików
    • 8.3.5. Warstwa middleware bazująca na obiektach
    • 8.3.6. Warstwa middleware bazująca na koordynacji
  • 8.4. BADANIA DOTYCZĄCE SYSTEMÓW WIELOPROCESOROWYCH
  • 8.5. PODSUMOWANIE

9. BEZPIECZEŃSTWO

  • 9.1. PODSTAWY BEZPIECZEŃSTWA SYSTEMÓW OPERACYJNYCH
    • 9.1.1. Triada bezpieczeństwa CIA
    • 9.1.2. Zasady bezpieczeństwa
    • 9.1.3. Bezpieczeństwo struktury systemu operacyjnego
    • 9.1.4. Zaufana baza obliczeniowa
    • 9.1.5. Intruzi
    • 9.1.6. Czy możemy budować bezpieczne systemy?
  • 9.2. KONTROLOWANIE DOSTĘPU DO ZASOBÓW
    • 9.2.1. Domeny ochrony
    • 9.2.2. Listy kontroli dostępu
    • 9.2.3. Uprawnienia
  • 9.3. MODELE FORMALNE BEZPIECZNYCH SYSTEMÓW
    • 9.3.1. Bezpieczeństwo wielopoziomowe
    • 9.3.2. Kryptografia
    • 9.3.3. Moduły TPM
  • 9.4. UWIERZYTELNIANIE
    • 9.4.1. Hasła
    • 9.4.2. Uwierzytelnianie z wykorzystaniem obiektu fizycznego
    • 9.4.3. Uwierzytelnianie z wykorzystaniem technik biometrycznych
  • 9.5. WYKORZYSTYWANIE BŁĘDÓW W KODZIE
    • 9.5.1. Ataki z wykorzystaniem przepełnienia bufora
    • 9.5.2. Ataki z wykorzystaniem łańcuchów formatujących
    • 9.5.3. Ataki typu "użyj po zwolnieniu"
    • 9.5.4. Luki typu Type Confusion
    • 9.5.5. Ataki bazujące na odwołaniach do pustego wskaźnika
    • 9.5.6. Ataki z wykorzystaniem przepełnień liczb całkowitych
    • 9.5.7. Ataki polegające na wstrzykiwaniu kodu
    • 9.5.8. Ataki TOCTOU
    • 9.5.9. Luka oparta na podwójnym pobieraniu
  • 9.6. EKSPLOITY SPRZĘTOWE
    • 9.6.1. Kanały ukryte
    • 9.6.2. Kanały boczne
    • 9.6.3. Ataki z wykorzystaniem przejściowego wykonywania
  • 9.7. ATAKI OD WEWNĄTRZ
    • 9.7.1. Bomby logiczne
    • 9.7.2. Tylne drzwi
    • 9.7.3. Podszywanie się pod ekran logowania
  • 9.8. WZMACNIANIE SYSTEMU OPERACYJNEGO
    • 9.8.1. Dokładna randomizacja
    • 9.8.2. Ograniczenia przepływu sterowania
    • 9.8.3. Ograniczenia dostępu
    • 9.8.4. Kontrole integralności kodu i danych
    • 9.8.5. Zdalna atestacja przy użyciu modułu TPM
    • 9.8.6. Hermetyzacja niezaufanego kodu
  • 9.9. BADANIA DOTYCZĄCE BEZPIECZEŃSTWA
  • 9.10. PODSUMOWANIE

10. PIERWSZE STUDIUM PRZYPADKU: UNIX, LINUX I ANDROID

  • 10.1. HISTORIA SYSTEMÓW UNIX I LINUX
    • 10.1.1. UNICS
    • 10.1.2. PDP-11 UNIX
    • 10.1.3. Przenośny UNIX
    • 10.1.4. Berkeley UNIX
    • 10.1.5. Standard UNIX
    • 10.1.6. MINIX
    • 10.1.7. Linux
  • 10.2. PRZEGLĄD SYSTEMU LINUX
    • 10.2.1. Cele Linuksa
    • 10.2.2. Interfejsy systemu Linux
    • 10.2.3. Powłoka
    • 10.2.4. Programy użytkowe systemu Linux
    • 10.2.5. Struktura jądra
  • 10.3. PROCESY W SYSTEMIE LINUX
    • 10.3.1. Podstawowe pojęcia
    • 10.3.2. Wywołania systemowe Linuksa związane z zarządzaniem procesami
    • 10.3.3. Implementacja procesów i wątków w systemie Linux
    • 10.3.4. Szeregowanie w systemie Linux
    • 10.3.5. Synchronizacja w Linuksie
    • 10.3.6. Uruchamianie systemu Linux
  • 10.4. ZARZĄDZANIE PAMIĘCIĄ W SYSTEMIE LINUX
    • 10.4.1. Podstawowe pojęcia
    • 10.4.2. Wywołania systemowe Linuksa odpowiedzialne za zarządzanie pamięcią
    • 10.4.3. Implementacja zarządzania pamięcią w systemie Linux
    • 10.4.4. Stronicowanie w systemie Linux
  • 10.5. OPERACJE WEJŚCIA-WYJŚCIA W SYSTEMIE LINUX
    • 10.5.1. Podstawowe pojęcia
    • 10.5.2. Obsługa sieci
    • 10.5.3. Wywołania systemowe wejścia-wyjścia w systemie Linux
    • 10.5.4. Implementacja wejścia-wyjścia w systemie Linux
    • 10.5.5. Moduły w systemie Linux
  • 10.6. SYSTEM PLIKÓW LINUKSA
    • 10.6.1. Podstawowe pojęcia
    • 10.6.2. Wywołania systemu plików w Linuksie
    • 10.6.3. Implementacja systemu plików Linuksa
    • 10.6.4. NFS - sieciowy system plików
  • 10.7. BEZPIECZEŃSTWO W SYSTEMIE LINUX
    • 10.7.1. Podstawowe pojęcia
    • 10.7.2. Wywołania systemowe Linuksa związane z bezpieczeństwem
    • 10.7.3. Implementacja bezpieczeństwa w systemie Linux
  • 10.8. ANDROID
    • 10.8.1. Android a Google
    • 10.8.2. Historia Androida
    • 10.8.3. Cele projektowe
    • 10.8.4. Architektura Androida
    • 10.8.5. Rozszerzenia Linuksa
    • 10.8.6. ART
    • 10.8.7. Binder IPC
    • 10.8.8. Aplikacje Androida
    • 10.8.9. Zamiary
    • 10.8.10. Model procesów
    • 10.8.11. Bezpieczeństwo i prywatność
    • 10.8.12. Uruchamianie w tle a nauki społeczne
  • 10.9. PODSUMOWANIE

11. DRUGIE STUDIUM PRZYPADKU: WINDOWS 11

  • 11.1. HISTORIA SYSTEMU WINDOWS DO WYDANIA WINDOWS 11
    • 11.1.1. Lata osiemdziesiąte: MS-DOS
    • 11.1.2. Lata dziewięćdziesiąte: Windows na bazie MS-DOS-a
    • 11.1.3. Lata dwutysięczne: Windows na bazie NT
    • 11.1.4. Windows Vista
    • 11.1.5. Windows 8
    • 11.1.6. Windows 10
    • 11.1.7. Windows 11
  • 11.2. PROGRAMOWANIE SYSTEMU WINDOWS
    • 11.2.1. Platforma programowania UWP
    • 11.2.2. Podsystemy Windowsa
    • 11.2.3. Rdzenny interfejs programowania aplikacji (API) systemu NT
    • 11.2.4. Interfejs programowania aplikacji Win32
    • 11.2.5. Rejestr systemu Windows
  • 11.3. STRUKTURA SYSTEMU
    • 11.3.1. Struktura systemu operacyjnego
    • 11.3.2. Uruchamianie systemu Windows
    • 11.3.3. Implementacja menedżera obiektów
    • 11.3.4. Podsystemy, biblioteki DLL i usługi trybu użytkownika
  • 11.4. PROCESY I WĄTKI SYSTEMU WINDOWS
    • 11.4.1. Podstawowe pojęcia
    • 11.4.2. Wywołania API związane z zarządzaniem zadaniami, procesami, wątkami i włóknami
    • 11.4.3. Implementacja procesów i wątków
    • 11.4.4. WoW64 i emulacja
  • 11.5. ZARZĄDZANIE PAMIĘCIĄ
    • 11.5.1. Podstawowe pojęcia
    • 11.5.2. Wywołania systemowe związane z zarządzaniem pamięcią
    • 11.5.3. Implementacja zarządzania pamięcią
    • 11.5.4. Kompresja pamięci
    • 11.5.5. Partycje pamięci
  • 11.6. PAMIĘĆ PODRĘCZNA SYSTEMU WINDOWS
  • 11.7. OPERACJE WEJŚCIA-WYJŚCIA W SYSTEMIE WINDOWS
    • 11.7.1. Podstawowe pojęcia
    • 11.7.2. Wywołania API związane z operacjami wejścia-wyjścia
    • 11.7.3. Implementacja systemu wejścia-wyjścia
  • 11.8. SYSTEM PLIKÓW NT SYSTEMU WINDOWS
    • 11.8.1. Podstawowe pojęcia
    • 11.8.2. Implementacja systemu plików NTFS
  • 11.9. ZARZĄDZANIE ENERGIĄ W SYSTEMIE WINDOWS
  • 11.10. WIRTUALIZACJA W SYSTEMIE WINDOWS
    • 11.10.1. Hyper-V
    • 11.10.2. Kontenery
    • 11.10.3. Bezpieczeństwo oparte na wirtualizacji
  • 11.11. BEZPIECZEŃSTWO W SYSTEMIE WINDOWS
    • 11.11.1. Podstawowe pojęcia
    • 11.11.2. Wywołania API związane z bezpieczeństwem
    • 11.11.3. Implementacja bezpieczeństwa
    • 11.11.4. Czynniki ograniczające zagrożenia bezpieczeństwa
  • 11.12. PODSUMOWANIE

12. PROJEKT SYSTEMU OPERACYJNEGO

  • 12.1. ISTOTA PROBLEMÓW ZWIĄZANYCH Z PROJEKTOWANIEM SYSTEMÓW
    • 12.1.1. Cele
    • 12.1.2. Dlaczego projektowanie systemów operacyjnych jest takie trudne?
  • 12.2. PROJEKT INTERFEJSU
    • 12.2.1. Zalecenia projektowe
    • 12.2.2. Paradygmaty
    • 12.2.3. Interfejs wywołań systemowych
  • 12.3. IMPLEMENTACJA
    • 12.3.1. Struktura systemu
    • 12.3.2. Mechanizm kontra strategia
    • 12.3.3. Ortogonalność
    • 12.3.4. Nazewnictwo
    • 12.3.5. Czas wiązania nazw
    • 12.3.6. Struktury statyczne kontra struktury dynamiczne
    • 12.3.7. Implementacja góra-dół kontra implementacja dół-góra
    • 12.3.8. Komunikacja synchroniczna kontra asynchroniczna
    • 12.3.9. Przydatne techniki
  • 12.4. WYDAJNOŚĆ
    • 12.4.1. Dlaczego systemy operacyjne są powolne?
    • 12.4.2. Co należy optymalizować?
    • 12.4.3. Dylemat przestrzeń-czas
    • 12.4.4. Buforowanie
    • 12.4.5. Wskazówki
    • 12.4.6. Wykorzystywanie efektu lokalności
    • 12.4.7. Optymalizacja z myślą o typowych przypadkach
  • 12.5. ZARZĄDZANIE PROJEKTEM
    • 12.5.1. Mityczny osobomiesiąc
    • 12.5.2. Struktura zespołu
    • 12.5.3. Znaczenie doświadczenia
    • 12.5.4. Nie istnieje jedno cudowne rozwiązanie

13. LISTA PUBLIKACJI I BIBLIOGRAFIA

  • 13.1. SUGEROWANE PUBLIKACJE DODATKOWE
    • 13.1.1. Publikacje wprowadzające
    • 13.1.2. Procesy i wątki
    • 13.1.3. Zarządzanie pamięcią
    • 13.1.4. Systemy plików
    • 13.1.5. Wejście-wyjście
    • 13.1.6. Zakleszczenia
    • 13.1.7. Wirtualizacja i przetwarzanie w chmurze
    • 13.1.8. Systemy wieloprocesorowe
    • 13.1.9. Bezpieczeństwo
    • 13.1.10. Pierwsze studium przypadku: UNIX, Linux i Android
    • 13.1.11. Drugie studium przypadku: Windows
    • 13.1.12. Projekt systemu operacyjnego
  • 13.2. BIBLIOGRAFIA W PORZĄDKU ALFABETYCZNYM

SKOROWIDZ

  • Tytuł: Systemy operacyjne. Wydanie V
  • Autor: Andrew S. Tanenbaum, Herbert Bos
  • Tytuł oryginału: Modern Operating Systems, 5th Edition
  • Tłumaczenie: Radosław Meryk
  • ISBN: 978-83-289-0290-9, 9788328902909
  • Data wydania: 2024-04-09
  • Format: Ebook
  • Identyfikator pozycji: sysop5
  • Wydawca: Helion