Systemy operacyjne - ebook
Systemy operacyjne - 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!
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
Kategoria: | Systemy operacyjne |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0290-9 |
Rozmiar pliku: | 17 MB |