I. Zarys systemu komputerowego 1.1 Elementy podstawowe 1.2 Rejestry procesora Rejestry widoczne dla użytkownika Rejestry sterowania i stanu 1.3 Wykonywanie rozkazów Pobieranie i wykonywanie rozkazów Funkcje wejścia-wyjścia 1.4 Przerwania Przerwania a cykl rozkazu Przetwarzanie przerwania Przerwania wielokrotne Równoległe przetwarzanie kilku programów 1.5 Hierarchia pamięci 1.6 Pamięć podręczna Uzasadnienie Podstawowe wiadomości o pamięci podręcznej Konstrukcja pamęci podręcznej 1.7 Mechanizmy komunikacji przez urządzenia wejścia-wyjścia Sterowanie programowe Sterowanie przerwaniami Bezpośredni dostęp do pamięci - DMA 1.8 Zalecana lektura 1.9 Zadania Dodatek 1A. Charakterystyka wydajności pamięci dwupoziomowych Bliskość Działanie pamięci dwupoziomowej Opłacalność Dodatek 1B. Sterowanie procedurami Implementacja stosu Wywołania procedur i rozkazy powrotu Procedury wykonywane wielobieżnie
2. Zarys systemów operacyjnych 2.1 Zadania i funkcje systemów operacyjnych System operacyjny jako interfejs między użytkownikiem a komputerem System operacyjny jako administrator zasobów Okoliczności sprzyjające rozwojowi systemu operacyjnego 2.2 Ewolucja systemów operacyjnych Przetwarzanie szeregowe Proste systemy wsadowe Systemy wsadowe wielozadaniowe Systemy podziału czasu (ang. Time-Sharing Systems) 2.3 Najważniejsze osiagnięcia Procesy Zarządzanie pamięcią Ochrona informacji i bezpieczeństwo Szeregowanie i zarządzanie zasobami Struktura systemu 2.4 Cechy współczesnych systemów operacyjnych 2.5 Przegląd systemu Windows 2000 Historia Wielozadaniowość systemu jednoużytkownikowego Model klient-serwer Wątki i symetryczne przetwarzanie wieloprocesorowe Obiekty Windows 2000 2.6 Tradycyjne systemy uniksowe Historia Opis 2.7 Współczesne systemy uniksowe System V w wersji 4 (SVR4) Solaris 2.x 4.4 BSD Linux 2.8 Zalecana lektura 2.9 Zadania
Część druga. Procesy 3. Procesy - opis i zarządzanie 3.1 Stany procesów Dwustanowy model procesu Tworzenie i kończenie procesów Model pięciostanowy Procesy zawieszone 3.2 Opis procesu Struktury sterujące systemu operacyjnego Struktury danych do sterowania procesami 3.3 Sterowanie procesem Tryby przetwarzania procesów Tworzenie procesu Przełączanie procesów Przetwarzanie systemu operacyjnego 3.4 Zarządzanie procesami w systemie Unix SVR4 Stany procesu Opis procesu Sterowanie procesem 3.5 Podsumowanie, podstawowe terminy i przegląd problemów Kluczowe poęcia Pytania i zadania powtórzeniowe 3.6 Zalecana lektura 3.7 Zadania
4. Wątki, symetryczne przetwarzanie wieloprocesorowe i mikrojądra 4.1 Procesy i wątki Wielowątkowość Przetwarzanie wątków Przykład z Adobe Pagemaker Wątki poziomu użytkownika a wątki poziomu jądra Inne rozwiązania 4.2 Symetryczne przetwarzanie wieloprocesorowe Architektura SMP Organizacja SMP Problemy konstrukcyjne systemów operacyjnych do symetrycznego przetwarzania wieloprocesorowego 4.3 Mikrojądra Architektura mikrojądra Zalety technologii wykorzystującej mikrojądro Wydajność mikrojądra Konstrukcja mikrojądra 4.4 Wątki i zarządzanie symetrycznym przetwarzaniem wieloprocesorowym w systemie operacyjnym Windows 2000 Obiekty procesów i wątków Wielowątkowość Stany wątku Obsługa podsystemów operacyjnych Obsługa symetrycznego przetwarzania wieloprocesorowego 4.5 Wątki i zarządzanie symetrycznym przetwarzaniem wieloprocesorowym w systemie operacyjnym Solaris Architektura wielowątkowa Motywacja Struktura procesu Przetwarzanie wątków Przerwania jako wątki 4.6 Procesy i zarządzanie wątkami i procesami w systemie operacyjnym Linux Procesy w systemie operacyjnym Linux Wątki w Linuksie 4.7 Podsumowanie Kluczowe pojęcia Pytania i zadania powtórzeniowe 4.8 Zalecana lektura 4.9 Zadania
5. Współbieżność - wykluczanie wzajemne i synchronizacja 5.1 Podstawowe pojęcia współbieżności Prosty przykład Zagadnienia związane z systemem operacyjnym Oddziaływania między procesami Wymagania stawiane wzajemnym wykluczeniom 5.2 Wykluczenia wzajemne a podejście programowe Algorytm Dekkera Algorytm Petersona 5.3 Wykluczanie wzajemne wspomagane sprzętowo Wyłączanie przerwań Specjalne rozkazy maszynowe 5.4 Semafory Wykluczenia wzajemne Implementacja semaforów Problem zakładu fryzjerskiego 5.5 Monitory Monitory z sygnalizacją Monitor z powiadamianiem i rozgłaszaniem 5.6 Przekazywanie komunikatów Synchronizacja Adresowanie Format komunikatu Zasady ustalania kolejności Wykluczenia wzajemne 5.7 Problem czytelników i pisarzy Uprzywilejowani czytelnicy Uprzywilejowani pisarze 5.8 Podsumowanie, podstawowe terminy i pytania powtórzeniowe Kluczowe pojęcia Pytania i zadania powtórzeniowe 5.9 Zalecana lektura 5.10 Zadania
6. Współbieżność: blokada (zakleszczenie) i zagłodzenie 6.1 Blokada - uwagi ogólne Zasoby trwałe Zasoby zużywalne Warunki powstania blokady 6.2 Zapobieganie blokadzie Wzajemne wykluczanie Zatrzymaj i czekaj Brak wywłaszczania Oczekiwanie cykliczne 6.3 Unikanie blokady Odmowa inicjalizacji procesu Odmowa alokacji zasobów 6.4 Wykrywanie blokady Algorytm wykrywania blokady Odtwarzanie 6.5 Zintegrowana strategia antyblokadowa 6.6 Problem pięciu filozofów 6.7 Mechanizmy współbieżności w systemie UNIX Potoki Komunikaty Pamięć współdzielona Semafory Sygnały 6.8 Elementy bazowe synchronizacji wątków w systemie Solaris Blokada typu wzajemne wykluczanie Semafory Blokada typu współdzielony odczyt/wyłączny zapis Zmienne warunkowe 6.9 Mechanizmy współbieżności w systemie Windows 2000 6.10 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 6.11 Zalecane lektury 6.12 Problemy
Część trzecia. Pamięć 7. Zarządzanie pamięcią 7.1 Zarządzanie pamięcią - wymagania ogólne Relokacja Ochrona pamięci Wspólny dostęp (ang. sharing) Organizacja logiczna Organizacja fizyczna 7.2 Partycjonowanie Partycjonowanie statyczne Partycjonowanie dynamiczne System blizniaczy (ang. buddy system) Relokacja 7.3 Stronicowanie 7.4 Segmentacja 7.5 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 7.6 Zalecane lektury 7.7 Problemy Aneks 7A Aadowanie i konsolidacja Aadowanie Konsolidacja (ang. Linking)
8. Pamięć wirtualna 8.1 Sprzęt i struktury sterujące Lokalność i pamięć wirtualna Stronicowanie Struktura tablicy stron Segmentacja Złożone stronicowanie i segmentacja Ochrona pamęci i współdzielenie 8.2 Oprogramowanie systemu operacyjnego Strategia pobierania do pamięci Strategia rozmieszczania Strategia wymiany Zarządzanie zestawem rezydentnym Strategia czyszczenia Sterowanie ładowaniem 8.3 Zarządzanie pamięci w systemach UNIX i Solaris System stronicowania Wymiana stron Alokator pamięci jądra 8.4 Zarządzanie pamięcią w Linuksie Pamięć wirtualna w Linuksie Alokacja pamięci jądra 8.5 Zarządzanie pamięcią w Windows 2000 Mapa adresów wirtualnych W2K Stronicowanie W2K 8.6 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 8.7 Zalecane lektury 8.8 Problemy Aneks 8A. Tablice mieszające
Część czwarta. Szeregowanie 9. Szeregowanie jednoprocesorowe 9.1 Typy szeregowania Szeregowanie długoterminowe Szeregowanie średnioterminowe Szeregowanie krótkoterminowe 9.2 Algorytmy szeregowania Użycie priorytetów Alternatywne strategie szeregowania Porównanie wydajności Szeregowanie ze sprawiedliwym udziałem 9.3 Tradycyjne szeregowanie w Uniksie 9.4 Podsumowanie, kluczowe terminy i pytania kontrolne Kluczowe terminy Pytania kontrolne 9.5 Zalecane lektury 9.6 Zadania Dodatek 9A Czas reakcji Dodatek 9B Systemy kolejkowania Kolejka jednoserwerowa Kolejka wieloserwerowa
10. Szeregowanie wieloprocesorowe i w czasie rzeczywistym 10.1 Szeregowanie wieloprocesorowe Ziarnistość (ang. Granularity) Problemy projektowe Szeregowanie procesów Szeregowanie wÄ…tków Współdzielenie obciążenia 10.2 Szeregowanie w czasie rzeczywistym Informacje wstÄ™pne Cechy systemÛw operacyjnych czasu rzeczywistego Szeregowanie w czasie rzeczywistym Szeregowanie terminowe Szeregowanie czÄ™stotliwoÅ›ciowe monotoniczne 10.3 Szeregowanie w Linuksie 10.4 Szeregowanie w systemie Unix SVR4 10.5 Szeregowanie w Windows 2000 Priorytety procesów i wÄ…tków Szeregowanie wieloprocesorowe 10.6 Podsumowanie, kluczowe terminy i pytania kontrolne Kluczowe terminy Pytania kontrolne 10.7 Zalecane lektury 10.8 Zadania
Część piąta. Wejście-wyjście i pliki 11. Zarządzanie wejściem-wyjściem i szeregowanie dysku 11.1 Urządzenia wejścia-wyjścia 11.2 Organizacja funkcji wejścia-wyjścia Ewolucja funkcji wejścia-wyjścia Bezpośredni dostęp do pamięci 11.3 Problemy projektowe Cele projektowe Struktura logiczna funkcji we-wy 11.4 Buforowanie we-wy Buforowanie pojedyncze Buforowanie podwójne Bufor cykliczny Użyteczność buforowania 11.5 Szeregowanie dysku Parametry wydajności dysku Strategie szeregowania dysku 11.6 RAID RAID - poziom 0 RAID 0 jako sposób na szybką transmisję danych RAID 0 jako sposób na duże tempo żądań we-wy RAID - poziom 1 RAID - poziom 2 RAID - poziom 3 RAID - poziom 4 RAID - poziom 5 RAID - poziom 6 11.7 Dyskowa pamięć podręczna (ang. Disk cache) Rozważania projektowe Kwestie wydajnościowe 11.8 We-wy w systemie Unix SVR4 Pamięć podręczna buforów Kolejka znakowa (ang. Character queue) Niebuforowane we-wy (ang. Unbuffered I/O) Urządzenia uniksowe 11.9 We-wy w systemie Windows 2000 Podstawowe moduły we-wy Asynchroniczne i synchroniczne we-wy Programowa macierz RAID 11.10 Podsumowanie, kluczowe terminy i pytania kontrolne Kluczowe terminy Pytania kontrolne 11.11 Zalecane lektury 11.12 Zadania Dodatek 11A Dyskowe urządzenia pamięciowe Dysk magnetyczny Pamięć optyczna
12. Zarządzanie plikami 12.1 Uwagi ogólne Pliki Systemy zarządzania plikami 12.2 Organizacja plików i dostęp do nich Sterta (ang. Pile) Plik sekwencyjny Plik indeksowo-sekwencyjny 94 Plik indeksowany Plik haszowany (o dostępie swobodnym) 12.3 Katalogi plików Zawartość Struktura Konwencje nazewnicze 12.4 Współużytkowanie plików (ang. File sharing) Prawa dostępu Dostęp jednoczesny 12.5 Grupowanie rekordów w bloki 12.6 Zarządzanie pamięcią pomocniczą Alokacja plików Zarządzanie dostępną pamięcią pomocniczą Niezawodność 12.7 Zarządzanie plikami w systemie Unix I-węzły Alokacja plików 13 12.8 System plików Windows 2000 Kluczowe własciwości systemu NTFS Odtwarzalność (ang. Recoverability) 12.9 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 12.10 Zalecane lektury 12.11 Problemy
Część szósta
13. Przetwarzanie rozproszone, technologia klient/serwer i klastry 13.1 Model klient/serwer Czym jest model klient/serwer? Aplikacje klient/serwer Oprogramowanie pośredniczące (ang. Middleware) 13.2 Rozproszone przekazywanie komunikatów (ang. Distributed message passing) Zawodność kontra niezawodność Blokowanie kontra nieblokowanie 13.3 Zdalne wywoływanie procedur Przekazywanie parametrów Reprezentacja parametrów Powiązanie klienta i serwera (ang. Client/server binding) Wywoływanie synchroniczne i asynchroniczne Mechanizmy obiektowe 13.4 Klastry Konfiguracje klastrów Zagadnienia projektowania systemów operacyjnych Architektura klastra Klastry w porównaniu z wieloprzetwarzaniem symetrycznym (SMP) 13.5 Windows 2000 Cluster Server 13.6 Sun Cluster Obsługa obiektów i komunikacji Zarządzanie procesami (ang. Process management) Praca w sieci Globalny system plików (ang. Global file system) 13.7 Beowulf i klastry linuksowe Cechy klastra Beowulf Oprogramowanie Beowulf 13.8 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 13.9 Zalecane lektury 13.10 Problemy
14. Zarządzanie procesami rozproszonymi 14.1 Migracja procesów Motywacje Mechanizmy migracji procesów Negocjacje migracji Eksmisja Transfery z wywłaszczaniem i bez wywłaszczania 14.2 Rozproszone stany globalne Stany globalne i rozproszone zapisy migawkowe Algorytm rozproszonych zapisów migawkowych 14.3 Rozproszone wykluczanie wzajemne Koncepcje rozproszonego wykluczania wzajemnego Kolejność zdarzeń w systemie rozproszonym Kolejki rozproszone Metoda przekazywania żetonu 14.4 Blokada rozproszona (ang. Distributed deadlock) Blokada przy alokacji zasobów Blokada przy wymianie komunikatów 14.5 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 14.6 Zalecane lektury 14.7 Problemy
Część siódma. Bezpieczeństwo
15. System bezpieczeństwa 15.1 Zagrołenia bezpieczeństwa Rodzaje zagrożeń Aktywa systemów komputerowych 15.2 Ochrona Ochrona pamięci Kontrola dostępu zorientowana na użytkownika Kontrola dostępu zorientowana na dane 15.3 Włamywacze Techniki włamań Ochrona haseł Strategie wyboru haseł Wykrywanie włamań 15.4 Oprogramowanie agresywne Agresywne programy Natura wirusów Typy wirusów Makrowirusy Techniki antywirusowe Wirusy poczty elektronicznej 15.5 Systemy zaufane (ang. Trusted systems) Obrona przed programami typu koń trojański Monitor odwołań 15.6 System bezpieczeństwa Windows 2000 Schemat sterowania dostępem Znacznik dostępu Deskryptory bezpieczeństwa 15.7 Podsumowanie, kluczowe terminy, pytania sprawdzające Kluczowe terminy Pytania sprawdzające 15.8 Zalecane lektury 15.9 Problemy Aneks 15A Szyfrowanie Szyfrowanie z kluczem publicznym
Aneks A: TCP/IP A1. Potrzeba wprowadzania architektury protokołów A2. Architektura protokołu TCP/IP Funkcjonowanie TCP i IP TCP i UDP IP i IPv6 Aplikacje TCP/IP