Nowoczesne systemy operacyjne
Transkrypt
Nowoczesne systemy operacyjne
Nowoczesne systemy operacyjne Szymon Krywult Jan Kleszczyński 13 maja 2013 Plan Wstęp Kernel Procesy i wątki System plików System wejścia-wyjścia Podsumowanie Wstęp Definicja Zbiór oprogramowania zarządzającego warstwą sprzętową komputera oraz zapewniającą odpowiednią warstwę abstrakcji (interfejs) dla aplikacji. Wstęp Zadania systemu operacyjnego I Zarządzanie warstwą sprzętową I I I Dostarczenie wygodniejszego interfejsu dla aplikacji (użytkownika) I I I Obsługa urządzeń wejścia - wyjścia Zarządzanie zasobami (np: przydzielanie czasu procesora, zarządzanie pamięcią) Warstwa abstrakcji dla aplikacji Interfejs użytkownika (GUI, powłoka) Zapewnienie bezpieczeństwa I Ograniczenie możliwości manipulowania warstwą sprzętową przez aplikacje Wstęp Rys historyczny I I 1944 - 1955: Pierwsza generacja (Lampy elektronowe) 1955 - 1965: Druga generacja (Tranzystory i systemy wsadowe) I I I FORTRAN Monitor System IBSYS 1965 - 1980: Trzecia generacja (Układy scalone) I I OS/360 (współdzielenie pamięci, wielozadaniowość) (MULTICS →) UNIX (→ MINIX → LINUX) I I I BSD (Berkeley Software Distribution) System V (AT&T) Standard POSIX - definiuje minimalny interfejs wywołań, który musi obsługiwać każdy system zgodny z UNIX Wstęp Rys historyczny I 1980 - obecnie: Czwarta generacja (Komputery osobiste) I I I I (DOS →) MS-DOS Mac OS LINUX Windows Wstęp Cechy nowoczesnego systemu operacyjnego W zależności od przeznaczenia nowoczesny system operacyjny charakteryzują się: I możliwością obsługi konfiguracji wieloprocesorowych I wielozadaniowością I umożliwiać współpracę z urządzeniami zewnętrznymi I dostarczać interfejs umożliwiający wygodną pracę dla użytkownika Wstęp Rodzaje systemów operacyjnych Rodzaje systemów operacyjnych: I Systemy operacyjne komputerów mainframe I Systemy operacyjne serwerów I Wieloprocesorowe systemy operacyjne I Systemy operacyjne komputerów osobistych I Systemy operacyjne urządzeń podręcznych I Rozproszone systemy operacyjne I Wbudowane systemy operacyjne I Systemy operacyjne czasu rzeczywistego I Systemy operacyjne kart elektronicznych I Systemy operacyjne węzłów sensorowych Kernel Jądro systemu (ang. Kernel) - podstawowa część systemu operacyjnego, która jest odpowiedzialna za wszystkie jego zadania. Podstawowe architektury jąder: I jądro monolityczne I mikrojądro I nanokernel I jądro hybrydowe Kernel Jądro monolityczne Jądro monolityczne - wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra. Zaletą jest prostota, stabilność, łatwość komunikacji pomiędzy różnymi elementami jądra (jedna przestrzeń adresowa). Spotykane w serwerach i zaporach sieciowych. Rysunek: Schemat jądra monolitycznego Kernel Mikrojądro Mikrojądro - okrojona wersja jądra monolitycznego, części odpowiedzialne za bardziej wyrafinowane funkcje są wydzielone do funkcjonalnych bloków albo realizowane jako zwykłe procesy w trybie użytkownika. Rysunek: Schemat mikrojądra Nanokernel – mniejsza wersja mikrojądra Spotykane w systemach czasu rzeczywistego i systemach wbudowanych. Kernel Jądro hybrydowe Jądro hybrydowe – architektura pośrednia między jądrem monolitycznego i mikrojądrem. Krytyczne usługi są na stałe wkompilowane w główny kod jądra, inne usługi pozostają oddzielone od głównego jądra i działają jako serwery (w przestrzeni jądra). Dzięki temu rozwiązaniu możliwe jest zachowanie wydajności jądra monolitycznego dla kluczowych usług. Stosowane w Windows i Mac OS. Rysunek: Schemat jądra hybrydowego Kernel Tryb działania jądra Jądro systemowe działa w trybie nadzorcy, co oznacza, że ma pełną kontrolę nad warstwą sprzętową. Pełna kontrola nad warstwą sprzętową jest konieczna, ponieważ to jądro odpowiada za zarządzanie pamięcią, przydzielanie czasu procesora oraz obsługę przerwań. Procesy i wątki Proces Proces - instancja wykonywanego programu. Składa się z: I PID I kodu programu I licznika rozkazów I stosu I sekcji danych I wątków Zasoby: I pamięć I czas procesora I urządzenia I/O I pliki Procesy i wątki Wątek Wątek (ang. thread) – część programu wykonywana współbieżnie w obrębie jednego procesu; w jednym procesie może istnieć wiele wątków. Proces od wątku odróżnia brak własnych zasobów dla wątku, które są wspólne dla wszystkich wątków wewnątrz jednego procesu. Procesy i wątki Cechy wątków I Wątki wymagają mniej zasobów do działania i też mniejszy jest czas ich tworzenia. I Współdzielona przestrzeń adresowa - wystarczy przekazać wskaźnik. I Odczyt (a niekiedy zapis) danych o rozmiarze nie większym od słowa maszynowego nie wymaga synchronizacji (procesor gwarantuje atomowość takiej operacji). Procesy i wątki Multi CPU vs virtual CPU oraz Green threads Teoretycznie każdy proces ma własne CPU. Rzeczywiście jądro wirtualizuje procesor dla wątku, a tak naprawdę procesy wykonują się konkurencyjnie. Procesy i wątki Multi CPU vs virtual CPU oraz Green threads Teoretycznie każdy proces ma własne CPU. Rzeczywiście jądro wirtualizuje procesor dla wątku, a tak naprawdę procesy wykonują się konkurencyjnie. Green threads Green threads - symulowanie wielowątkowości przez maszynę wirtualną nawet na maszynie nie obsługującej wątków. Procesy i wątki Tworzenie procesów cobegin - oznaczenie kodu jako wykonującego się równolegle poprzez umieszczeni między cobegin, a coend. Niejawne, statyczne procesy. forall - równoległość danych fork - dynamiczne tworzenie procesów poprzez dyrektywy fork i join. jawnie - jawnie tworzone procesy Procesy i wątki Planowanie Planowanie (ang. Scheduling) polega na ustaleniu kolejności oraz czasu wykonywania procesów. Odpowiadają za nie planery, które można podzielić na dwie podstawowe grupy: I Wbudowane I Autonomiczne Procesy i wątki Model decyzji I Wywłaszczający: zatrzymuje proces i zmienia harmonogram, jest wołany przy zmianie stanu systemu lub okresowo I Niewywłaszczający: proces działa tak długo jak to możliwe, planer jest wołany gdy proces się zakończy lub zablokuje Procesy i wątki Wybór procesów Określenie, który proces będzie aktywny następuje przez nadanie priorytetów za pomocą funkcji priorytetów. Wyróżniamy następujące ich rodzaje: I Losowo I Chronologicznie (FIFO) I Cyklicznie (Round Robin - RR) I Shortest-Job-Firt (SJF) I Shortest-Remaining-Time (SRT) I Multilevel Priority (ML) I Multilevel Feedback (MLF) I Rate Monotonic (RM) I Earliest Deadline First (EDF) Procesy i wątki FIFO Wcześniejszy proces ma wyższy priorytet. I Start po czasie t = 2 I Proces p1 ma wyższy priorytet Procesy i wątki RR Przełącza się miedzy procesami co określony czas. I Proces p1 pracuje aż do t = 2 W t = 2 − 6 następuje przełączanie między procesami I Proces p@ kończy sie t = 6, a proces p1 w t = 7 I Procesy i wątki SJF Priorytet odwrotnie proporcjonalny do długości wykonania procesu. I Start po czasie t = 2 I Proces p2 ma priorytet P = −2,a p1 P = −5 Procesy i wątki SRT Priorytet odwrotnie proporcjonalny do pozostałego czasu. I Proces p1 działa aż do t = 2 I W t = 2 proces p2 ma P = −2, a p1 P = −3 Procesy i wątki ML Priorytet nadany zewnętrznie. Na tym samym poziomie wykorzystuje się FIFO albo RR. I p1 z priorytetem 3 działa aż do pojawienia się p2 z P = 7 I Po skończeniu p2 powrót do p1 Procesy i wątki MLF Tak jak ML wybiera proces o najwyższym priorytecie, ale początkowy priorytet jest nadawany jako najwyższy, a potem zmniejszany o jeden co jednostkę czasu. Procesy i wątki MLF - przykład I p1 zaczyna z P = n I W t = 2 p1 ma już P = n − 2 I pojawia się p2 z P = n i blokuje p1 I p2 działa przez dwa cykle zmniejszając priorytet do P = n − 2 I Priorytet p2 i p1 są równe, p2 kończy działanie po kolejnej jednostce z P =n−3 I p1 zostaje wznowione i wykonuje się do końca. Procesy i wątki RM Im krótszy cykl procesu tym większy priorytet. Opiera się na rzeczywistym czasie, co pozwala na użycie go w systemach RT. I p1 ma cykl równy 9, a p2 7 I p1 działa, do pojawienia się p2 I p1 wznawia się po skończeniu p2 Procesy i wątki EDF Wyższy priorytet ma proces o bliższym wymaganym czasie zakończenia. d okres r rzeczywisty czas w systemie r%d czas w danym okresie d - r%d pozostały czas w okresie P = −(d − r %d) System plików System plików - część systemu operacyjnego zarządzająca plikami znajdującymi się na lokalnych nośnikach danych. Określa sposób w jaki pliki będą przechowywane oraz atrybuty jakie pliki mogą posiadać. Przykładowe atrybuty: wykonywalność, właściciel, flagi określające pliki systemowe lub pliki tylko do odczytu itp. System plików Plik Plik - logiczna jednostka informacji używana do modelowania nośnika danych. Z punktu widzenie systemu operacyjnego pliki mogą być podzielone na: I tekstowe binarne I systemowe I specjalne I wykonywalne I System plików Operacje na plikach i folderach od strony użytkownika00 Podstawowe wywołania systemowe związane z: I plikami: create, delete, open, close, read, write, append, seek, get attributes, set attributes, rename I katalogami: create, delete, opendir, closedir, readdir, rename, link, unlink System plików Układ systemu plików System operacyjny traktuje dysk jak jednowymiarową tablicę bloków logicznych. W sektorze 0 dysku umieszczony jest główny rekord startowy MBR (ang. Master Boot Record), który zawiera informacje o tym, która z partycji jest aktywna (zawiera system operacyjny). Każda partycja zaczyna się od tzw. bloku startowego (ang. Boot Block), w którym znajduje się program ładujący system operacyjny System plików Układ systemu plików Cały dysk Tablica Partycji Partycje MBR Blok startowy Superblok Mechanizm zarządzania wolnym miejscem i - węzły Katalog główny Rysunek: Przykładowy układ systemu plików Pliki i katalogi System plików Układ systemu plików I Blok startowy (ang. Boot block) - pierwszy blok partycji, zawiera program ładujący system operacyjny I Superblok - zawiera najważniejsze parametry systemu plików (np. identyfikator systemu plików, liczba bloków w systemie plików) Mechanizm zarządzania wolnym miejscem - podstawowym mechanizmem jest mapa bitowa: I I I I każdy blok jest reprezentowany przez jeden bit (0 – wolny) szybkie wyszukiwanie wolnych bloków wydajny wtedy, gdy mapa jest w RAM I i - węzły (węzły indeksujące) - tablica struktur (po jednej dla każdego pliku), w których zawarte są informacje o plikach. I Katalog główny - zawiera wierzchołek drzewa systemu plików System plików Alokacja plików I Alokacja ciągła I Alokacja na bazie listy jednokierunkowej I Alokacja bazująca na jednokierunkowej liście z wykorzystaniem tabeli w pamięci System plików Alokacja ciągła Pliki lokowane po kolei, jeden po drugim. Zalety: I Prosta w implementacji - należy pamiętać jedynie adres pierwszego bloku i ilość bloków w danym pliku I Wydajny odczyt - cały plik można odczytać w pojedynczej operacji Wady: I Fragmentacja zewnętrzna - usuwanie plików powoduje powstawanie luk I Problematyczne zwiększanie rozmiaru pliku System plików Alokacja listowa Pliki przechowywane w postaci jednokierunkowej listy bloków dyskowych. Pierwsze słowo w każdym bloku jest używane jako wskaźnik do następnego bloku. Pozostała część bloku przeznaczona na dane. Zalety: I Brak fragmentacji zewnętrznej I Wystarczy pamiętać adres dyskowy tylko pierwszego bloku I Łatwe zwiększanie rozmiaru pliku Wady: I Losowy dostęp do danych jest bardzo wolny I Dane przechowywane w blokach nie muszą być potęgą dwójki System plików Alokacja bazująca na jednokierunkowej liście z wykorzystaniem tabeli w pamięci Adresy poszczególnych bloków wchodzących w skład pliku umieszczone są w strukturze (węźle indeksowym), która ładowana jest do pamięci. Zalety: I Brak fragmentacji zewnętrznej I Łatwe zwiększanie rozmiaru pliku Wady: I Losowy dostęp do danych jest bardzo wolny System plików Wirtualne systemy plików Wirtualne systemy plików (VFS) - abstrakcyjna warstwa leżąca ponad rzeczywistym systemem plików. Jego zadaniem jest umożliwienie programom użytkownika na pracę niezależnie od używanego rzeczywistego systemu plików. VFS dostarcza jednolity interfejs wspólny dla wszystkich systemów operacyjnych obsługiwanych przez jądro systemu operacyjnego. System plików Księgujące systemy plików Systemy księgujące (ang. journaling file systems) najpierw zapisują jakie operacje mają zostać wykonane, a dopiero później je wykonują. Mechanizm stosowany między innymi w systemach NTFS i ext3. Możliwe stosowanie bloków transakcji (wykonywane wszystkie operacje w transakcji lub żadna). System wejścia-wyjścia System wejścia-wyjścia - system odpowiedzialny za komunikację z urządzeniami zewnętrznymi, podłączanymi do komputera. System wejścia-wyjścia Jednolity interfejs urządzeń Aby system operacyjny mógł współpracować z szerokim zbiorem urządzeń, dedykowane im sterowniki muszą dostarczyć zbiór funkcji określonych przez system dla danej klasy urządzeń (jednolity interfejs zgodny z systemem operacyjnym). Często sterowniki zawierają tabelę zawierającą adresy do wymaganych funkcji. System wejścia-wyjścia Rodzaje urządzeń pod względem dostępu do danych Urządzenia wejścia - wyjścia dzielone są pod względem sposobu dostępu do danych: I urządzenia blokowe - zawierają wiele bloków danych i które można adresować niezależnie (np. dyski) I urządzenia znakowe - generują lub akceptują strumień danych (np. klawiatura, drukarka) System wejścia-wyjścia Warstwy systemu wejścia-wyjścia Odpowiedź wejścia-wyjścia Warstwa Żądanie wejścia-wyjścia Funkcja wejścia wyjścia Procesy użytkownika Wykonywanie wywołań wejścia-wyjścia; formatowanie wejścia-wyjścia, spooling Oprogramowanie niezależne od urządzenia Nadawanie nazw, zabezpieczenie, blokowanie, buforowane, przydzielanie Sterowniki urządzeń Konfiguracja rejestrów urządzeń, sprawdzanie statusu Procedury obsługi przerwań Aktywacja sterownika po zakończeniu operacji wejścia-wyjścia Sprzęt Wykonywanie operacji wejścia-wyjścia System wejścia-wyjścia Sposoby komunikacji z urządzeniami I Rejestry I Zmapowanie do pamięci I Pulling I Przerwania I Direct Memory Access System wejścia-wyjścia Rejestry I Komunikacja odbywa się poprzez rejestry przydzielone dla każdego portu. I Rejestry 1 - 4 bajtowe. I Typowo 4 podstawowe: Data In, Data Out, Status, Control. I Patrz Wishbone :) System wejścia-wyjścia Zmapowanie do pamięci I Przydzielony obszar pamięci reprezentuje urządzenie. I Urządzenia potzrebujące przesłać dużo i szybko (np. karty graficzne). I Nie wyklucza używania również rejestrów. System wejścia-wyjścia Pulling I Host sprawdza Busy bit. I Wpisuje dane, ustawia bit zapisu, ustawia bit Command Ready. I Urządzenie sprawdza bit Command Ready, ustawia Busy bit. I Sprawdza bit zapisu, odczytuje dane. I Czyści bit błędu, Command Ready oraz Busy. System wejścia-wyjścia Przerwania I Wystawienie przez urządzenie przerwania. I Obsłużenie go przez procesor. I Powrót do normalnej pracy. I Przerwania mają priorytety. System wejścia-wyjścia DMA Specjalny kontroler DMA kopiuje całe obszary danych bezpośrednio do pamięci. I Urządzenie (np. dysk) wskazuje skąd, ile i gdzie skopiować. I DMA Conroller wykonuje kopiowanie. I DMAC powiadmia przerwaniem CPU gdzie znajdują się dane. I W czasie działania DMA CPU nie ma dostępu do szyny PCI czyli między innymi do pamięci RAM, musi opierać się tylko na cachu L1 i L2 oraz rejestrach. I Zabronione dla procesów użytkonika ze względów bezpieczeństwa. System wejścia-wyjścia Realizacja w Windows Rysunek: Realizacja sterowników w Windows Podsumowanie Podsumowując, nowoczesny system operacyjny powinien: I obsługiwać konfiguracje wieloprocesorowe I być wielozadaniowy I separować zadania jądra od zadań realizowanych przez użytkownika (kernelmode i usermode) I obsługiwać I/O I umożliwiać łatwy dostęp do plików I obsługiwać sieć I mieć wygodny UI I zapewniać bezpieczeństwo danych