Systemy operacyjne. Wydanie III - Helion
Tytuł oryginału: Modern Operating Systems (3rd Edition)
Tłumaczenie: Radosław Meryk, Mikołaj Szczepaniak
ISBN: 978-83-246-7115-1
stron: 1288, Format: 164x239, okładka: twarda
Data wydania: 2010-02-01
Księgarnia: Helion
Cena książki: 129,00 zł
Wszystko, co chcesz wiedzieć o systemach operacyjnych!
- Jak działają algorytmy szeregowania?
- Jakie możliwości stoją za wirtualizacją?
- Jak systemy operacyjne zarządzają pamięcią?
Ta książka to aktualne wydanie światowego bestsellera, będącego kompletnym źródłem wiedzy na temat współczesnych systemów operacyjnych. Autor tego podręcznika - Andrew S. Tanenbaum - przez wiele lat projektował trzy systemy operacyjne lub współuczestniczył w ich projektowaniu, dzięki czemu może dzielić się swą ogromną wiedzą i doświadczeniem praktyka. W tej publikacji szczególny nacisk kładzie on na możliwie szczegółową prezentację takich aspektów systemów, jak procesy, wątki, zarządzanie pamięcią, systemy plików, operacje wejścia-wyjścia, zakleszczenia, projektowanie interfejsu, multimedia, dylematy związane z wydajnością czy najnowsze trendy w projektach systemów operacyjnych. Wśród jej współautorów znajdziesz takich specjalistów, jak Ada Gavrilovska-Habl, Michael Jipping oraz David Robert. Dzięki nim książka została wzbogacona między innymi o rozdziały poświęcone Symbianowi i Linuksowi. W pierwszej kolejności zapoznasz się z ich rysem historycznym. W końcu ich dzisiejsze możliwości to zasługa wielu dekad badań i eksperymentów. Dowiesz się także, na czym polega wirtualizacja, jak działają systemy rozproszone oraz jak chronić je przed atakami. W trakcie lektury poznasz dokładnie systemy operacyjne Windows, Linux oraz Symbian. Pozycja ta stanowi niezastąpione kompendium wiedzy na temat systemów operacyjnych, zarówno dla studentów informatyki, jak i wszystkich pasjonatów komputera.
- Rys historyczny systemów operacyjnych
- Sprzęt komputerowy - przegląd komponentów
- Rodzaje systemów operacyjnych
- Struktura systemów operacyjnych
- Obsługa wywołań systemowych
- Zarządzanie procesami i wątkami oraz komunikacja między nimi
- Szeregowanie zadań
- Zarządzanie pamięcią
- Obsługa systemów plików
- Urządzenia wejścia-wyjścia
- Metody zarządzania energią
- Rozwiązywanie problemu zakleszczeń
- Charakterystyka multimedialnych systemów operacyjnych
- Obsługa systemów wieloprocesorowych
- Wirtualizacja
- Bezpieczeństwo danych na poziomie systemu operacyjnego
- Zagrożenia ze strony złośliwego oprogramowania
- System Linux - historia, budowa, działanie
- System Windows Vista - studium przypadku
- System Symbian - przeznaczenie, działanie, obsługa
Kompendium wiedzy o współczesnych systemach operacyjnych!
- linia
Andrew S. Tanenbaum - profesor informatyki, członek organizacji IEEE oraz ACM. Prowadzi zaawansowane badania nad systemami operacyjnymi oraz ich bezpieczeństwem. Autor licznych publikacji poświęconych systemom operacyjnym, w 2007 roku uhonorowany medalem edukacji Jamesa H. Mulligana jr.
Osoby które kupowały "Systemy operacyjne. Wydanie III", wybierały także:
- Windows Media Center. Domowe centrum rozrywki 66,67 zł, (8,00 zł -88%)
- Przywództwo w świecie VUCA. Jak być skutecznym liderem w niepewnym środowisku 58,64 zł, (12,90 zł -78%)
- Mapa Agile & Scrum. Jak si 57,69 zł, (15,00 zł -74%)
- Sztuka podst 53,46 zł, (13,90 zł -74%)
- Lean dla bystrzaków. Wydanie II 49,62 zł, (12,90 zł -74%)
Spis treści
Systemy operacyjne. Wydanie III -- spis treści
PRZEDMOWA (23)
O AUTORZE (27)
1. WPROWADZENIE (29)
- 1.1. CZYM JEST SYSTEM OPERACYJNY? (32)
- 1.1.1. System operacyjny jako rozszerzona maszyna (32)
- 1.1.2. System operacyjny jako menedżer zasobów (34)
- 1.2. HISTORIA SYSTEMÓW OPERACYJNYCH (36)
- 1.2.1. Pierwsza generacja (1945 - 1955) - lampy elektronowe (37)
- 1.2.2. Druga generacja (1955 - 1965) - tranzystory i systemy wsadowe (37)
- 1.2.3. Trzecia generacja (1965 - 1980) - układy scalone i wieloprogramowość (40)
- 1.2.4. Czwarta generacja (1980 - czasy współczesne) - komputery osobiste (45)
- 1.3. SPRZĘT KOMPUTEROWY - PRZEGLĄD (50)
- 1.3.1. Procesory (50)
- 1.3.2. Pamięć (54)
- 1.3.3. Dyski (58)
- 1.3.4. Taśmy (59)
- 1.3.5. Urządzenia wejścia-wyjścia (59)
- 1.3.6. Magistrale (63)
- 1.3.7. Uruchamianie komputera (66)
- 1.4. PRZEGLĄD SYSTEMÓW OPERACYJNYCH (67)
- 1.4.1. Systemy operacyjne komputerów mainframe (67)
- 1.4.2. Systemy operacyjne serwerów (68)
- 1.4.3. Wieloprocesorowe systemy operacyjne (68)
- 1.4.4. Systemy operacyjne komputerów osobistych (68)
- 1.4.5. Systemy operacyjne komputerów podręcznych (69)
- 1.4.6. Wbudowane systemy operacyjne (69)
- 1.4.7. Systemy operacyjne węzłów sensorowych (70)
- 1.4.8. Systemy operacyjne czasu rzeczywistego (70)
- 1.4.9. Systemy operacyjne kart elektronicznych (71)
- 1.5. POJĘCIA DOTYCZĄCE SYSTEMÓW OPERACYJNYCH (72)
- 1.5.1. Procesy (72)
- 1.5.2. Przestrzenie adresowe (74)
- 1.5.3. Pliki (75)
- 1.5.4. Wejście-wyjście (79)
- 1.5.5. Zabezpieczenia (79)
- 1.5.6. Powłoka (80)
- 1.5.7. Ontogeneza jest rekapitulacją filogenezy (81)
- 1.6. WYWOŁANIA SYSTEMOWE (85)
- 1.6.1. Wywołania systemowe do zarządzania procesami (90)
- 1.6.2. Wywołania systemowe do zarządzania plikami (93)
- 1.6.3. Wywołania systemowe do zarządzania katalogami (94)
- 1.6.4. Różne wywołania systemowe (96)
- 1.6.5. Interfejs Win32 API systemu Windows (97)
- 1.7. STRUKTURA SYSTEMÓW OPERACYJNYCH (99)
- 1.7.1. Systemy monolityczne (100)
- 1.7.2. Systemy warstwowe (101)
- 1.7.3. Mikrojądra (102)
- 1.7.4. Model klient-serwer (105)
- 1.7.5. Maszyny wirtualne (106)
- 1.7.6. Egzojądra (110)
- 1.8. ŚWIAT WEDŁUG JĘZYKA C (111)
- 1.8.1. Język C (111)
- 1.8.2. Pliki nagłówkowe (112)
- 1.8.3. Duże projekty programistyczne (113)
- 1.8.4. Model fazy działania (114)
- 1.9. BADANIA DOTYCZĄCE SYSTEMÓW OPERACYJNYCH (115)
- 1.10. PLAN POZOSTAŁEJ CZĘŚCI KSIĄŻKI (117)
- 1.11. JEDNOSTKI MIAR (118)
- 1.12. PODSUMOWANIE (119)
2. PROCESY I WĄTKI (123)
- 2.1. PROCESY (123)
- 2.1.1. Model procesów (124)
- 2.1.2. Tworzenie procesów (126)
- 2.1.3. Kończenie działania procesów (129)
- 2.1.4. Hierarchie procesów (130)
- 2.1.5. Stany procesów (131)
- 2.1.6. Implementacja procesów (133)
- 2.1.7. Modelowanie wieloprogramowości (135)
- 2.2. WĄTKI (137)
- 2.2.1. Wykorzystanie wątków (137)
- 2.2.2. Klasyczny model wątków (143)
- 2.2.3. Wątki POSIX (147)
- 2.2.4. Implementacja wątków w przestrzeni użytkownika (150)
- 2.2.5. Implementacja wątków w jądrze (153)
- 2.2.6. Implementacje hybrydowe (154)
- 2.2.7. Mechanizm aktywacji zarządcy (155)
- 2.2.8. Wątki pop-up (157)
- 2.2.9. Przystosowywanie kodu jednowątkowego do obsługi wielu wątków (158)
- 2.3. KOMUNIKACJA MIĘDZY PROCESAMI (161)
- 2.3.1. Wyścig (162)
- 2.3.2. Regiony krytyczne (163)
- 2.3.3. Wzajemne wykluczanie z wykorzystaniem aktywnego oczekiwania (165)
- 2.3.4. Wywołania sleep i wakeup (171)
- 2.3.5. Semafory (174)
- 2.3.6. Muteksy (177)
- 2.3.7. Monitory (182)
- 2.3.8. Przekazywanie komunikatów (188)
- 2.3.9. Bariery (191)
- 2.4. SZEREGOWANIE (193)
- 2.4.1. Wprowadzenie do szeregowania (193)
- 2.4.2. Szeregowanie w systemach wsadowych (201)
- 2.4.3. Szeregowanie w systemach interaktywnych (203)
- 2.4.4. Szeregowanie w systemach czasu rzeczywistego (210)
- 2.4.5. Oddzielenie strategii od mechanizmu (212)
- 2.4.6. Szeregowanie wątków (212)
- 2.5. KLASYCZNE PROBLEMY KOMUNIKACJI MIĘDZY PROCESAMI (214)
- 2.5.1. Problem pięciu filozofów (214)
- 2.5.2. Problem czytelników i pisarzy (218)
- 2.6. PRACE BADAWCZE NAD PROCESAMI I WĄTKAMI (219)
- 2.7. PODSUMOWANIE (220)
3. ZARZĄDZANIE PAMIĘCIĄ (227)
- 3.1. BRAK ABSTRAKCJI PAMIĘCI (228)
- 3.2. ABSTRAKCJA PAMIĘCI: PRZESTRZENIE ADRESOWE (232)
- 3.2.1. Pojęcie przestrzeni adresowej (232)
- 3.2.2. Wymiana pamięci (235)
- 3.2.3. Zarządzanie wolną pamięcią (237)
- 3.3. PAMIĘĆ WIRTUALNA (241)
- 3.3.1. Stronicowanie (243)
- 3.3.2. Tabele stron (247)
- 3.3.3. Przyspieszenie stronicowania (249)
- 3.3.4. Tabele stron dla pamięci o dużej objętości (253)
- 3.4. ALGORYTMY ZASTĘPOWANIA STRON (257)
- 3.4.1. Optymalny algorytm zastępowania stron (258)
- 3.4.2. Algorytm NRU (258)
- 3.4.3. Algorytm FIFO (260)
- 3.4.4. Algorytm drugiej szansy (260)
- 3.4.5. Algorytm zegarowy (261)
- 3.4.6. Algorytm LRU (262)
- 3.4.7. Programowa symulacja algorytmu LRU (263)
- 3.4.8. Algorytm bazujący na zbiorze roboczym (265)
- 3.4.9. Algorytm WSClock (269)
- 3.4.10. Podsumowanie algorytmów zastępowania stron (271)
- 3.5. PROBLEMY PROJEKTOWE SYSTEMÓW STRONICOWANIA (273)
- 3.5.1. Lokalne i globalne strategie alokacji pamięci (273)
- 3.5.2. Zarządzanie obciążeniem (276)
- 3.5.3. Rozmiar strony (277)
- 3.5.4. Osobne przestrzenie instrukcji i danych (278)
- 3.5.5. Strony współdzielone (279)
- 3.5.6. Biblioteki współdzielone (281)
- 3.5.7. Pliki odwzorowane w pamięci (283)
- 3.5.8. Strategia czyszczenia (284)
- 3.5.9. Interfejs pamięci wirtualnej (284)
- 3.6. PROBLEMY IMPLEMENTACJI (285)
- 3.6.1. Zadania systemu operacyjnego w zakresie stronicowania (286)
- 3.6.2. Obsługa błędów braku strony (287)
- 3.6.3. Wznawianie instrukcji (288)
- 3.6.4. Blokowanie stron w pamięci (289)
- 3.6.5. Magazyn stron (290)
- 3.6.6. Oddzielenie strategii od mechanizmu (292)
- 3.7. SEGMENTACJA (294)
- 3.7.1. Implementacja klasycznej segmentacji (298)
- 3.7.2. Segmentacja ze stronicowaniem: MULTICS (298)
- 3.7.3. Segmentacja ze stronicowaniem: Intel Pentium (302)
- 3.8. BADANIA NAD ZARZĄDZANIEM PAMIĘCIĄ (307)
- 3.9. PODSUMOWANIE (308)
4. SYSTEMY PLIKÓW (317)
- 4.1. PLIKI (319)
- 4.1.1. Nazwy plików (319)
- 4.1.2. Struktura pliku (321)
- 4.1.3. Typy plików (323)
- 4.1.4. Dostęp do plików (325)
- 4.1.5. Atrybuty plików (325)
- 4.1.6. Operacje na plikach (327)
- 4.1.7. Przykładowy program wykorzystujący wywołania obsługi systemu plików (328)
- 4.2. KATALOGI (331)
- 4.2.1. Jednopoziomowe systemy katalogów (331)
- 4.2.2. Hierarchiczne systemy katalogów (332)
- 4.2.3. Nazwy ścieżek (333)
- 4.2.4. Operacje na katalogach (335)
- 4.3. IMPLEMENTACJA SYSTEMU PLIKÓW (337)
- 4.3.1. Układ systemu plików (337)
- 4.3.2. Implementacja plików (338)
- 4.3.3. Implementacja katalogów (344)
- 4.3.4. Pliki współdzielone (347)
- 4.3.5. Systemy plików o strukturze dziennika (349)
- 4.3.6. Księgujące systemy plików (352)
- 4.3.7. Wirtualne systemy plików (354)
- 4.4. ZARZĄDZANIE SYSTEMEM PLIKÓW I OPTYMALIZACJA (357)
- 4.4.1. Zarządzanie miejscem na dysku (357)
- 4.4.2. Kopie zapasowe systemu plików (365)
- 4.4.3. Spójność systemu plików (371)
- 4.4.4. Wydajność systemu plików (375)
- 4.4.5 Defragmentacja dysków (380)
- 4.5. PRZYKŁADOWE SYSTEMY PLIKÓW (381)
- 4.5.1. Systemy plików na płytach CD-ROM (381)
- 4.5.2. System plików MS-DOS (387)
- 4.5.3. System plików V7 systemu UNIX (391)
- 4.6. BADANIA DOTYCZĄCE SYSTEMÓW PLIKÓW (394)
- 4.7. PODSUMOWANIE (394)
5. WEJŚCIE-WYJŚCIE (399)
- 5.1. WARUNKI, JAKIE POWINIEN SPEŁNIAĆ SPRZĘT WEJŚCIA-WYJŚCIA (400)
- 5.1.1. Urządzenia wejścia-wyjścia (400)
- 5.1.2. Kontrolery urządzeń (402)
- 5.1.3. Urządzenia wejścia-wyjścia odwzorowane w pamięci (403)
- 5.1.4. Bezpośredni dostęp do pamięci (DMA) 407
- 5.1.5. O przerwaniach raz jeszcze (410)
- 5.2. WARUNKI, JAKIE POWINNO SPEŁNIAĆ OPROGRAMOWANIE WEJŚCIA-WYJŚCIA (415)
- 5.2.1. Cele oprogramowania wejścia-wyjścia (415)
- 5.2.2. Programowane wejście-wyjście (417)
- 5.2.3. Wejście-wyjście sterowane przerwaniami (419)
- 5.2.4. Wejście-wyjście z wykorzystaniem DMA (420)
- 5.3. WARSTWY OPROGRAMOWANIA WEJŚCIA-WYJŚCIA (420)
- 5.3.1. Procedury obsługi przerwań (421)
- 5.3.2. Sterowniki urządzeń (422)
- 5.3.3. Oprogramowanie wejścia-wyjścia niezależne od urządzeń (426)
- 5.3.4. Oprogramowanie wejścia-wyjścia w przestrzeni użytkownika (432)
- 5.4. DYSKI (435)
- 5.4.1. Sprzęt (435)
- 5.4.2. Formatowanie dysków (452)
- 5.4.3. Algorytmy szeregowania żądań dostępu do dysku (456)
- 5.4.4. Obsługa błędów (459)
- 5.4.5. Stabilna pamięć masowa (462)
- 5.5. ZEGARY (466)
- 5.5.1. Sprzęt obsługi zegara (466)
- 5.5.2. Oprogramowanie obsługi zegara (468)
- 5.5.3. Zegary programowe (471)
- 5.6. INTERFEJSY UŻYTKOWNIKÓW: KLAWIATURA, MYSZ, MONITOR (473)
- 5.6.1. Oprogramowanie do wprowadzania danych (473)
- 5.6.2. Oprogramowanie do generowania wyjścia (479)
- 5.7. CIENKIE KLIENTY (496)
- 5.8. ZARZĄDZANIE ENERGIĄ (499)
- 5.8.1. Problemy sprzętowe (500)
- 5.8.2. Problemy po stronie systemu operacyjnego (501)
- 5.8.3. Problemy do rozwiązania w programach aplikacyjnych (507)
- 5.9. BADANIA DOTYCZĄCE WEJŚCIA-WYJŚCIA (509)
- 5.10. PODSUMOWANIE (510)
6. ZAKLESZCZENIA (517)
- 6.1. ZASOBY (518)
- 6.1.1. Zasoby z możliwością wywłaszczania i bez niej (518)
- 6.1.2. Zdobywanie zasobu (520)
- 6.2. WPROWADZENIE W TEMATYKĘ ZAKLESZCZEŃ (521)
- 6.2.1. Warunki powstawania zakleszczeń zasobów (522)
- 6.2.2. Modelowanie zakleszczeń (523)
- 6.3. ALGORYTM STRUSIA (526)
- 6.4. WYKRYWANIE ZAKLESZCZEŃ I ICH USUWANIE (526)
- 6.4.1. Wykrywanie zakleszczeń z jednym zasobem każdego typu (527)
- 6.4.2. Wykrywanie zakleszczeń dla przypadku wielu zasobów każdego typu (529)
- 6.4.3. Usuwanie zakleszczeń (532)
- 6.5. UNIKANIE ZAKLESZCZEŃ (534)
- 6.5.1. Trajektorie zasobów (534)
- 6.5.2. Stany bezpieczne i niebezpieczne (535)
- 6.5.3. Algorytm bankiera dla pojedynczego zasobu (537)
- 6.5.4. Algorytm bankiera dla wielu zasobów (538)
- 6.6. PRZECIWDZIAŁANIE ZAKLESZCZENIOM (540)
- 6.6.1. Atak na warunek wzajemnego wykluczania (540)
- 6.6.2. Atak na warunek wstrzymania i oczekiwania (541)
- 6.6.3. Atak na warunek braku wywłaszczania (541)
- 6.6.4. Atak na warunek cyklicznego oczekiwania (542)
- 6.7. INNE PROBLEMY (543)
- 6.7.1. Blokowanie dwufazowe (543)
- 6.7.2. Zakleszczenia komunikacyjne (544)
- 6.7.3. Uwięzienia (546)
- 6.7.4. Zagłodzenia (548)
- 6.8. BADANIA NA TEMAT ZAKLESZCZEŃ (548)
- 6.9. PODSUMOWANIE (549)
7. MULTIMEDIALNE SYSTEMY OPERACYJNE (555)
- 7.1. WPROWADZENIE W TEMATYKĘ MULTIMEDIÓW (556)
- 7.2. PLIKI MULTIMEDIALNE (561)
- 7.2.1. Kodowanie wideo (562)
- 7.2.2. Kodowanie audio (565)
- 7.3. KOMPRESJA WIDEO (567)
- 7.3.1. Standard JPEG (568)
- 7.3.2. Standard MPEG (571)
- 7.4. KOMPRESJA AUDIO (574)
- 7.5. SZEREGOWANIE PROCESÓW MULTIMEDIALNYCH (577)
- 7.5.1. Szeregowanie procesów homogenicznych (577)
- 7.5.2. Szeregowanie w czasie rzeczywistym - przypadek ogólny (578)
- 7.5.3. Szeregowanie monotoniczne w częstotliwości (580)
- 7.5.4. Algorytm szeregowania EDF (581)
- 7.6. WZORCE MULTIMEDIALNYCH SYSTEMÓW PLIKÓW (584)
- 7.6.1. Funkcje sterujące VCR (585)
- 7.6.2. Wideo niemal na życzenie (587)
- 7.6.3. Usługa wideo niemal na życzenie z funkcjami magnetowidu (589)
- 7.7. ROZMIESZCZENIE PLIKÓW (591)
- 7.7.1. Umieszczanie pliku na pojedynczym dysku (591)
- 7.7.2. Dwie alternatywne strategie organizacji plików (592)
- 7.7.3. Rozmieszczenie plików w usłudze wideo niemal na życzenie (596)
- 7.7.4. Rozmieszczenie wielu plików na jednym dysku (598)
- 7.7.5. Rozmieszczanie plików na wielu dyskach (600)
- 7.8. BUFOROWANIE (603)
- 7.8.1. Buforowanie bloków (603)
- 7.8.2. Buforowanie plików (605)
- 7.9. SZEREGOWANIE OPERACJI DYSKOWYCH W SYSTEMACH MULTIMEDIALNYCH (606)
- 7.9.1. Statyczne szeregowanie operacji dyskowych (606)
- 7.9.2. Dynamiczne szeregowanie operacji dyskowych (608)
- 7.10. BADANIA NA TEMAT MULTIMEDIÓW (610)
- 7.11. PODSUMOWANIE (610)
8. SYSTEMY WIELOPROCESOROWE (617)
- 8.1. SYSTEMY WIELOPROCESOROWE (620)
- 8.1.1. Sprzęt wieloprocesorowy (620)
- 8.1.2. Typy wieloprocesorowych systemów operacyjnych (630)
- 8.1.3. Synchronizacja w systemach wieloprocesorowych (634)
- 8.1.4. Szeregowanie w systemach wieloprocesorowych (640)
- 8.2. WIELOKOMPUTERY (646)
- 8.2.1. Sprzęt wielokomputerów (647)
- 8.2.2. Niskopoziomowe oprogramowanie komunikacyjne (651)
- 8.2.3. Oprogramowanie komunikacyjne poziomu użytkownika (654)
- 8.2.4. Zdalne wywołania procedur (657)
- 8.2.5. Rozproszona współdzielona pamięć (660)
- 8.2.6. Szeregowanie systemów wielokomputerowych (665)
- 8.2.7. Równoważenie obciążenia (666)
- 8.3. WIRTUALIZACJA (669)
- 8.3.1. Wymagania dla wirtualizacji (671)
- 8.3.2. Hipernadzorcy typu 1 (672)
- 8.3.3. Hipernadzorcy typu 2 (673)
- 8.3.4. Parawirtualizacja (675)
- 8.3.5. Wirtualizacja pamięci (678)
- 8.3.6. Wirtualizacja wejścia-wyjścia (679)
- 8.3.7. Urządzenia wirtualne (681)
- 8.3.8. Maszyny wirtualne na procesorach wielordzeniowych (681)
- 8.3.9. Problemy licencji (682)
- 8.4. SYSTEMY ROZPROSZONE (683)
- 8.4.1. Sprzęt sieciowy (685)
- 8.4.2. Usługi i protokoły sieciowe (689)
- 8.4.3. Warstwa middleware bazująca na dokumentach (693)
- 8.4.4. Warstwa middleware bazująca na systemie plików (694)
- 8.4.5. Warstwa middleware bazująca na obiektach (700)
- 8.4.6. Warstwa middleware bazująca na koordynacji (701)
- 8.4.7. Siatki (707)
- 8.5. BADANIA DOTYCZĄCE SYSTEMÓW WIELOPROCESOROWYCH (708)
- 8.6. PODSUMOWANIE (710)
9. BEZPIECZEŃSTWO (717)
- 9.1. ŚRODOWISKO BEZPIECZEŃSTWA (719)
- 9.1.1. Zagrożenia (720)
- 9.1.2. Intruzi (721)
- 9.1.3. Przypadkowa utrata danych (723)
- 9.2. PODSTAWY KRYPTOGRAFII (723)
- 9.2.1. Kryptografia z kluczem tajnym (725)
- 9.2.2. Kryptografia z kluczem publicznym (726)
- 9.2.3. Funkcje jednokierunkowe (727)
- 9.2.4. Podpisy cyfrowe (727)
- 9.2.5. Moduł TPM (729)
- 9.3. MECHANIZMY OCHRONY (730)
- 9.3.1. Domeny ochrony (730)
- 9.3.2. Listy kontroli dostępu (733)
- 9.3.3. Uprawnienia (736)
- 9.3.4. Systemy zaufane (740)
- 9.3.5. Zaufana baza obliczeniowa (742)
- 9.3.6. Modele formalne bezpiecznych systemów (743)
- 9.3.7. Bezpieczeństwo wielopoziomowe (745)
- 9.3.8. Ukryte kanały (748)
- 9.4. UWIERZYTELNIANIE (753)
- 9.4.1. Uwierzytelnianie z wykorzystaniem haseł (755)
- 9.4.2. Uwierzytelnianie z wykorzystaniem obiektu fizycznego (765)
- 9.4.3. Uwierzytelnianie z wykorzystaniem technik biometrycznych (769)
- 9.5. ATAKI Z WEWNĄTRZ (772)
- 9.5.1. Bomby logiczne (773)
- 9.5.2. Tylne drzwi (773)
- 9.5.3. Podszywanie się pod ekran logowania (774)
- 9.6. WYKORZYSTYWANIE BŁĘDÓW W KODZIE (776)
- 9.6.1. Ataki z wykorzystaniem przepełnienia bufora (777)
- 9.6.2. Ataki z wykorzystaniem łańcuchów formatujących (780)
- 9.6.3. Ataki powrotu do biblioteki libc (782)
- 9.6.4. Ataki z wykorzystaniem przepełnień liczb całkowitych (783)
- 9.6.5. Ataki polegające na wstrzykiwaniu kodu (784)
- 9.6.6. Ataki polegające na rozszerzaniu uprawnień (786)
- 9.7. ZŁOŚLIWE OPROGRAMOWANIE (786)
- 9.7.1. Konie trojańskie (790)
- 9.7.2. Wirusy (793)
- 9.7.3. Robaki (805)
- 9.7.4. Oprogramowanie szpiegujące (808)
- 9.7.5. Rootkity (813)
- 9.8. ŚRODKI OBRONY (819)
- 9.8.1. Firewalle (820)
- 9.8.2. Techniki antywirusowe i antyantywirusowe (822)
- 9.8.3. Podpisywanie kodu (830)
- 9.8.4. Wtrącanie do więzienia (832)
- 9.8.5. Wykrywanie włamań z użyciem modeli (833)
- 9.8.6. Izolowanie kodu mobilnego (835)
- 9.8.7. Bezpieczeństwo Javy (840)
- 9.9. BADANIA DOTYCZĄCE BEZPIECZEŃSTWA (843)
- 9.10. PODSUMOWANIE (844)
10. PIERWSZE STUDIUM PRZYPADKU: LINUX (851)
- 10.1. HISTORIA SYSTEMÓW UNIX I LINUX (852)
- 10.1.1. UNICS (852)
- 10.1.2. PDP-11 UNIX (853)
- 10.1.3. Przenośny UNIX (855)
- 10.1.4. Berkeley UNIX (856)
- 10.1.5 Standard UNIX (857)
- 10.1.6. MINIX (858)
- 10.1.7. Linux (860)
- 10.2. PRZEGLĄD SYSTEMU LINUX (863)
- 10.2.1. Cele Linuksa (863)
- 10.2.2. Interfejsy systemu Linux (865)
- 10.2.3. Powłoka (867)
- 10.2.4. Programy użytkowe systemu Linux (870)
- 10.2.5. Struktura jądra (872)
- 10.3. PROCESY W SYSTEMIE LINUX (876)
- 10.3.1. Podstawowe pojęcia (876)
- 10.3.2. Wywołania systemowe Linuksa związane z zarządzaniem procesami (879)
- 10.3.3. Implementacja procesów i wątków w systemie Linux (884)
- 10.3.4. Szeregowanie w systemie Linux (892)
- 10.3.5. Uruchamianie systemu Linux (896)
- 10.4. ZARZĄDZANIE PAMIĘCIĄ W SYSTEMIE LINUX (899)
- 10.4.1. Podstawowe pojęcia (899)
- 10.4.2. Wywołania systemowe Linuksa odpowiedzialne za zarządzanie pamięcią (903)
- 10.4.3. Implementacja zarządzania pamięcią w systemie Linux (904)
- 10.4.4. Stronicowanie w systemie Linux (911)
- 10.5. OPERACJE WEJŚCIA-WYJŚCIA W SYSTEMIE LINUX (916)
- 10.5.1. Podstawowe pojęcia (916)
- 10.5.2. Obsługa sieci (917)
- 10.5.3. Wywołania systemowe wejścia-wyjścia w systemie Linux (919)
- 10.5.4. Implementacja wejścia-wyjścia w systemie Linux (921)
- 10.5.5. Moduły w systemie Linux (925)
- 10.6. SYSTEM PLIKÓW LINUKSA (925)
- 10.6.1. Podstawowe pojęcia (926)
- 10.6.2. Wywołania systemu plików w Linuksie (931)
- 10.6.3. Implementacja systemu plików Linuksa (936)
- 10.6.4. NFS - sieciowy system plików (945)
- 10.7. BEZPIECZEŃSTWO W SYSTEMIE LINUX (953)
- 10.7.1. Podstawowe pojęcia (953)
- 10.7.2. Wywołania systemowe Linuksa związane z bezpieczeństwem (956)
- 10.7.3. Implementacja bezpieczeństwa w systemie Linux (957)
- 10.8. PODSUMOWANIE (958)
11. DRUGIE STUDIUM PRZYPADKU: WINDOWS VISTA (965)
- 11.1. HISTORIA SYSTEMU WINDOWS VISTA (965)
- 11.1.1. Lata osiemdziesiąte: MS-DOS (966)
- 11.1.2. Lata dziewięćdziesiąte: Windows na bazie MS-DOS-a (967)
- 11.1.3. Lata dwutysięczne: Windows na bazie NT (967)
- 11.1.4. Windows Vista (971)
- 11.2. PROGRAMOWANIE SYSTEMU WINDOWS VISTA (972)
- 11.2.1. Rdzenny interfejs programowania aplikacji (API) systemu NT (975)
- 11.2.2. Interfejs programowania aplikacji Win32 (980)
- 11.2.3. Rejestr systemu Windows (984)
- 11.3. STRUKTURA SYSTEMU (987)
- 11.3.1. Struktura systemu operacyjnego (988)
- 11.3.2. Uruchamianie systemu Windows Vista (1006)
- 11.3.3. Implementacja menedżera obiektów (1007)
- 11.3.4. Podsystemy, biblioteki DLL i usługi trybu użytkownika (1019)
- 11.4. PROCESY I WĄTKI SYSTEMU WINDOWS VISTA (1023)
- 11.4.1. Podstawowe pojęcia (1023)
- 11.4.2. Wywołania API związane z zarządzaniem zadaniami, procesami, wątkami i włóknami (1029)
- 11.4.3. Implementacja procesów i wątków (1036)
- 11.5. ZARZĄDZANIE PAMIĘCIĄ (1045)
- 11.5.1. Podstawowe pojęcia (1045)
- 11.5.2. Wywołania systemowe związane z zarządzaniem pamięcią (1051)
- 11.5.3. Implementacja zarządzania pamięcią (1052)
- 11.6. PAMIĘĆ PODRĘCZNA SYSTEMU WINDOWS VISTA (1063)
- 11.7. OPERACJE WEJŚCIA-WYJŚCIA W SYSTEMIE WINDOWS VISTA (1066)
- 11.7.1. Podstawowe pojęcia (1067)
- 11.7.2. Wywołania API związane z operacjami wejścia-wyjścia (1069)
- 11.7.3. Implementacja systemu wejścia-wyjścia (1072)
- 11.8. SYSTEM PLIKÓW NT SYSTEMU WINDOWS (1079)
- 11.8.1. Podstawowe pojęcia (1079)
- 11.8.2. Implementacja systemu plików NTFS (1081)
- 11.9. BEZPIECZEŃSTWO W SYSTEMIE WINDOWS VISTA (1093)
- 11.9.1. Podstawowe pojęcia (1095)
- 11.9.2. Wywołania API związane z bezpieczeństwem (1097)
- 11.9.3. Implementacja bezpieczeństwa (1098)
- 11.10. PODSUMOWANIE (1102)
12. TRZECIE STUDIUM PRZYPADKU: SYMBIAN OS (1107)
- 12.1. HISTORIA SYSTEMU SYMBIAN OS (1108)
- 12.1.1. Korzenie systemu operacyjnego Symbian OS: Psion i EPOC (1108)
- 12.1.2. Symbian OS 6 (1110)
- 12.1.3. Symbian OS 7 (1111)
- 12.1.4. Współczesna wersja systemu operacyjnego Symbian OS (1111)
- 12.2. PRZEGLĄD SYSTEMU SYMBIAN OS (1111)
- 12.2.1. Obiektowość (1112)
- 12.2.2. Projekt mikrojądra (1113)
- 12.2.3. Nanojądro systemu Symbian OS (1114)
- 12.2.4. Dostęp do zasobów w trybie klient-serwer (1115)
- 12.2.5. Funkcje znane z większych systemów operacyjnych (1116)
- 12.2.6. Komunikacja i multimedia (1117)
- 12.3. PROCESY I WĄTKI W SYSTEMIE SYMBIAN OS (1117)
- 12.3.1. Wątki i nanowątki (1118)
- 12.3.2. Procesy (1119)
- 12.3.3. Obiekty aktywne (1120)
- 12.3.4. Komunikacja międzyprocesowa (1121)
- 12.4. ZARZĄDZANIE PAMIĘCIĄ (1121)
- 12.4.1. Systemy pozbawione pamięci wirtualnej (1122)
- 12.4.2. Adresowanie pamięci w systemie Symbian OS (1124)
- 12.5. WEJŚCIE I WYJŚCIE (1127)
- 12.5.1. Sterowniki urządzeń (1127)
- 12.5.2. Rozszerzenia jądra (1128)
- 12.5.3. Bezpośredni dostęp do pamięci (DMA) 1128
- 12.5.4. Przypadek specjalny: nośniki pamięci (1129)
- 12.5.5. Blokujące operacje wejścia-wyjścia (1129)
- 12.5.6. Nośniki wymienne (1130)
- 12.6. SYSTEMY PRZECHOWYWANIA DANYCH (1130)
- 12.6.1. Systemy plików dla urządzeń mobilnych (1131)
- 12.6.2. Systemy plików systemu operacyjnego Symbian OS (1132)
- 12.6.3. Bezpieczeństwo i ochrona systemu plików (1132)
- 12.7. BEZPIECZEŃSTWO W SYSTEMIE SYMBIAN OS (1133)
- 12.8. KOMUNIKACJA W SYSTEMIE SYMBIAN OS (1136)
- 12.8.1. Podstawowa infrastruktura (1136)
- 12.8.2. Bardziej szczegółowa analiza infrastruktury komunikacji (1137)
- 12.9. PODSUMOWANIE (1141)
13. PROJEKT SYSTEMU OPERACYJNEGO (1143)
- 13.1. ISTOTA PROBLEMÓW ZWIĄZANYCH Z PROJEKTOWANIEM SYSTEMÓW (1144)
- 13.1.1. Cele (1144)
- 13.1.2. Dlaczego projektowanie systemów operacyjnych jest takie trudne? 1146
- 13.2. PROJEKT INTERFEJSU (1148)
- 13.2.1. Zalecenia projektowe (1148)
- 13.2.2. Paradygmaty (1150)
- 13.2.3. Interfejs wywołań systemowych (1155)
- 13.3. IMPLEMENTACJA (1158)
- 13.3.1. Struktura systemu (1158)
- 13.3.2. Mechanizm kontra strategia (1163)
- 13.3.3. Ortogonalność (1164)
- 13.3.4. Nazewnictwo (1165)
- 13.3.5. Czas kojarzenia nazw (1167)
- 13.3.6. Struktury statyczne kontra struktury dynamiczne (1168)
- 13.3.7. Implementacja z góry na dół kontra implementacja z dołu do góry (1170)
- 13.3.8. Przydatne techniki (1171)
- 13.4. WYDAJNOŚĆ (1177)
- 13.4.1. Dlaczego systemy operacyjne są powolne? 1177
- 13.4.2. Co należy optymalizować? 1179
- 13.4.3. Dylemat przestrzeń - czas (1180)
- 13.4.4. Buforowanie (1183)
- 13.4.5. Wskazówki (1185)
- 13.4.6. Wykorzystywanie efektu lokalności (1185)
- 13.4.7. Optymalizacja z myślą o typowych przypadkach (1186)
- 13.5. ZARZĄDZANIE PROJEKTEM (1186)
- 13.5.1. Mityczny osobomiesiąc (1187)
- 13.5.2. Struktura zespołu (1189)
- 13.5.3. Znaczenie doświadczenia (1191)
- 13.5.4. Nie istnieje jedno cudowne rozwiązanie (1192)
- 13.6. TRENDY W ŚWIECIE PROJEKTÓW SYSTEMÓW OPERACYJNYCH (1192)
- 13.6.1. Wirtualizacja (1193)
- 13.6.2. Układy wielordzeniowe (1193)
- 13.6.3. Systemy operacyjne z wielkimi przestrzeniami adresowymi (1194)
- 13.6.4. Komunikacja sieciowa (1195)
- 13.6.5. Systemy równoległe i rozproszone (1196)
- 13.6.6. Multimedia (1196)
- 13.6.7. Komputery zasilane bateriami (1197)
- 13.6.8. Systemy wbudowane (1197)
- 13.6.9. Węzły czujników (1198)
- 13.7. PODSUMOWANIE (1198)
14. LISTA PUBLIKACJI I BIBLIOGRAFIA (1203)
- 14.1. SUGEROWANE PUBLIKACJE DODATKOWE (1203)
- 14.1.1. Publikacje wprowadzające i ogólne (1204)
- 14.1.2. Procesy i wątki (1204)
- 14.1.3. Zarządzanie pamięcią (1205)
- 14.1.4. Wejście-wyjście (1205)
- 14.1.5. Systemy plików (1206)
- 14.1.6. Zakleszczenia (1206)
- 14.1.7. Multimedialne systemy operacyjne (1207)
- 14.1.8. Systemy wieloprocesorowe (1208)
- 14.1.9. Bezpieczeństwo (1209)
- 14.1.10. System Linux (1211)
- 14.1.11. System Windows Vista (1212)
- 14.1.12. System Symbian OS (1213)
- 14.1.13. Zasady projektowe (1213)
- 14.2. BIBLIOGRAFIA W PORZĄDKU ALFABETYCZNYM (1214)
SKOROWIDZ (1247)