Struktury systemów operacyjnych Usługi systemu operacyjnego. Składowe systemu. Wywołania systemowe. Programy systemowe. Projektowanie i implementacja systemu. Generowanie i rozruch systemu. Struktura systemu operacyjnego. Maszyny wirtualne. Wiesław Płaczek Systemy Operacyjne: Wykład 2 1
Usługi systemu operacyjnego Interfejs użytkownika służy do komunikacji między użytkownikiem a systemem; może przybierać formy: interfejsu linii komand (command-line interface CLI), interfejsu wsadowego (batch interface), graficznego interfejsu użytkownika (graphical user interface GUI). Wykonywanie programów zdolność systemu operacyjnego do ładowania programów do pamięci i ich wykonywania. Operacje WE/WY ponieważ program użytkownika nie może bezpośrednio wykonywać operacji WE/WY, system operacyjny musi dostarczać środki do ich wykonywania. Zarządzanie systemem plików programy muszą mieć możliwość czytania i pisania w plikach, a także tworzenia i usuwania plików przy użyciu ich nazw; wiele systemów operacyjnych dostarcza więcej niż jeden system plików. Komunikacja wymiana informacji między procesami wykonywanymi albo w tym samym komputerze albo w różnych systemach komputerowych. Ø Zaimplementowana za pomocą pamięci dzielonej (wspólnej) (shared memory) lub techniki przekazywania komunikatów (message passing), w której pakiety informacji przesyłane są między procesami a systemem operacyjnym. Wykrywanie błędów zapewnienie poprawnego przebiegu obliczeń poprzez wykrywanie i obsługę błędów w działaniu CPU i pamięci, w urządzeniach WE/WY lub programach użytkownika. Wiesław Płaczek Systemy Operacyjne: Wykład 2 2
Dodatkowe funkcje systemu operacyjnego Ø Istnieje dodatkowy zbiór funkcji systemu operacyjnego przeznaczonych nie do pomagania użytkownikowi, ale do optymalizacji działania samego systemu. Przydzielanie zasobów (resource allocation) alokacja zasobów (CPU, pamięć, pliki, urządzenia WE/WY) do wielu użytkowników i wielu wykonywanych zadań. Rozliczanie (accounting) przechowywanie i śledzenie informacji o tym, którzy użytkownicy i w jakim stopniu korzystają z poszczególnych zasobów. Ochrona (protection) zapewnienie nadzoru nad wszystkimi dostępami do zasobów systemu. Ważne jest również bezpieczeństwo (security) systemu wobec niepożądanych czynników zewnętrznych. Wiesław Płaczek Systemy Operacyjne: Wykład 2 3
Składowe systemu operacyjnego Zarządzanie procesami. Zarządzanie pamięcią operacyjną. Zarządzanie plikami. Zarządzanie systemem wejścia-wyjścia. Zarządzanie pamięcią pomocniczą. Praca sieciowa. System ochrony. System interpretacji poleceń. Wiesław Płaczek Systemy Operacyjne: Wykład 2 4
Zarządzanie procesami Proces program, który jest wykonywany. Ø Aby wypełnić swoje zadanie, proces potrzebuje pewnych zasobów: czas procesora, pamięć, pliki, urządzenie WE/ WY itd. System operacyjny jest odpowiedzialny za następujące czynności związane z zarządzaniem procesami: Tworzenie i usuwanie procesów (użytkowych, systemowych); Wstrzymywanie i wznawianie procesów; Dostarczanie mechanizmów do: ü Synchronizacji procesów; ü Komunikacji międzyprocesowej; ü Obsługi zakleszczeń. Wiesław Płaczek Systemy Operacyjne: Wykład 2 5
Zarządzanie pamięcią operacyjną Pamięć operacyjna duża tablica słów lub bajtów, z których każde(y) ma swój adres. Ø Jest magazynem szybko dostępnych danych współdzielonych przez CPU i urządzenia WE/WY. Ø Jest to pamięć ulotna traci swoją zawartość w przypadku odcięcia zasilania. W odniesieniu do zarządzania pamięcią system operacyjny jest odpowiedzialny za następujące czynności: Utrzymywanie informacji o tym, które obszary pamięci są aktualnie zajęte i przez kogo; Decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów pamięci; Przydzielanie i zwalnianie obszarów pamięci w zależności od potrzeb. Wiesław Płaczek Systemy Operacyjne: Wykład 2 6
Zarządzanie plikami Plik (file) zbiór powiązanych ze sobą informacji zdefiniowanych przez jego twórcę. Ø W plikach zazwyczaj przechowywane są programy (zarówno w postaci źródłowej, jak i wykonawczej) oraz dane; Ø Zwykle pliki zorganizowane są w katalogi; Ø Najczęściej pliki przechowuje się na dyskach magnetycznych, dyskach optycznych, obecnie też coraz częściej na nośnikach pamięci flash, np. solid-state drive (SSD), a rzadziej już na taśmach magnetycznych. W odniesieniu do zarządzania plikami system operacyjny jest odpowiedzialny za następujące czynności: Tworzenie i usuwanie plików; Tworzenie i usuwanie katalogów; Dostarczanie elementarnych operacji do operacji na plikach i katalogach; Odwzorowywanie plików na obszary pamięci pomocniczej; Umieszczanie plików na trwałych nośnikach pamięci. Wiesław Płaczek Systemy Operacyjne: Wykład 2 7
Zarządzanie systemem WE/WY Jednym z celów systemu operacyjnego jest ukrywanie przed użytkownikiem (czasem też przed większością samego systemu operacyjnego) szczegółów dotyczących sprzętu, m.in. WE/WY. Ø Wiele systemów ma specjalne podsystemy WE/WY.. System WE/WY składa się z: Systemu zarządzania pamięcią: buforowanie, przechowywanie podręczne, spooling; Ogólnego interfejsu do modułów sterujących urządzeń; Modułów sterujących (programów obsługi) dla poszczególnych urządzeń sprzętowych. Ø Właściwości danego urządzenia zna tylko odpowiadający mu moduł sterujący (device driver). Wiesław Płaczek Systemy Operacyjne: Wykład 2 8
Zarządzanie pamięcią pomocniczą Ponieważ pamięć operacyjna jest ulotna i za mała by pomieścić wszystkie dane i programy, system komputerowy musi dostarczać pamięć pomocniczą jako zaplecze dla pamięci operacyjnej. Większość współczesnych systemów komputerowych używa dysków jako podstawowego medium do magazynowania zarówno danych, jak i programów. System operacyjny odpowiada za następujące czynności związane z zarządzaniem dyskami: Zarządzanie wolnymi obszarami; Przydział pamięci dyskowej; Planowanie dostępu do dysku. Ø Wydajność pamięci pomocniczej może mieć znaczny wpływ na wydajność całego systemu komputerowego (na ogół pamięć ta jest często używana podczas pracy komputera). Wiesław Płaczek Systemy Operacyjne: Wykład 2 9
Praca sieciowa (systemy rozproszone) System rozproszony jest zbiorem procesorów, które nie dzielą pamięci, urządzeń zewnętrznych ani zegara każdy procesor ma swoją lokalną pamięć itd. Procesory w systemie połączone są za pomocą sieci komunikacyjnej (szybkie szyny danych, linie telefoniczne, łącza bezprzewodowe). Komunikacja odbywa się przy użyciu protokołu (zbiór reguł używanych przez węzły komunikacyjne przy wymianie informacji). System rozproszony umożliwia użytkownikowi dostęp do różnych zasobów. Dostęp do dzielonych zasobów pozwala na: przyspieszanie obliczeń, większą funkcjonalność, zwiększanie dostępności danych; podniesienie niezawodności. Wiesław Płaczek Systemy Operacyjne: Wykład 2 10
System ochrony i bezpieczeństwa Ochrona i bezpieczeństwo mechanizm nadzorowania dostępu programów, procesów lub użytkowników do zasobów zarówno systemu, jak i użytkowników. Ø Każdy wielozadaniowy, wielodostępny i współbieżny system operacyjny musi dostarczać sposoby ochrony procesów przed ich wzajemnym niepożądanym oddziaływaniem. Mechanizm ochrony i bezpieczeństwa musi: Rozróżniać między dostępem autoryzowanym a nieautoryzowanym; Określać co i jakiej ma podlegać ochronie; Zawierać środki do wymuszania zaprowadzonych ustaleń. Wiesław Płaczek Systemy Operacyjne: Wykład 2 11
System interpretacji poleceń Wiele poleceń jest przekazywanych do systemu operacyjnego za pomocą instrukcji sterujących (control statements), które dotyczą: tworzenia procesów i zarządzania nimi; obsługi WE/WY; zarządzania pamięcią pomocniczą i operacyjną; dostępu do systemu plików; ochrony; pracy sieciowej (networking). Program, który czyta i interpretuje instrukcje sterujące nosi różne nazwy: Interpreter wiersza poleceń (command-line interpreter); Powłoka (shell) np. w systemie UNIX. Ø Jego zadanie: pobrać następną instrukcję i wykonać ją. ü W niektórych systemach jest częścią jądra, w innych (np. Windows XP/Vista/7/8, UNIX) jest specjalnym programem, wykonywanym przy rozpoczynaniu zadania lub przy logowaniu się w systemie. Ø Graficzny interfejs użytkownika (graphical user interface GUI) przyjazny dla użytkownika interfejs z systemem oparty o system okienkowy, dostarczany przez większość współczesnych systemów operacyjnych; komendy są wybierane z menu i wykonywane przy użyciu myszy. Wiesław Płaczek Systemy Operacyjne: Wykład 2 12
Wywołania systemowe Funkcje systemowe, inaczej: wywołania systemowe (system calls) tworzą interfejs między wykonywanym programem a usługami dostarczanymi przez system operacyjny. Na ogół dostępne jako funkcje napisane w języku C i C++. Niektóre polecenia niskiego poziomu (np. zawierające bezpośredni dostęp do sprzętu) mogą być napisane w asemblerze. Ø Typowo programiści aplikacji projektują programy stosownie do interfejsu programisty aplikacji (application programmer interface API), który specyfikuje zbiór udostępnianych im przez system funkcji, łącznie z ich parametrami oraz zwracanymi wartościami. Ø Trzy najpowszechniejsze API to: Win32 API dla MS Windows, POSIX API dla systemów uniksowych (np. Solaris, Linux, Mac OS X) i Java API dla maszyny wirtualnej Javy (JVM). Istnieją zasadniczo trzy metody przekazywania parametrów między wykonywanym programem a systemem operacyjnym: Przekazanie parametrów bezpośrednio do rejestrów procesora. Umieszczenie parametrów w tablicy w pamięci i przekazanie jej adresu za pośrednictwem rejestru (np. w systemach Linux i Solaris). Składanie parametrów na stosie przez program i zdejmowanie ich stamtąd przez system operacyjny. Wiesław Płaczek Systemy Operacyjne: Wykład 2 13
Kategorie wywołań systemowych Nadzorowanie procesów: Ø Utworzenie, załadowanie, wykonanie, zakończenie, zaniechanie, określenie atrybutów, procesu; przydział i zwolnienie pamięci itd. Operacje na plikach: Ø Utworzenie, usunięcie, otwarcie, zamknięcie, czytanie, pisanie, określenie/ pobranie atrybutów pliku itp. Zarządzanie urządzeniami: Ø Zamówienie, zwolnienie, logiczne przyłączenie i odłączenie, czytanie, pisanie, określenie/pobranie atrybutów urządzenia itp. Utrzymywanie informacji: Ø Pobranie/ustawienie: czasu, daty, danych systemowych, atrybutów procesu/pliku/urządzenia; informacje o procesach, zrzuty pamięci itp. Komunikacja: Ø Utworzenie/usunięcie połączenia komunikacyjnego, nadawanie/odbieranie komunikatów, przekazanie informacji o stanie, przyłączanie/odłączanie urządzeń zdalnych. Ochrona: Ø Określanie/udostępnianie praw dostępu do zasobów, takich jak pliki, dyski. Wiesław Płaczek Systemy Operacyjne: Wykład 2 14
Przykłady nadzorowania procesów System MS-DOS System UNIX Wolna pamięć Interpreter poleceń Jądro Rozruch systemu Wolna pamięć Proces Interpreter poleceń Jądro Wykonywanie programu Proces D Wolna pamięć Proces C Interpreter Proces B Jądro Wykonywanie wielu programów Wiesław Płaczek Systemy Operacyjne: Wykład 2 15
Modele komunikacji międzyprocesowej Przekazywanie komunikatów Pamięć dzielona Proces A Proces B K K Proces A Pamięć dzielona Proces B 1 2 2 1 Jądro K Jądro Ø Przekazywanie komunikatów wygodne do wymiany mniejszej ilości danych w komunikacji międzykomputerowej. Ø Pamięć dzielona zapewnia maksymalną szybkość i wygodę komunikacji w obrębie jednego komputera. Wiesław Płaczek Systemy Operacyjne: Wykład 2 16
Programy systemowe Programy systemowe (system programs/utilities) tworzą wygodne środowisko do rozwoju i wykonywania innych programów niektóre są po prostu interfejsami użytkownika do wywołań systemowych, inne są bardziej złożone. Można je podzielić na następujące kategorie: Zarządzanie plikami (tworzenie, usuwanie, kopiowanie itd.); Informowanie o stanie systemu (data i czas, wielkość pamięci itp.); Tworzenie i modyfikowanie plików (edytory); Zaplecze języków programowania (kompilatory, asemblery, interpretery popularnych języków, jak C/C++, Java, Perl, ); Ładowanie i wykonywanie programów (konsolidatory/linkery, programy ładujące i uruchomieniowe, ); Komunikacja (realizacja mechanizmów połączeń między procesami, użytkownikami, różnymi systemami komputerowymi); Ø Ponadto większość systemów operacyjnych dostarcza wiele programów aplikacyjnych: przeglądarki WWW, programy przetwarzania tekstu, arkusze kalkulacyjne, systemy baz danych, pakiety graficzne, programy audio i wideo, gry, programy do komunikacji sieciowej, różnorodne narzędzia i pomoce,. v Sposób, w jaki większość użytkowników postrzega system operacyjny, jest określany w większym stopniu przez programy systemowe niż przez wywołania systemowe. Wiesław Płaczek Systemy Operacyjne: Wykład 2 17
v v Projektowanie systemu Cele systemu: 1. Cele użytkownika system operacyjny powinien być wygodny i łatwy w użyciu, łatwy do nauki, niezawodny, bezpieczny i szybki. 2. Cele systemu system operacyjny powinien być łatwy do zaprojektowania, realizacji i pielęgnowania, a także elastyczny niezawodny, wolny od błędów i wydajny. Mechanizmy a polityka: Mechanizmy określają jak coś zrealizować (np. ochronę procesora zrealizować przez czasomierz), natomiast polityka decyduje o tym co będzie stosowane w praktyce (np. na jak długo będzie ustawiany czasomierz dla poszczególnych użytkowników). Oddzielenie polityki od mechanizmów jest bardzo ważną zasadą daje maksimum elastyczności, jeżeli decyzje polityczne mają być później zmieniane (np. systemy z mikrojądrem urzeczywistniają tę zasadę w sposób skrajny, realizując jedynie podstawowy zbiór elementarnych działań składowych; na przeciwnym krańcu są systemy takie jak MS Windows i Mac OS X, gdzie zarówno mechanizmy, jak i polityka są zakodowane w systemie, żeby określić jego ogólny wygląd i odbiór). Wiesław Płaczek Systemy Operacyjne: Wykład 2 18
Implementacja systemu Ø J L E ü ü ü ü Dawniej systemy operacyjne były pisane zwykle w językach asemblerowych, obecnie natomiast pisze się je często w językach wyższego poziomu, takich jak C lub C++ (np. UNIX, Linux czy Windows NT napisano niemal w całości w języku C; w asemblerze zakodowano tylko małe fragmenty). Zalety używania języka wyższego poziomu: Programuje się szybciej; Kod jest bardziej zwarty; Kod jest łatwiejszy do zrozumienia i sprawdzenia; System operacyjny jest znacznie łatwiejszy do przenoszenia (instalowania na innym sprzęcie). Wady: Spowolnienie działania (nie zawsze wydajne kompilatory); Większe zapotrzebowanie na pamięć. Najbardziej newralgiczne części systemu (tzw. wąskie gardła) mogą być (prze)pisane w asemblerze. Wiesław Płaczek Systemy Operacyjne: Wykład 2 19
Generowanie systemu Systemy operacyjne zwykle projektowane są by działały na pewnej klasie maszyn w rozmaitych instalacjach ze zmienną konfiguracją urządzeń. System operacyjny musi być skonfigurowany (wygenerowany) dla każdej specyficznej instalacji komputerowej proces ten nazywa się generowaniem systemu (system generation SYSGEN). Program SYSGEN zbiera informacje dotyczące specyfiki konfiguracji danego sprzętu (czyta z pliku, pyta operatora bądź Ø Ø Ø sam sonduje sprzęt), a następnie generuje system. System operacyjny może być kompilowany z kodu źródłowego i dedykowany dla konkretnego sprzętu ( szyty na miarę ). Innym rozwiązaniem jest stworzenie odpowiednich tabel konfiguracyjnych w pierwszym etapie działania programu SYSGEN i generowanie systemu z prekompilowanych modułów prostsze i szybsze! Skrajnym przypadkiem jest system całkowicie sterowany tabelami kod jest zawsze częścią systemu, a wybór modułu następuje w czasie wykonania, a nie kompilacji czy konsolidacji; SYSGEN tworzenie tabel. Wiesław Płaczek Systemy Operacyjne: Wykład 2 20
Rozruch systemu W momencie rozruchu systemu rejestr rozkazów jest ładowany z predefiniowanego miejsca pamięci, w którym znajduje się początkowy program rozruchowy (initial bootstrap program/loader). Program rozruchowy może wykonywać różnorodne zadania, jak np. diagnostyka komputera, inicjalizacja wszystkich składowych systemu od rejestrów CPU po sterowniki urządzeń i zawartość pamięci operacyjnej; wcześniej czy później uruchamia on system operacyjny. Małe systemy operacyjne, np. w urządzeniach typu PDA, mogą w całości znajdować się w pamięci ROM. Aby umożliwić zmianę kodu rozruchowego bez konieczności wymiany kości pamięci ROM, niektóre systemy korzystają z pamięci EPROM (erasable programmable read-only memory), która normalnie jest tylko do odczytu, ale przy pomocy specjalnej komendy można uczynić ją zdolną do zapisu. W przypadku dużych systemów operacyjnych (np. MS Windows, Mac OS X, UNIX, Linux) sam system operacyjny znajduje się na dysku program rozruchowy czyta i uruchamia kod z bloku rozruchowego (boot block) znajdującego się w ustalonym miejscu na dysku (np. blok zerowy), ten kod z kolei najczęściej znajduje na dysku resztę programu rozruchowego (np. GRUB w systemie Linux), a ten dopiero uruchamia system. Dysk z partycją rozruchową nazywa się dyskiem rozruchowym (boot disk) lub dyskiem systemowym (system disk). Wiesław Płaczek Systemy Operacyjne: Wykład 2 21
Struktura systemu MS-DOS napisany pod kątem osiągnięcia maksymalnej funkcjonalności przy oszczędności miejsca: Brak podziału na moduły; Interfejsy i poziomy funkcjonalne nie są wyraźnie wydzielone. UNIX początkowo ograniczany przez cechy sprzętowe miał ograniczoną strukturalizację; składał się z dwu odrębnych części: v Jądro (kernel): Składa się z wszystkiego poniżej interfejsu funkcji systemowych a powyżej sprzętu; Udostępnia system plików, planowanie przydziału procesora, zarządzanie pamięcią i inne czynności systemu operacyjnego (bardzo wiele funkcji zebranych na jednym poziomie). v Programy systemowe korzystają z udostępnianych przez jądro funkcji systemowych dla wykonywania użytecznych działań (np. kompilacja programów, operacje na plikach). Wiesław Płaczek Systemy Operacyjne: Wykład 2 22
Warstwowa struktura systemu MS-DOS Programy użytkowe Rezydentne programy systemowe Moduły obsługi urządzeń z poziomu MS-DOS Moduły obsługi urządzeń w pamięci ROM BIOS Wiesław Płaczek Systemy Operacyjne: Wykład 2 23
Tradycyjna struktura systemu UNIX Sygnały; Obsługa terminali; System znakowego WE/WY; Użytkownicy Powłoki i polecenia; Kompilatory i interpretery; Biblioteki systemowe; J Ą D R O Moduły sterujące terminali; Interfejs funkcji systemowych jądra System plików; Wymiana; System blokowego WE/WY; Moduły sterujące Planowanie przydziału procesora; Zastępowanie stron; Stronicowanie na żądanie; dysków i taśm; Pamięć wirtualna; Interfejs między jądrem a sprzętem Sterowniki terminali; Sterowniki urządzeń; Sterowniki pamięci; Terminale; Dyski i taśmy; Pamięć operacyjna; Wiesław Płaczek Systemy Operacyjne: Wykład 2 24
Struktura warstwowa (Layered Structure) System operacyjny jest podzielony na warstwy (poziomy). Ø Najniższą warstwę (warstwę 0) stanowi sprzęt; najwyższą warstwą (warstwą N) jest interfejs użytkownika. Warstwy są tak skonstruowane, że każda używa funkcji (operacji) i korzysta z usług tylko niżej położonych warstw. Ø Modularność i ukrywanie operacji, danych itd. J Zalety: ü Łatwiejsze uruchamianie i testowanie systemu (warstwa po warstwie, począwszy od najniższej) upraszcza projektowanie i implementację systemu. L Wady: ü Główna trudność: odpowiednie zdefiniowanie poszczególnych warstw (nie zawsze jest oczywiste co powinna zawierać dana warstwa). ü Mniejsza wydajność (konieczność przechodzenia od warstwy do warstwy). Wiesław Płaczek Systemy Operacyjne: Wykład 2 25
Warstwa systemu operacyjnego Nowe operacje.. Warstwa M Ukryte operacje.. Warstwa M 1 Istniejące operacje. Wiesław Płaczek Systemy Operacyjne: Wykład 2 26
Struktura warstw systemu OS/2 (IBM) Aplikacja Aplikacja Aplikacja Interfejs programowania aplikacji (API) Rozszerzenie API Podsystem Podsystem Podsystem Moduł sterujący urządzenia Jądro systemu Moduł sterujący urządzenia Zarządzanie pamięcią Ekspediowanie zadań Zarządzanie urządzeniami Moduł sterujący urządzenia Moduł sterujący urządzenia Wiesław Płaczek Systemy Operacyjne: Wykład 2 27
Mikrojądra Jądro systemu zredukowane do małego zbioru funkcji rdzeniowych, realizujących jedynie mały zbiór niezbędnych operacji elementarnych tzw. mikrojądro (microkernel). Wszystkie mniej ważne operacje przeniesione do programów systemowych lub programów z poziomu użytkownika. Komunikacja odbywa się między modułami użytkownika przy użyciu metody przekazywania komunikatów (klient-serwer). J Zalety: ü System operacyjny łatwiejszy do rozszerzania; ü SO łatwiejszy do przenoszenia na nowe architektury sprzętowe; ü SO bardziej niezawodny (mniej kodu wykonywanego w trybie jądra); ü Większe bezpieczeństwo systemu. q Przykłady: system Mach (wersja systemu UNIX opracowana przez Carnegie Mellon University w połowie lat 1980-tych), Tru64 UNIX (DEC/COMPAQ), MS Windows NT 3.1, MINIX (A. S. Tanenbaum), system czasu rzeczywistego QNX. Wiesław Płaczek Systemy Operacyjne: Wykład 2 28
Architektura typowego mikrojądra Program aplikacyjny System plików Moduł obsługi urządzenia tryb użytkownika Komunikaty Komunikaty Komunikacja międzyprocesowa Zarzadzanie pamięcią Mikrojądro Planowanie CPU tryb jądra Sprzęt Wiesław Płaczek Systemy Operacyjne: Wykład 2 29
Struktura Mac OS X Graficzny interfejs użytkownika (GUI) Aqua Środowiska aplikacji oraz usługi Java Cocoa Quicktime BSD Środowisko jądra Narzędzia wejścia-wyjścia Mach BSD Rozszerzenia jądra Ø System Mac OS X ma strukturę hybrydową środowisko jądra składa się zasadniczo z mikrojądra Mach i jądra BSD. Wiesław Płaczek Systemy Operacyjne: Wykład 2 30
Hybrydowa struktura systemu Google Android Aplikacje Środowisko rozwoju aplikacji SQLite Zarządca powierzchni webkit Biblioteki opengl Środowisko mediów libc Środowisko czasu wykonania Biblioteki rdzeniowe Maszyna wirtualna Dalvik Jądro Linux Wiesław Płaczek Systemy Operacyjne: Wykład 2 31
Struktura systemu z modułami jądra Ø Stosowanie technik obiektowych przy projektowaniu nowoczesnych systemów operacyjnych prowadzi do tworzenia modularnych jąder. v Jądro takie posiada zbiór rdzeniowych komponent i dynamicznie dołącza dodatkowe usługi albo w trakcie uruchamiania systemu, albo w trakcie jego działania. v Strategia taka oparta jest o dynamicznie ładowalne moduły jądra i jest powszechna w nowoczesnych implementacjach systemu UNIX, takich jak Solaris, Linux, Mac OS X. q Np. struktura systemu Solaris jest zorganizowana wokół rdzeniowego jądra z siedmioma typami ładowalnych modułów jądra: Klasy planowania; Systemy plików; Ładowalne wywołania systemowe; Formaty wykonawcze; Moduły STREAMS; Sterowniki urządzeń i szyn; Różnorodne moduły. E Struktura tego typu jest bardziej elastyczna od struktury warstwowej; przypomina strukturę z mikrojądrem, ale jest od niej bardziej wydajna. Wiesław Płaczek Systemy Operacyjne: Wykład 2 32
Ładowalne moduły systemu Solaris Sterowniki urządzeń i szyn Klasy planowania Systemy plików Różnorodne moduły Rdzeniowe jądro Solaris Ładowalne wywołania systemowe Moduły STREAMS Formaty wykonawcze Wiesław Płaczek Systemy Operacyjne: Wykład 2 33
Maszyny wirtualne Maszyna wirtualna (virtual machine) jest logiczną konkluzją podejścia warstwowego; po raz pierwszy zrealizowana przez firmę IBM w systemie VM (1972) dla komputerów typu mainframe, a obecnie przeżywa swój renesans. Maszyna wirtualna tworzy interfejs identyczny z podstawowym sprzętem (wirtualna kopia komputera). Zasoby fizycznego komputera są dzielone w celu utworzenia maszyn wirtualnych. Każdy proces gość (guest process), którym faktycznie jest system operacyjny, otrzymuje do dyspozycji (wirtualną) kopię komputera. W ten sposób na jednej maszynie fizycznej może działać współbieżnie wiele systemów operacyjnych. Ø Ostatnio intensywnie rozwijana jest technologia maszyn wirtualnych umożliwiających instalowanie w danym systemie operacyjnym zwanym gospodarzem (host system) innych systemów operacyjnych (guest systems); są to aplikacje działające w trybie użytkownika, np. WMware, Parallels, Virtual Box itp. dla systemów: Windows, Linux, Mac OS X, FreeBSD itd. Ø Coraz popularniejszy ostatnio Cloud Computing (,,obliczenia w Chmurze ) oparty jest o wirtualizację na poziomie systemów klastrowych, a nawet systemów rozproszonych, np. firmy Amazon, Google, czy coraz częściej tworzone tzw.,,prywatne Chmury w firmach i instytucjach, np. UJ. Wiesław Płaczek Systemy Operacyjne: Wykład 2 34
Modele systemu Procesy Procesy Procesy Procesy Jądro Sprzęt Maszyna niewirtualna Interfejs programowy Jądro Jądro Jądro VM1 VM2 VM3 Implementacja maszyny wirtualnej Sprzęt Maszyna wirtualna (np. system IBM VM) Wiesław Płaczek Systemy Operacyjne: Wykład 2 35
Zalety/Wady maszyn wirtualnych J Możliwość dzielenia tego samego sprzętu przez wiele różnych środowisk wykonawczych (systemów operacyjnych) działających współbieżnie. J Oddzielenie warstwy aplikacyjnej od szczegółów sprzętowych, np. Chmura. J Koncepcja maszyn wirtualnych dostarcza pełną ochronę zasobów systemowych, gdyż każda maszyna wirtualna jest odizolowana od innych maszyn wirtualnych (choć mogą się komunikować np. przez wirtualną sieć). J System maszyn wirtualnych stanowi znakomitą platformę do badań i rozwoju systemów operacyjnych (rozwój systemu operacyjnego dokonuje się na maszynie wirtualnej zamiast na fizycznej maszynie, a zatem nie zaburza normalnego działania systemu). J Wirtualizacja może mieć wsparcie sprzętowe, np. wiele procesorów AMD posiada dwa tryby operacji: gospodarza (host) i gościa (guest). L Koncepcja maszyny wirtualnej jest trudna do implementacji zrealizowanie dokładnej kopii maszyny bazowej wymaga sporego wysiłku. L Wzajemna izolacja maszyn wirtualnych uniemożliwia bezpośrednie dzielenie zasobów (można wprowadzić komunikację poprzez wirtualną sieć lub dzielony system plików). L Mniejsza wydajność (procesor musi obsługiwać wiele maszyn wirtualnych przełączanie kontekstu). Wiesław Płaczek Systemy Operacyjne: Wykład 2 36
Typy maszyn wirtualnych Hipernadzorca typu 1 (hypervisor type 1) warstwa oprogramowania maszyny wirtualnej implementowana bezpośrednio na sprzęcie (omówiony dotąd typ maszyn wirtualnych, np. IBM VM). Hipernadzorca typu 2 (hypervisor type 2) oprogramowanie maszyny wirtualnej implementowane jako aplikacja działająca w trybie użytkownika jakiegoś systemu operacyjnego, zwanego systemem gospodarza (host system) i dająca możliwość uruchamiania współbieżnie wielu systemów gości (guest systems), np. VMware, Virtual Box, Parallels itd. Parawirtualizacja (para-virtualization) modyfikacja kodu źródłowego systemu operacyjnego gościa, tak aby zamiast wykonywać uprzywilejowane (wrażliwe) rozkazy, wykonywał wywołania funkcji hipernadzorcy (maszyny wirtualnej) taki zbiór wywołań tworzy interfejs API (application programming interface) dla systemów gości, np. system Sun Solaris 10 posiada warstwę wirtualnych pojemników (containers) i stref (zones) pomiędzy jądrem a aplikacjami. Zalety: mniejsza warstwa wirtualizacji, wydajniejsze użycie zasobów. Wady: potrzeba modyfikacji systemów operacyjnych gości. Symulacja emulacja sprzętu komputerowego, np. nie istniejącej już architektury, w warstwie oprogramowania, tak że rozkazy emulowanej architektury tłumaczone są na rozkazy rzeczywistego sprzętu. Powolne! Wiesław Płaczek Systemy Operacyjne: Wykład 2 37
Przykład architektury maszyny wirtualnej hipernadzorcy typu 2 aplikacja aplikacja aplikacja aplikacja System operacyjny gościa: FreeBSD wirtualny CPU wirtualna pamięć wirt. urządzenia System operacyjny gościa: Windows XP wirtualny CPU wirtualna pamięć wirt. urządzenia System operacyjny gościa: Windows 8 wirtualny CPU wirtualna pamięć wirt. urządzenia Warstwa wirtualizacji System operacyjny gospodarza, np. Linux Sprzęt CPU Pamięć Urządzenia Wiesław Płaczek Systemy Operacyjne: Wykład 2 38
Maszyna wirtualna Javy Kompilator języka Java (Sun Microsystems) wytwarza niezależny od architektury kod pośredni, tzw. bajtokod (bytecode), wykonywany przez wirtualną maszynę Javy (Java Virtual Machine JVM). Aby program w języku Java mógł być wykonywany na danej platformie, musi być na niej zainstalowana JVM (na SO, na sprzęcie lub w przeglądarce WWW). JVM jest specyfikacją abstrakcyjnego komputera; składa się z: Ładowacza klas (class loader); Weryfikatora klas (class verifier); Interpretera działającego w czasie wykonywania (runtime interpreter). Kompilatory terminowe (Just-In-Time: JIT) przekształcają bajtokod w język maszynowy danego komputera w celu podniesienia wydajności; kiedy metoda Javy wywoływana jest po raz pierwszy, to jej bajtokod jest zamieniany na rdzenny język macierzystego systemu, a przy kolejnych wywołaniach tej metody uruchamiany jest jej rdzenny kod maszynowy zamiast bajtokodu. JVM jest implementowana w przeglądarkach internetowych. JVM może być także implementowana wprost na sprzęcie zaprojektowanym by wykonywać programy w języku Java specjalny chip wykonuje operacje bajtokodu Javy jako swój rdzenny kod. Ø Na podobnych zasadach opiera się platforma.net firmy Microsoft. Wiesław Płaczek Systemy Operacyjne: Wykład 2 39
Zagadnienia 1. Jakie najważniejsze usługi spełnia system operacyjny wobec użytkowników i ich programów oraz wobec samego siebie? 2. Na jakie podstawowe składowe można podzielić system operacyjny i jakie przydziela się im zadania? 3. Do czego służą, jak są implementowane i jakie są główne kategorie wywołań systemowych? 4. Jaką rolę pełnią programy systemowe i jaka jest ich relacja do wywołań systemowych? 5. Jakie są główne etapy tworzenia systemu operacyjnego, jakie są ich cele oraz jakich metod/środków używa się do realizacji tych celów? 6. Scharakteryzować i porównać ze sobą różne struktury systemów operacyjnych. Podać argumenty za i przeciw poszczególnym rozwiązaniom. 7. Co to są maszyny wirtualne i jakie są typy? Wymienić ich zalety i wady? Wiesław Płaczek Systemy Operacyjne: Wykład 2 40