Spis treści 1 Operacje wejścia/wyjścia 1 1.1 Wprowadzenie.............................................. 1 1.2 Organizacja operacji we/wy........................................ 3 1.3 System wejścia/wyjścia.......................................... 6 2 Inne zagadnienia 6 2.1 Architektury systemów operacyjnych.................................. 6 2.2 Rozruch systemu komputerowego.................................... 10 2.3 Bezpieczeństwo i ochrona........................................ 10 1 Operacje wejścia/wyjścia 1.1 Wprowadzenie Schemat ogólny systemu komputerowego Rysunek 1: Ogólna struktura systemu komputerowego Współczesne systemy komputerowe mogą znacznie odbiegać od zaprezentowanego schematu, mimo to ogólna struktura pozostaje zachowana. W przypadku komputerów osobistych magistrala systemowa zwykle podzielona jest na odcinki charakteryzujące się różną przepustowością. Rolę interfejsów między nimi pełnią mostek północny (umiejscowiony pomiędzy magistralami procesora, pamięci oraz szybszą magistralą systemową dawniej PCI, dziś, PCI Express) oraz mostek południowy (pomiędzy szybszą magistralą systemową a wolniejszą dawniej ISA Local Bus, dziś zwykle PCI). W niektórych systemach występowała ponadto magistrala AGP przeznaczona dla kart graficznych, dołączona do mostka północnego. Współczesne procesory coraz częściej przejmują z mostka północnego rolę kontrolera pamięci np. architektury procesorów Intel Nehalem czy Sandy Bridge. Jednostka centralna (CPU) Procesor, jednostka centralna - serce komputera Odpowiada za przetwarzanie informacji Komunikuje się poprzez magistralę systemowa Pierwotnie wspólna szyna (także w systemach SMP) 1
Z czasem rozbudowa i specjalizacja Operuje na zawartości pamięci operacyjnej Różne architektury (i386, Sparc, Power PC... ) Obecnie integruje także kontroler pamięci, pamięć cache oraz sterowniki magistrali PCI-Express Termin jednostka centralna bywa odnoszony do całego komputera obudowy z płytą główną, pamięcią, procesorem i kartami rozszerzeń oraz dyskami twardymi czy napędami optycznymi, ale bez urządzeń peryferyjnych dołączanych z zewnątrz. Sterownik (kontroler) urzadzenia Dedykowany komunikacji z konkretną klasą urządzeń Procesor/układ specjalizowany Posiada rejestry sterujące Bufor do komunikacji poprzez magistralę systemową Przykłady: karty graficzne karty muzyczne kontrolery dysków twardych karty sieciowe kontrolery wejścia/wyjścia (USB, FireWire, Szeregowe) Sterownik (kontroler) urzadzenia Organizacja komunikacji z kontrolerem Rozkazy wejścia/wyjścia Wejście/wyjście odwzorowane w pamięci Rejestry kontrolera Statusu opisuje stan urządzenia Sterujacy konfiguracja i sterowanie pracą Danych wejściowych dane przychodzące do systemu Danych wyjściowych dane wysyłane Rejestry danych najczęściej są wielobajtowe lub mają postać kolejek. Kontroler może mieć większą liczbę rejestrów sterujących i statusu. 2
1.2 Organizacja operacji we/wy Struktura wejścia - wyjścia Sposoby realizacji operacji wejścia/wyjścia Pooling (odpytywanie) Przerwania Bezpośredni dostęp do pamięci Pooling Procedura wysyłania bajtu (słowa) danych 1. Sprawdzanie flagi zajęty, aż urządzenie będzie gotowe 2. Gdy urządzenie jest gotowe: Ustawienie rejestru sterujacego (wysyłanie danych) Zapis do rejestru danych wyjściowych Ustawienie flagi gotowości danych 3. Gdy urządzenie stwierdzi ustawienie flagi gotowości: Ustawia flagę zajęty Wykonanie operacji wejścia/wyjścia Wyczyszczenie flagi gotowości, ewentualne ustawienie flagi błędów oraz wyczyszczenie flagi zajęty Spostrzeżenie: W punkcie 1 procesor realizuje aktywne oczekiwanie. Pooling Zalety i wady + Prostota Komunikacja sprowadza się do ustawienia rejestrów urządzenia i sprawdzania rejestrów statusu Obciążenie procesora Na systemie operacyjnym spoczywa konieczność periodycznego sprawdzania stanu urządzenia Ryzyko utraty danych, gdy obsługa urządzenia się spóźni Aktywne czekanie na dostępność urządzenia Wejście/wyjście z użyciem przerwań Synchroniczna obsługa I/O 1. Program użytkownika zgłasza zapotrzebowanie na operację we/wy 2. System operacyjny inicjuje operację we/wy i oczekuje na jej zakończenie 3. Urządzenie informuje o zakończeniu operacji 4. System operacyjny obsługuje urządzenie i zwraca sterowanie do programu użytkownika 3
Wejście/wyjście z użyciem przerwań Asynchroniczna obsługa I/O 1. Program użytkownika zgłasza zapotrzebowanie 2. System operacyjny inicjuje operację wejścia/wyjścia po czym wznawia przetwarzanie 3. Urządzenie informuje o zakończeniu operacji 4. System operacyjny ponownie zawiesza wykonywanie programu i obsługuje urządzenie 5. System operacyjny wznawia przetwarzanie programu użytkownika Wejście/wyjście z użyciem przerwań Schemat Rysunek 5: Schemat operacji wejścia/wyjścia z użyciem przerwań. Wejście/wyjście z użyciem przerwań Mechanizmy pomocnicze Kontroler przerwań określanie źródeł przerwań kolejkowanie obsługi przerwań Tablice stanów urządzeń informacje o stanie urządzenia informacje o aktualnie przetwarzanym zamówieniu powiązanie przerwania od urządzenia z oczekującym procesem Kolejki zamówień kolejka zamówień na urządzenie 4
Wejście/wyjście z użyciem przerwań Zalety i wady + Urządzenia zgłaszają potrzebę obsługi w czasie trwania operacji procesor może być przydzielony innemu procesowi minimalizacja możliwości przeoczenia zdarzenia Zaangażowanie procesora kopiowanie danych pomiędzy buforami urządzenia a pamięcią za każdym razem operacja sprowadza się do przesłania jednego słowa danych W przypadku terminala czy portu szeregowego, przerwanie generowane jest o każdym odczytanym/wysłanym znaku. Przy powolnym napływie danych nie stanowi to problemu, ale w przypadku szybkich urządzeń mogło by paraliżować działanie systemu. Stąd też zaistniała konieczność wypracowania mechanizmów przejmujących od procesora część obowiązków związanych z przesyłaniem danych pomiędzy sterownikami urządzeń a pamięcią operacyjną. Bezpośredni dostęp do pamięci PIO programowane wejście/wyjście Dane przesyłane do urządzenia po jednym słowie Wykorzystanie poolingu lub DMA Podejście takie jest nieefektywne! DMA bezpośredni dostęp do pamięci Specjalizowany kontroler steruje przepływem danych pomiędzy sterownikami urządzeń a pamięcią operacyjną Stosowane przy transferze większych ilości danych DMA - Direct Memory Access 1. Urządzenie zgłasza gotowość (przerwanie) 2. System operacyjny informuje kontroler DMA z jakiego urządzenia i pod jaki adres ma przesłać dane po czym wraca do wykonywania programu 3. Kontroler DMA przeprowadza transfer po czym zgłasza systemowi jego zakończenie (przerwanie) 4. System obsługuje przerwanie i kontynuuje przetwarzanie DMA Tryby pracy Transfer blokowy kontroler DMA przejmuje kontrolę nad magistralą systemową do czasu zakończenia transmisji Kradzież cykli kontroler DMA po każdym przesłanym słowie zwraca magistralę systemową procesorowi i występuje z nowym zamówieniem Tryb transparentny kontroler DMA prowadzi transmisje w czasie, gdy procesor jest zajęty obliczeniami 5
1.3 System wejścia/wyjścia Cechy urzadzeń wejścia/wyjścia Tryb przesyłania danych Urządzenia blokowe blok bajtów Urządzenia znakowe po jednym znaku Sposób dostępu Dostęp sekwencyjny uporządkowanie danych narzucane przez urządzenie Dostęp swobodny możliwość dostępu do danych w dowolnej kolejności Organizacja transmisji Synchroniczne Asynchroniczne Cechy urzadzeń wejścia/wyjścia Możliwość współdzielenia Dostęp na zasadzie wyłączności Urządzenie współdzielone Kierunek transmisji Tylko zapis Tylko odczyt Zapis i odczyt Szybkość urządzenia 2 Inne zagadnienia 2.1 Architektury systemów operacyjnych Jadro systemu operacyjnego Jądro systemu operacyjnego pośredniczy pomiędzy sprzętem a programami użytkownika (aplikacjami). 6
Jadro systemu operacyjnego Odpowiada za organizację pracy systemu operacyjnego Zarządzanie procesami Zarządzanie pamięcią Zarządzanie urządzeniami Udostępnia aplikacjom mechanizm wywołań systemowych Udostępnianie usług jądra programom użytkownika Operacje wejścia/wyjścia, tworzenie i synchronizacja procesów itp. Różne architektury Jądro monolityczne Mikrojądro Jądro hybrydowe Tryby pracy CPU Tryb jadra Uprzywilejowany tryb pracy procesora, umożliwia dostęp do całego obszaru pamięci, w tym stron zarezerwowanych dla jądra systemu. Tryb użytkownika Pamięć udostępniana poprzez mechanizmy pamięci wirtualnej, możliwa zarówno izolacja jak i współdzielenie obszarów pamięci. Kontrola dostępu do pamięci. Dostęp do urządzeń za pośrednictwem wywołań systemowych. Przestrzenie adresowe Przestrzeń jadra Obszar pamięci zarezerwowany dla jądra systemu operacyjnego, zależnie od architektury jądra może obejmować także sterowniki urządzeń oraz systemy plików. Przestrzeń użytkownika Obszar pamięci użytkowany przez procesy użytkownika poprzez mechanizmy pamięci wirtualnej. Jadro monolityczne Wszystkie elementy systemu operacyjnego pracują w trybie jądra Zarządzanie procesami i pamięcią Systemy plików Wywołania systemowe Komunikacja międzyprocesowa Sterowniki urządzeń Programom użytkownika udostępniany jest interfejs do usług jądra w postaci wywołań systemowych Niektóre systemy pozwalają na dynamiczne ładowanie modułów jądra nie mylić z jądrami hybrydowymi! Przykłady: Unix (*BSD, Solaris do 4.x, AIX, HP-UX), Linux, Windows 9x, DOS 7
Jadro monolityczne Rysunek 6: System z jądrem monolitycznym Mikrojadro Jądro udostępnia podstawowe mechanizmy Podstawowa komunikacja międzyprocesowa Zarządzanie procesami Zarządzanie pamięcią Usługi systemowe i sterowniki urządzeń Udostępniane przez programy zwane serwerami Działają w przestrzeni użytkownika Komunikacja między serwerami a aplikacjami za pośrednictwem serwera IPC Komunikacja pomiędzy serwerami za pośrednictwem podstawowego IPC Dodatkowy nakład czasowy na komunikację niższa wydajność Sterowniki urządzeń oraz usługi systemowe objęte są ochroną pamięci Przykłady: Hurd, QNX Mikrojadro Rysunek 7: System z mikrojądrem 8
Jadro hybrydowe W trybie jądra działają podstawowe usługi systemowe Komunikacja międzyprocesowa Zarządzanie procesami Zarządzanie pamięcią Sterowniki urządzeń W trybie użytkownika działają pozostałe usługi systemowe analogicznie jak w przypadku mikrojądra Mniejsze narzuty czasowe na przełączanie kontekstu i przechodzenie między trybem użytkownika a jądra Gorsza ochrona przed błędami Często uważane za pojęcie marketingowe Przykłady: Windows NT, XNU/Darwin, NetWare Jadro hybrydowe Rysunek 8: System z jądrem hybrydowym Exokernel Koncepcja rozwijana w MIT Obok tradycyjnego jądra dodatkowe lekkie jądro Niskopoziomowy dostęp do sprzętu Współdzielenie urządzeń i ochrona Decyzja programisty Wykorzystanie mechanizmów normalnego jądra Implementacja dostępu niskopoziomowego 9
Rysunek 9: Egzokernel Źródło: wikipedia 2.2 Rozruch systemu komputerowego Rozruch systemu komputerowego 0. Włączenie zasilania 1. Uruchomienie programu rozruchowego (BIOS) 2. Testy POST (Power On Self-Test) test konfiguracji procesora test pamięci test konfiguracji pamięci masowych 3. Inicjalizacja kart rozszerzeń z własnym BIOS 4. Załadowanie systemu operacyjnego i przekazanie mu sterowania 2.3 Bezpieczeństwo i ochrona Bezpieczeństwo i ochrona czym sa Ochrona Mechanizmy kontroli dostępu do zasobów systemu. Kontrola ta obejmuje użytkowników oraz uruchomione przez nich programy (procesy). Bezpieczeństwo Mechanizmy zapewniające integralność systemu oraz danych w nim przechowywanych. Ochrona Ochrona systemu i jego zasobów przed zagrożeniami pochodzącymi z wnętrza systemu. Kontrola dostępu do zasobów: pamięci 10
Bezpieczeństwo plików czasu procesora urządzeń wejścia/wyjścia Ochrona systemu i jego zasobów przed zagrożeniami pochodzącymi z otoczenia systemu Poziomy bezpieczeństwa: 1. Fizyczne zabezpieczenie fizycznego dostępu do sprzętu 2. Ludzkie odpowiedni dobór użytkowników systemu 3. Sieciowe ochrona przed zagrożeniami wiążącymi się z wykorzystaniem sieci 4. Systemu operacyjnego mechanizmy obronne wbudowane w system operacyjny Bezpieczeństwo systemu operacyjnego Uwierzytelnianie Uwierzytelnianie (autentykacja) Potwierdzenie tożsamości użytkownika. Element fizyczny klucz, karta Wiedza użytkownika login i hasło Atrybut użytkownika biometria, grafologia Hasła i ich słabości Najprostsza i najpowszechniejsza metoda uwierzytelniania Podatne na wiele ataków: odgadnięcie na podstawie wiedzy o użytkowniku metodą słownikową lub siłową podglądanie rejestrowanie naciskanych klawiszy sniffing zgubienie notatek przekazanie hasła osobom trzecim Sposoby poprawy bezpieczeństwa haseł Komplikowanie haseł: minimum 8 znaków wielkie/małe litery, znaki przestankowe, cyfry Hasła losowe Periodyczna zmiana haseł Hasła jednorazowe Uwaga: Nadmierne skomplikowanie hasła powoduje, ze użytkownik je najprawdopodobniej zapisze (a potem zgubi... ). 11
Biometria Wykorzystanie niepowtarzalnych cech człowieka: odcisk palca rozpoznawanie dłoni wzór tęczówki oka rozpoznawanie twarzy Coraz większa popularność Bezpieczeństwo systemu operacyjnego Zagrożenia programowe Koń trojański Oprogramowanie (lub jego fragmenty), które pod przykrywką niegroźnych funkcji użytkowych wykonuje inne działania Boczne/tylne wejście (back door) Ukryta w oprogramowaniu użytkowym możliwość uzyskania nieautoryzowanego dostępu do systemu. Ataki typu przepełnienie stosu/bufora Atak polega na umieszczeniu fragmentu kodu w pamięci atakowanego komputera, a następnie nadpisaniu adresu powrotu z funkcji adresem początku umieszczonego kodu. Bezpieczeństwo systemu operacyjnego Zagrożenia systemowe Robaki Programy umiejące się samodzielnie rozprzestrzeniać w środowisku sieciowym. Mogą przenosić złośliwy kod. Wirusy Mniej lub bardziej szkodliwe oprogramowanie, w przeciwieństwie do robaków nie mają możliwości samodzielnego rozmnażania się. Ataki DoS/DDoS Ataki polegające na uniemożliwieniu korzystania z systemu. 12