Spis treści
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
Opinie
Na razie nie ma opinii o produkcie.