Zbigniew S. Szewczak Podstawy Systemów Operacyjnych
Transkrypt
Zbigniew S. Szewczak Podstawy Systemów Operacyjnych
Zbigniew S. Szewczak Podstawy Systemów Operacyjnych Wykład 5 Struktura systemu operacyjnego Toruń, 2004 Odrabianie wykładów ☛czwartek, 1.04.2004, S7, g. 12.00 ☛czwartek, 15.04.2004, S7, g. 12.00 Struktura systemu operacyjnego ☛Składowe systemu ☛Usługi systemu operacyjnego ☛Funkcje systemowe ☛Programy systemowe ☛Struktury systemów ☛Maszyny wirtualne ☛Projektowanie i implementacja systemu ☛Generowanie systemu Składowe systemu ☛Zarządzanie procesami (ang. process management) ☛Zarządzanie pamięcią operacyjną (ang. main memory management) ☛Zarządzanie plikami (ang. file management) ☛Zarządzanie systemem we/wy (ang. I/O system management) ☛Zarządzanie pamięcią pomocniczą (ang. secondary-storage management) Składowe systemu (c.d) ☛Praca sieciowa (ang. networking) ☛System ochrony (ang. protection system) ☛System interpretacji poleceń (ang. commandinterpreter system ) Zarządzanie procesami ☛Proces to program, który jest wykonywany. Do realizacji swego celu proces potrzebuje zasobów: czasu procesora, pamięci, plików oraz we/wy. ☛Procesy mogą być systemowe i użytkowe ☛Proces jest jednostką pracy w systemie ☛System składa się ze zbioru procesów Zarządzanie procesami (c.d.) ☛Program nie jest procesem, jest elementem pasywnym, zaś proces jest jednostką aktywną ☛W odniesieniu do zarządzania procesami system operacyjny odpowiada za: ☛tworzenie i usuwanie procesów ☛wstrzymywanie i wznawianie procesów ☛synchronizację procesów ☛komunikację procesów ☛obsługę impasów, zakleszczeń (ang. deadlock) Zarządzanie pamięcią operacyjną ☛Pamięć jest wielką tablicą słów lub bajtów o przypisanych adresach. Pamięć stanowi magazyn szybko dostępnych danych wspólnie wykorzystywanych przez procesor i we/wy. ☛Pamięć operacyjna jest pamięcią ulotną ☛W odniesieniu do zarządzania pamięcią system odpowiada za ☛utrzymywanie tablicy zajętości pamięci ☛decydowanie o tym jakie procesy są ładowane do pamięci ☛przydzielanie i zwolnianie pamięci Zarządzanie plikami ☛Plik jest zbiorem powiązanych ze sobą informacji zdefiniowanych przez jego twórcę. Zwykle plik zawiera program (źródłowy lub wynikowy) albo dane ☛W odniesieniu do zarządzania plikami system odpowiada za ☛tworzenie i usuwanie plików i katalogów ☛dostarczanie elementarnych operacji na plikach i katalogach ☛odwzorowywanie plików na obszary pamięci pomocniczej ☛składowanie plików na trwałych nośnikach pamięci (ang. file backup) Zarządzanie systemem we/wy ☛System we/wy obejmuje ☛zarządzanie pamięcią: buforowanie, pamięć podręczna, spooling ☛ogólny interfejs do modułów sterujących urządzeń ☛moduły obsługi (ang. drivers) urządzeń sprzętowych Zarządzanie pamięcią pomocniczą ☛Pamięć operacyjna (ang. primary storage) jest ulotna i za mała aby pomieścić dane i programy dlatego komputer musi mieć pamięć pomocniczą (ang. secondary storage) ☛Większość współczesnych komputerów używa pamięci dyskowej dla danych i programów ☛W odniesieniu do zarządzania pamięcią dyskową system odpowiada za ☛zarządzanie obszarami wolnymi ☛przydzielanie pamięci ☛planowanie przydziału pamięci dyskowej Praca sieciowa ☛System rozproszony jest zbiorem procesorów, które nie dzielą pamięci, urządzeń zewnętrznych ani zegara. Każdy procesor ma własną pamięć lokalną ☛Procesory w systemie rozproszonym komunikują się za pomocą linii komunikacyjnych stanowiących elementy sieci komputerowych ☛System rozproszony umożliwia zdalny dostęp do zasobów różnych systemów komputerowych (na ogół jest to dostęp do plików) System ochrony ☛Ochrona jest mechanizmem nadzorowania dostępu programów, procesów lub użytkowników do zasobów komputera ☛Mechanizm ochrony musi ☛rozróżniać między prawomocnym (ang. authorized) i nieprawomocnym użyciem zasobów ☛określać co i na jakiej zasadzie podlega ochronie ☛posiadać środki do wymuszania zaprowadzonych ustaleń System interpretacji poleceń ☛Wiele poleceń jest przekazywanych do systemu za pomocą instrukcji sterujących (ang. control statements). Polecenia te dotyczą ☛tworzenia procesów i zarządzania nimi ☛obsługi wejścia/wyjścia ☛administrowania pamięcią pomocniczą i operacyjną ☛dostępu do plików ☛ochrony ☛pracy sieciowej System interpretacji poleceń (c.d.) ☛Program, który analizuje instrukcje sterujące nazywa się różnie ☛interpreter kart sterujących (ang. control-card interpreter) ☛interpreter wiersza poleceń(ang. command-line interpreter) ☛powłoka (ang. shell) (w UNIXie) Jego funkcja to pobranie i wykonanie następnej instrukcji sterującej wpisanej z klawiatury i wprowadzonej za pomocą klawisza Enter (Return) bądź wprowadzonej kliknieciem myszki na wybraną ikonę. Unix - realizacja poleceń ☛Interpreter poleceń: powłoka (ang. shell) ☛System wielozadaniowy ☛Wprowadzenie polecenia to zapoczątkownie procesu funkcją systemową fork i exec ☛Powłoka oczekuje na zakończenie procesu ☛Jeśli polecenie wykonuje się w tle (ang. background) to powłoka może przyjmować nowe polecenia ☛Proces wykonuje funkcję systemową exit ☛Powłoka może realizować nowe polecenie Przykład - prosty shell #define TRUE 1 while (TRUE) { /* pętla */ type_prompt( ); /* prompt */ read_command (command, parameters) /*czytaj komendę */ if (fork() != 0) { /* Kod rodzica */ waitpid( -1, &status, 0); } else { /* Kod potomka */ execve (command, parameters, 0); } } /* proces potomny */ /* czekaj */ /* wykonaj komendę */ Router Cisco - CLI System IOS Konfiguracja booting FLASH NVRAM ROM CPU sh flash sh processes CPU sh ver sh prot sh run sh conf interfejs szyny RAM IOS tablice routingu magistrala interfejs we/wy interfejs we/wy interfejs we/wy CPU CPU CPU sh int s0 Usługi systemu operacyjnego ☛Wykonanie programu - system powinien móc załadować program do pamięci i wykonać go ☛Operacje we/wy - ponieważ program użytkowy nie wykonuje operacji we/wy bezpośrednio więc system musi to oferować system ☛Manipulowanie systemem plików - program musi mieć możliwość (pod kontrolą) do czytania, pisania, tworzenia i usuwania plików Usługi systemu operacyjnego (c.d.) ☛Komunikacja - wymiana informacji pomiędzy procesami wykonywanymi na tym samym lub zdalnym komputerze np. za pomocą pamięci dzielonej (ang. shared memory) lub przekazywania komunikatów (ang. message passing) ☛Wykrywanie błędów - zapewnienie prawidłowści dziąłania komputera poprzez wykrywanie i obsługę wszystkich błędów w jednostce centralnej, pamięci operacyjnej, urządzeniach we/wy (np. błąd sumy kontrolnej) i w programie użytkownika (np. przekroczenie czasu) Dodatkowe funkcje systemu ☛Dodatkowe funkcje systemu nie są przeznaczone do pomagania użytkownikowi, lecz do optymalizacji działania samego systemu ☛przydzielanie zasobów dla wielu użytkowników i wielu zadań w tym samym czasie ☛rozliczanie - przechowywanie danych o tym, którzy użytkownicy i w jakim stopniu korzystają z poszczególnych zasobów komputera (statystyka użytkowania) ☛ochrona - zapewnienie aby cały dostęp do zasobów systemu odbywał się pod kontrolą np. dostęp przez modem po podaniu hasła Funkcje systemowe ☛Funkcje systemowe (ang. system calls) tworzą interfejs między wykonywanym programem a systemem operacyjnym ☛dostępne na poziomie języka maszynowego (asemblera) IBM/370: rozkaz SIO (start input/output) ☛pewne języki zastępują asembler w programowaniu systemowym i umożliwiają bezpośrednie wykonywanie funkcji systemowych (np. C, C++, Bliss, PL/360, PERL) ☛Win32 API (ang. Application Programm{er|ing} Interface) wielki zbiór procedur dostarczanych przez Microsoft, które umożliwiają realizację funkcji systemowych ☛Proste skopiowanie pliku jest w rzeczywistości skomplikowanym przedsięwzięciem Funkcje systemowe (c.d.) ☛Są trzy metody przekazywania parametrów między wykonywanym programem a systemem operacyjnym ☛umieszczenie parametrów w rejestrach jednostki centralnej ☛zapamiętanie parametrów w tablicy w pamięci operacyjnej i przekazanie adresu tej tablicy jako parametru w rejestrze ☛składowanie (ang. push) przez program parametrów na stosie (ang. stack) i zdejmowanie (ang. pop) ze stosu przez system operacyjny Przekazywanie parametrów za pomocą tablicy X Rejestr X: parametry funkcji systemowej pobranie adresu X użycie parametrów wywołanie funkcji z tablicy X systemowej 13 program użytkownika system operacyjny kod funkcji systemowej 13 Funkcje systemowe - podział ☛nadzorowanie procesów ☛operacje na plikach ☛operacje na urządzeniach ☛utrzymywanie informacji ☛komunikacja Nadzorowanie procesów ☛zakończenie (end), zaniechanie (abort) ☛załadowanie (load), wykonanie (execute) ☛utworzenie (create) i zakończenie (terminate) ☛pobranie (get) i ustawienie (set) atrybutów ☛czekanie czasowe (wait for time) ☛czekanie na zdarzenie (event), sygnał (signal) ☛przydział (allocate) i zwolnienie (free) pamięci Nadzorowanie procesów i zadań ☛Zrzuty zawartości (ang. dump) pamięci na dysk w przypadku błędu ☛Ślad działania programu (ang. trace) ☛tryb pracy jednokrokowy procesora (ang. single step) wejście w tryb obsługi pułapki (ang. trap) po wykonaniu każdej instrukcji ☛Dokąd przekazać sterowanie gdy załadowany program zakończy pracę? MS-DOS działanie ☛System jednozadaniowy ☛Okrojone wykonywanie współbieżne za pomocą funkcji systemowej TSR (ang. terminate and stay resistance) ☛TSR przechwytuje przerwanie (np. zegarowe) ☛TSR rezerwuje obszar pamięci co uniemożliwia nadpisanie go przez interpreter poleceń MS-DOS - proces a pamięć obszar wolny obszar wolny proces interpreter jądro interpreter jądro UNIX - wieloprogramowanie proces D obszar wolny proces C interpreter proces B jądro Operacje na plikach ☛utworzenie (create) i usunięcie (delete) ☛otwarcie (open) i zamknięcie (close) ☛czytanie (read), pisanie (write), zmiana położenia (reposition) ☛pobranie (get) i ustawienie (set) atrybutów (attributes) pliku Zarządzanie urządzeniami ☛Zarezerwowanie urządzenia ☛Zwolnienie urządzenia ☛Podobieństwo plików i urządzeń ☛W Unixie i MS-DOS urządzenia to pliki o specjalnych nazwach (/dev/ttyS0 lub COM1) Utrzymywanie informacji ☛pobranie (get) lub ustawienie (set) czasu lub daty (time or date) ☛pobranie (get) lub ustawienie (set) danych systemowych (system data) ☛pobranie (get) atrybutów procesu, pliku lub urządzenia ☛ustawienie (set) atrybutów procesu, pliku lub urządzenia Komunikacja ☛utworzenie (create), usunięcie (delete) połączenia ☛nadawanie (send), odbieranie (receive) komunikatów (messages) ☛przekazywanie informacji o stanie (transfer status information) ☛przyłączanie lub odłączanie urządzeń zdalnych (attach or detach remote devices) Operacje na urządzeniach ☛zamówienie (request) i zwolnienie (release) urządzenia (device) ☛czytanie (read), pisanie (write) i zmiana położenia (reposition) ☛pobranie (get) i ustawienie (set) atrybutów ☛logiczne przyłączanie (logically attach) i odłączanie (detach) urządzenia Działanie na plikach ☛Pliki tworzymy i usuwamy ☛Aby użyć utworzony plik musimy go otworzyć ☛Wykonujemy operacje na plikach (czytanie, pisanie, przewijanie) ☛Po wykonaniu operacji na pliku plik zamykamy ☛Katalog jest też plikiem: analogiczne funkcje ☛Ochrona dostępu: atrybuty zbiorów Przykłady - Unix i Win32 ☛tworzenie nowego procesu ☛Unix: fork; Win32: CreateProcess ☛czekanie na zakończenie procesu ☛Unix: waitpid; Win32: WaitForSingleObject ☛wykonanie nowego procesu ☛Unix: execve; Win32: (brak) ☛zakończenie procesu ☛Unix: exit; Win32: ExitProcess ☛przesłanie sygnału ☛Unix: kill; Win32: (brak) Przykłady - Unix i Win32 (c.d.) ☛otwarcie zbioru ☛Unix: open; Win32: CreateFile ☛zamknięcie zbioru ☛Unix: close ; Win32: CloseHandle ☛czytanie z pliku ☛Unix: read; Win32: ReadFile ☛pisanie do pliku ☛Unix: write; Win32: WriteFile ☛przesunięcie w pliku ☛Unix: lseek; Win32: SetFilePointer Przykłady - Unix i Win32 (c.d.) ☛atrybuty pliku ☛Unix: stat; Win32: GetFileAttributesEx ☛tworzenie katalogu ☛Unix: mkdir; Win32: CreateDirectory ☛usuwanie katalogu ☛Unix: rmdir; Win32: RemoveDirectory ☛link do pliku ☛Unix: link; Win32: (brak) ☛usuniecie linku ☛Unix: unlik; Win32: (brak) Przykłady - Unix i Win32 (c.d.) ☛montowanie katalogu ☛Unix: mount; Win32: (brak) ☛rozmontowanie katalogu ☛Unix: umount; Win32: (brak) ☛zmiana katalogu ☛Unix: chdir; Win32: SetCurrentDirectory ☛zmiana praw dostępu ☛Unix: chmod; Win32: (brak) ☛pobranie czasu ☛Unix: time; Win32: GetLocalTime Komunikacja ☛Dwa modele komunikacji: ☛przesyłanie komunikatów (ang. message passing) ☛pamięć dzielona (ang. shared memory) ☛Przesyłanie komunikatów ☛nawiązanie połączenia ☛pobranie nazwy sieciowej (ang. gethostid) , procesu (ang. get processid), otwarcie połączenia (ang. open connection) ☛realizacja połączenia ☛klient i serwer wymieniają komunikaty (read, write) ☛zamknięcie połączenia (ang. close connection) Model klient/serwer Usługi warstwy prezentacji Oprogramowanie klienta Sieciowy system operacyjny klienta polecenie odpowiedź Oprogarmowananie serwera Protokół sieciowy Sieciowy system operacyjny serwera System operacyjny klienta Sprzęt klienta System operacyjny serwera Połączenie sieciowe Sprzęt serwera Komunikacja (c.d.) ☛Pamięć dzielona ☛procesy posługują się systemowymi funkcjami odwzorowywania pamięci (ang. memory map) ☛system operacyjny nie ingeruje w sposób wykorzystania pamięci dzielonej ☛problemy synchronizacji i ochrony danych ☛Przesyłanie komunikatów przydatne dla mniejszej ilości danych i łatwe do realizacji ☛Pamięć dzielona zapewnia maksymalną szybkość i wygodę komunikacji Rodzaje komunikowania proces A K proces C pamięć dzielona proces B jądro K K przesyłanie komunikatów proces D jądro pamięć dzielona Programy systemowe ☛Programy systemowe (ang. system programs) wygodniejsze środowisko do opracowywania i wykonywania innych programów. Można je podzielić na kilka kategorii ☛Manipulowanie plikami (ang. file manipulation) programy do tworzenia, usuwania, kopiowania, przemianowywania, składowania i wyprowadzania zawartości plików ☛Informowanie o stanie systemu (ang. status information) logi systemowe ☛Tworzenie i zmienianie zawartości plików (ang. file modification) - np. edytory Programy systemowe (c.d.) ☛ (c.d) ☛Translatory języków programowania (ang. programming language support) - C, Pascal, Basic, Lisp.. ☛Ładowanie i wykonywanie programów (ang. program loading and execution) - konsolidatory i programy ładujące ☛Komunikacja (ang. communications) - np. remote login ☛Programy aplikacyjne (ang. application programs) ☛Sposób w jaki użytkownicy postrzegają system operacyjny wyznaczają programy systemowe a nie funkcje (wywołania) systemowe ☛Przyjazne dla użytkownika środowisko nie jest bezpośrednim celem systemu operacyjnego Struktury systemów ☛Monolityczna (ang. monolithic) - jądro jednoczęściowe ☛OS/360 - 5000 programistów 1M kodu w ciągu 5 lat ☛IBM/360 MVT/TSO - koszt 50M $ ☛AIX - Unix wersji IBM - jądro dwuczęściowe ☛Warstwowa (ang. layered) ☛strukura hierarchiczna - skutki małych zmian w jednej warstwie trudne do przewidzenia w innych warstwach ☛Mikrojądra (ang. microkernel, µ-kernel) ☛jedynie bezwzględnie niezbędne funkcje systemowe w jądrze systemu (np. mikrojądro L4 ma 12kB kodu, 7 funkcji systemowych) System monolityczny procedura główna procedury usługowe procedury użytkowe Przykład - MS-DOS ☛MS-DOS – napisany pod kątem osiągnięcia maksymalnej funkcjonalności przy oszczędności miejsca ☛brak wyraźnego podziału na moduły ☛interfejsy i poziomy funkcjonalności nie są jasno wydzielone, np. programy użytkowe mogą pisać bezpośrednio na ekran ☛brak dualnego trybu pracy (Intel 8088) ☛konsekwencja: MS-DOS nie jest odporny na błędne programy Struktura MS-DOS (c.d.) program aplikacji rezydentny program systemowy moduły sterujące MS-DOS moduły sterujące ROM BIOS Przykład - Unix ☛UNIX (oryginalny) - ograniczany przez cechy sprzętu miał ograniczoną strukturę. UNIX OS składa z dwu odrębnych części ☛programy systemowe ☛jądro systemu ☛jądro to wszystko co znajduje się poniżej interfejsu funkcji systemowych a powyżej sprzętu ☛za pośrednictwem funkcji systemowych jądro systemu UNIX udostepnia system plików, planowanie przydziału procesora, zarządzanie pamięcią oraz inne funkcje systemu Struktura systemu UNIX (użytkownicy) powłoki i polecenia kompilatory i interpretery biblioteki systemowe interfejs funkcji systemowych obsługa sygnalów obsługa terminali znakowy system we/wy moduły sterujące terminali system plików wymiana blokowy system we/wy moduły sterujące dysków i taśm planowanie CPU zastępowanie stron stronicowanie na żądanie pamięć wirtualna sprzętowy interfejs jądra sterowniki terminali terminale sterowniki urządzeń dyski i taśmy sterowniki pamięci pamięć fizyczna Struktura warstwowa ☛System operacyjny jest podzielony na warstwy (poziomy) (ang. layers (levels)) zbudowane powyżej warstw niższych. Warstwę najniższą (warstwę 0) stanowi sprzęt; warstwę najwyższą (warstwę N) stanowi interfejs z użytkownikiem ☛podejście warstwowe realizuje modularność (ang. modularity): warstwy są wybrane w ten sposób, że każda korzysta z funkcji (operacji) i usług tylko niżej położonych warstw Warstwa systemu operacyjnego nowe operacje . . . warstwa M ukryte operacje istniejące operacje . . . . . . warstwa M-1 Przykład - system THE ☛Zastosowana po raz pierwszy przy projektowaniu systemu THE (Technische Hogeschool w Eindhoven). Sześć warstw ☛5: programy użytkowe ☛4: buforowanie urządzeń we/wy ☛3: program obsługi konsoli operatora ☛2: zarządzanie pamięcią ☛1: planowanie przydziału procesora ☛0: sprzęt Struktura systemu OS/2 aplikacja aplikacja aplikacja API interfejs programowania aplikacji podsystem podsystem jądro systemu podsystem zarządzanie pamięcią ekspedycja zadań zarządzanie urządzeniami moduł sterujący moduł sterujący moduł sterujący moduł sterujący Struktura jądra systemu Unix warstwa użytkownika warstwa jądra pułapka program użytkownika interfejs funkcji systemowych komunikacja międzyprocesowa podsystem plików podsystem zarządzania procesami cache (bufory) znakowe planista przydziału procesora zarządzanie pamięcią blokowe moduły sterujące interfejs sprzętu warstwa jądra warstwa sprzętu biblioteki sprzęt Maszyny wirtualne ☛Maszyna wirtualna (ang. virtual machine) jest logiczną konsekwencją podejścia warstwowego: jądro systemu jest traktowane jako sprzęt. ☛IBM VM/370, JavaOS, Tryb MS-DOS, Cygwin, VMware ☛Maszyna wirtualna dostarcza identycznego interfejsu dla sprzętu ☛System operacyjny tworzy wirtualne systemy komputerowe, każdy proces ma do dyspozycji własne (wirtualne) jądro, dyski, pamięć, drukarki Maszyny wirtualne (c.d.) ☛Zasoby fizycznego komputera są dzielone w celu utworzenia maszyn wirtualnych ☛planowanie przydziału procesora jest tak wykorzystane, że użytkownik ma wrażenie jakoby miał do dyspozycji własny procesor ☛Spooling i system zarzadzania plikami jest wykorzystany tak, że powstaje wrażenie użytkowania drukarki, czytnika na wyłączność ☛Zwykłe terminale użytkownika funkcjonują jak konsole operatorskie maszyny wirtualnej ( system interakcyjny CMS) Modele systemu maszyna niewirtualna maszyna wirtualna proces F proces D proces B proces E proces B proces A jądro sprzęt interfejs programowy proces A proces C jądro jądro jądro VM1 VM2 VM3 implementacja maszyny wirtualnej sprzęt Przykład - VM/370 ☛Obserwacja: system podziału czasu daje użytkownikowi wieloprogramowanie poprzez stworzenie wrażenia maszyny wirtualnej ☛Wniosek: należy te dwie idee rozdzielić ☛Monitor maszyny wirtualnej zarządza zasobami sprzętowymi wielu systemów operacyjnych CMS (ang. Conversational Monitor System) ☛Przykład: program czyta plik z dysku wirtualnego ☛(wirtualne) wywołanie systemowe CMS ☛symulacja I/O przez system VM/370 ☛ Przykład - VM/370 maszyny wirtualne 370 wywołanie systemowe instrukcja we/wy pułapka CMS CMS VM/370 „goła maszyna 370” CMS pułapka Wirtualna Maszyna Javy ☛Program w Javie .java kompilowany programem javac tworzy kod wynikowy (ang. bytecode) .class ☛Kod wynikowy .class jest niezależny od platformy sprzętowej ☛Do wykonania .class potrzebny jest jednak program java (Java Virtual Machine (JVM)), który jest implementacją maszyny wirtualnej ☛JVM składa się z: ☛Class loader ☛Class verifier ☛Runtime interpreter Maszyna wirtualna JVM program Java pliki .class class loader bytecode Java interpreter system operacyjny Java API pliki .class Przykład - program w Javie ☛hello.java public class hello { public static void main(String args[]) { System.out.println("Hello World!"); } } ☛javac hello.java ☛javap -c hello >hello.bc ☛scp java.class [email protected]: ☛slogin juliusz.mat.uni.torun.pl -l user ☛uname -a ☛java hello Maszyna wirtualna - plusy i minusy ☛Koncepcja maszyny wirtualnej dostarcza pełnej ochrony zasobów systemu, bowiem każda maszyna wirtualna jest całkowicie odizolowana od innych maszyn. Z drugiej strony izolacja taka utrudnia bezpośrednie dzielenie zasobów ☛System maszyn wirtualnych jest doskonałym narzędziem do badania systemów operacyjnych oraz poszukiwania kierunków ich rozwoju. Nie ma potrzeby wyłączać z eksploatacji systemu komputerowego w czasie trawania prac systemowych - można eksperymentować na jednej z maszyn wirtualnych Maszyna wirtualna - plusy i minusy (c.d.) ☛Metasystem operacyjny - system operacyjny nadzorujący jednoczesną pracę wielu systemów operacyjnych na jednym komputerze: np. 9xLinux, 2xW95, 2xWNT, 1xSolaris, 1xMS-DOS ☛Koncepcja maszyny wirtualnej jest bardzo trudna do zaimplementowania dlatego, że zawsze będzie pokusa uzyskania oryginalnego systemu pod postacią maszyny wirtualnej - petitio principii ☛petitio principii - sofizmat myślowy, “błędne koło” Kompromis - egzojądro ☛Maszyna wirtualna daje jedynie fragment zasobów maszyny rzeczywistej ☛“Istnieją dwa rodzaje ludzi - ci, którzy wszystko na świecie dzielą na dwa rodzaje rzeczy i ci, którzy tego nie czynią” - Kenneth Boulding ☛Egzojądro (ang. exokernel ) - najniższa warstwa jądra mająca za zadanie przydział zasobów maszyn wirtualnych ☛Wieloprogramowanie obsługiwane w egzojądrze ☛System operacyjny użytkownika działa w jego przestrzeni adresowej ( w trybie użytkownika) Wady podejścia warstwowego ☛Trudno jest zdefiniować warstwę albowiem uzależnione to jest od warstw leżących poniżej ☛Nieefektywność systemu wynikająca z konieczności przechodzenia przez wiele warstw ☛operacja we/wy:warstwa we/wy -> warstwa zarządzania pamięcią-> warstwa zarządzania procesami-> sprzęt ☛ pierwsze wersje Windows NT miały strukturę warstwową i były mniej wydajne niż Windows95 ☛Trudno jest kontrolować modyfikowanie kodu systemu operacyjnego Mikrojądro ☛jądro zredukowane do małego zbioru funkcji rdzeniowych tzw. mikrojądro ☛większość operacji w przestrzeni użytkownika ☛obsługa: urządzeń, plików, pamięci wirtualnej, grafiki, ochrona przy pomocy komunikatów (np. IPC) ☛Przykłady ☛Mach - opracowany w Carnegie-Mellon University ☛Tru64 UNIX - Digital UNIX ☛Apple MacOS X Server ☛QNX - przykład systemu czasu rzeczywistego ☛Windows NT 4.0 - rozwiązanie hybrydowe: warstwowe podejście do modelu klient-serwer Struktura Mac OS X application environments and common services BSD mach kernel environment Windows NT - hybrydowa struktura klient - serwer aplikacja OS/2 aplikacja Win32 aplikacja POSIX serwer OS/2 serwer Win32 jądro serwer POSIX jądro jądra zarządzanie we/wy pamięć wirtualna użytkownika zarządzanie procesami mikrojądro sprzęt sprzęt pamięć wirtualna tryb serwer procesów komunikacja IPC tryb serwer plików systemy plików proces klienta użytkownicy moduły sterujące Warstwy a mikrojądro Zalety i wady mikrojąder ☛Jednolity interfejs dla procesów ☛Łatwość w kontrolowaniu kodu systemu operacyjnego ☛Przenaszalność systemu (na inną architekturę) ☛Niezawodność - małe jądro łatwiej przetestować (ok. 300 kB kodu, 140 funkcji systemowych) ☛Wydajność - zbudowanie, zakolejkowanie, wysłanie, odebranie, potwierdzenie komunikatu ☛Poprawianie wydajności prowadzi do rozbudowy mikrojądra Moduły ☛Większość współczesnych systemów operacyjnych ma zaimplementowane w jądrze systemu moduły (np. Linux) ☛podejście zorientowane obiektowo ☛moduły komunikują się za pomocą interfejsów ☛moduł jest ładowany do jądra tylko wtedy gdy jest potrzebny ☛Pewne podobieństwo do struktury warstwowej jednak większa elastyczność Solaris - struktura modułowa kolejki planisty moduły urządzeń różne moduły moduły strumieni rdzeń jądra systemy plików wywołania systemowe formaty wynikowe Projektowanie systemu założenia projektowe ☛Oczekiwania użytkownika - system operacyjny powinien być wygodny i łatwy w użyciu i do nauki, niezawodny, bezpieczny i szybki ☛Oczekiwania projektanta systemu - system operacyjny powinien być łatwy w projektowaniu oraz realizacji; elastyczny, niezawodny, wolny od błędów i wydajny ☛Sformułowane oczekiwania są niejasne, nieprecyzyjne, na domiar złego ogólny sposób realizacji jest nieznany Mechanizm a polityka ☛Mechanizmy określają jak czegoś dokonać, zaś polityka decyduje o tym co ma być zrobione ☛Zasada rozdziału polityki od mechanizmu jest bardzo ważną zasadą gwarantującą elastyczność ☛zmiana polityki może powodowąć wymianę mechanizmu ☛ogólny mechanizm jest mniej podatny na zmianę polityki ☛dwie skrajności ☛wydzielenie elementarnych składowych systemu operacyjnego (np. w postaci mikrojąder) i budowanie na ich podstawie ogólnych mechanizmów zależnie od bieżącej polityki ☛wbudowanie wszystkich mechanizów oraz interfejsów użytkowych w jądro systemu (np. Apple Macintosh) Implementacja systemu ☛Tradycyjnie systemy operacyjne pisano w kodzie maszynowym (asemblerze); obecnie mogą być pisane w języku wysokiego poziomu (tylko 900 wierszy oryginalnego kodu UNIXa było w asemblerze) ☛Język wysokiego poziomu pozwala na ☛szybsze programowanie systemów operacyjnych ☛uzyskiwanie bardziej zwartego kodu. ☛łatwiejsze zrozumienie i sprawdzanie kodu ☛łatwiejsze przenoszenie (ang. port) systemu na komputery o innej architekturze Generowanie systemu (SYSGEN) ☛Systemy operacyjne są projektowane na pewną klasę (podobnych) maszyn; dla każdej maszyny system musi zostać osobno skonfigurowany ☛Program generujący (SYSGEN) ma na wejściu informację o specyficznej konfiguracji a na wyjściu gotowy system operacyjny na dysku ☛jaki procesor lub procesory; jakie rozszerzenia ☛ile pamięci opercyjnej; ile pamięci pomocniczej(swap) ☛jakie urządzenia we/wy i sposób ich adresowania ☛jaki sposób przydziału procesora, maksymalna liczba procesów Generowanie systemu (SYSGEN) (c.d.) ☛Można skonstruować system całkowicie sterowany tablicami; system zawiera cały wymagany kod a wyboru dokonuje się w czasie wykonania programu ☛Rozruch (ang. booting) - procedura startowania systemu przez załadowanie jądra do pamięci ☛Program rozruchowy (ładujący) (ang. bootstrap (loader)) - fragment kodu w ROM, który jest w stanie zlokalizowąć jądro, wczytać do pamięci i rozpocząć jego wykonywanie Strony WWW ☛ACM ☛www.acm.org ☛IEEE Computer Society ☛www.computer.org ☛USENIX ☛www.usenix.org Podsumowanie (1) ☛Systemy operacyjne są dostarczycielami usług ☛najniższy poziom to funkcje systemowe ☛interpreter poleceń lub powłoka ☛programy systemowe do spełniania życzeń ☛Rodzaje żądań od systemu zależą od poziomu ☛najniższy poziom: podstawowe operacje na procesach, plikach i urządzeniach ☛żądania poziomu interpretera poleceń lub programów systemowych są tłumaczone na język funkcji systemowych Podsumowanie (2) ☛Usługi systemu dzielimy na ☛nadzór na wykonaniem procesów ☛podawanie informacji o stanie systemu ☛obsługa zamówień na operacje we/wy ☛obsługa błędów ☛Struktura jądra systemu ☛monolityczna - np. Linux ☛warstwowa ☛mikrojądro Podsumowanie (3) ☛Projektowanie systemu operacyjnego ☛modularność projektu ułatwia implementację ☛układ warstwowy jest ważną techniką projektowania ☛koncepcja maszyny wirtualnej zaciera różnice między jądrem i sprzętem i pozwala na umieszczenie systemu ☛oddzielenie polityki od szczegółów realizacyjnych podczas projektowania gwarantuje elestyczność ☛systemy operacyjne pisane są w językach wysokiego poziomu lub w językach implementacji systemów ☛Generacja systemu jest dopasowaniem systemu operacyjnego do potrzeb konkretnej instalacji