3.1
Struktury systemów operacyjnych
Składowe systemu
Usługi systemu
Wywołania systemowe
Programy systemowe
Struktura systemu
Maszyny wirtualne
Projektowanie i implementacja systemu
Generowanie systemu
Wykład 7, Systemy operacyjne (studia zaoczne) PJWSTK, Adam Smyk, 2016/17
3.2
Struktura systemu operacyjnego
Składowe systemu operacyjnego
System operacyjny to duży i bardzo złożony system informatyczny.
Systemy takie muszą mieć modularną strukturę, inaczej trudno poradzić sobie z ich złożonością.
W typowym systemie operacyjnym wyróżniamy następujące podsystemy:
…..
…..
…..
…..
3.3
Ogólne składowe systemu
Istnieje kilka dogodnych sposobów patrzenia na SO: przegląd świadczonych przez system usług
Interfejs, który system udostępnia użytkownikom i programistom
poszczególne części systemu i ich wzajemne powiązania
Wiele współczesnych SO zawiera następujące części składowe: zarządzanie procesami
zarządzanie pamięcią operacyjną
zarządzanie plikami
zarządzanie systemem we/wy
zarządzanie pamięcią pomocniczą
praca sieciowa
system ochrony
system interpretacji poleceń
3.4
Składowe systemu
Zarządzanie procesami
proces to program, który jest wykonywany w sposób sekwencyjny, a podczas jego wykonywania licznik rozkazów określa następną instrukcję w określa
proces wymaga określonych zasobów, w tym czasu procesora, pamięci, plików, urządzeń WE/WY, aby być procesem
program pasywny nie jest procesem - jeden wykonywany program rodzi wiele procesów3.5
Składowe systemu
Zarządzanie procesami
W odniesieniu do zarządzania procesami SO odpowiada za:
tworzenie i usuwanie zarówno procesów użytkowych, jak systemowych
wstrzymywanie i wznawianie procesów
dostarczanie mechanizmów»
synchronizacji procesów»
komunikacji procesów»
obsługi zakleszczeń3.6
Składowe systemu
Zarządzanie pamięcią operacyjną
pamięć operacyjna (PO) jest wielką tablicą słów lub bajtów z przypisanymi im adresami
PO stanowi magazyn szybko dostępnych danych eksploatowanych wspólnie przez jednostkę centralną i urządzenia WE/WY
PO jest w zasadzie jedyną pamięcią, którą jednostka centralna może adresować bezpośrednio
aby rozkazy programu mogły być wykonywane przez procesor, muszą znajdować się w PO
PO jest pamięcią ulotną;
również traci swoją zawartość w przypadku awarii systemu RAM
Ale PO może być też pamięcią nieulotną; ROM, EPROM, EEPROM (FLASH)
3.7
Składowe systemu
Zarządzanie pamięcią operacyjną
jeśli chcemy uzyskać lepsze wykorzystanie procesora jak i szybszą reakcję komputera na polecenia użytkownika to musimy przechowywać jednoczenie kilka programów
jest wiele sposobów (algorytmów, strategii) zarządzania PO
każdy algorytm zarządzania pamięcią wymaga swoistego wspomagania sprzętowego
w odniesieniu do zarządzania PO system operacyjny odpowiada za:
utrzymanie ewidencji aktualnie zajętych części pamięci wraz z informacją, w czyim są władaniu
decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów pamięci
przydzielanie i zwalnianie obszarów pamięci stosownie do potrzeb
3.8
Składowe systemu
Zarządzanie plikami
Komputery mogą przechowywać informację na nośnikach fizycznych kilku różnych typów: taśmy, dyski magnetyczne, dyski optyczne
Kontrolę nad każdym z tych urządzeń sprawuje tzw. sterownik (sprzętowy i programowy)
dla wszystkich użytkowników SO tworzy jednolity, logiczny obraz magazynowanej informacji, definiując pliki
plik jest zbiorem powiązanych informacji określonym przez jego twórcę, definiowanym niezależnie od fizycznych własności używanych urządzeń pamięci
W plikach przechowuje się programy oraz dane
SO realizuje abstrakcyjny model plików przez zarządzanie pamięci masowej
Dodatkowo w zależności od SO pliki mogą być dzielone na kilka typów:
Katalogi – służące do organizacji systemu plików (spis odwołań do innych plików)
Dowiązania – skróty, linki symboliczne, linki sztywne
Pliki specjalne takie jak gniazda, kolejki FIFO itp…
Pliki wykonywalne, skrypty, pliki wsadowe
Pliki tekstowe, binarne
3.9
Składowe systemu
Zarządzanie plikami cd.
w
odniesieniu do zarządzania plikami SO odpowiada za:tworzenie i usuwanie plików
tworzenie i usuwanie katalogów
dostarczanie elementarnych operacji do manipulowania plikami i katalogami
odwzorowanie plików na obszary pamięci pomocniczej
składowanie plików na trwałych nośnikach pamięci (na których informacja nie znika)
Typy systemów plików:
Linux - minix,ext,..,ext4,ReiserFS,………
DOS - FAT,FAT16,FAT32
Windows - NTFS,FAT32,WinFS,VFAT
CD/DVD - ISO9660,UDF
3.10
Składowe systemu
Zarządzanie plikami cd.
Wirtualny System Plików – (VFS):
Abstrakcyjny (wirtualny) poziom umożliwiający jednolity dostęp do różnorodnych, rzeczywistych systemów plików.
Standardowe odwołania systemowe (read, write) są konwertowane na odwołania specyficzne dla konkretnego systemu plików (readext, writeext)
3.11
Składowe systemu
Zarządzanie plikami cd.
Ext i UFS – pojecie i-node
Pole Opis
i_mode typ pliku (dowiązanie symboliczne, zwykły plik, folder, urządzenie znakowe, urządzenie blokowe, gniazdo, kolejka FIFO) i prawa dostępu
i_uid Identyfikator właściciela pliku i_size Długość pliku w bajtach i_atime Czas ostatniego dostępu (w sekundach od epoki
Uniksa)
i_ctime Czas ostatniej zmiany i-węzła (jw.) i_mtime Czas ostatniej zmiany zawartości pliku (jw.) i_dtime Czas usunięcia pliku (jw.) i_gid Identyfikator grupy i_links_co unt
Licznik twardych dowiązań do pliku
i_blocks Liczba bloków danych pliku (po 512 bajtów) i_flags Flagi pliku ("tylko dodawanie (append only)", "nie
można zmieniać (immmutable)", i inne) i_block Wskaźniki do bloków danych (zwykle 13,
pierwszych 10 to wskaźniki bezpośrednie, jeden pośredni, jeden podwójnie pośredni, jeden potrójnie pośredni) i_file_acl Lista kontroli dostępu do pliku (ACL)
i_dir_acl Lista kontroli dostępu katalogu
3.12
Podsystem wejścia/wyjścia
Składowe systemu operacyjnego
Podsystem ten ukrywa przed użytkownikiem szczegóły dotyczące urządzeń wejścia/wyjścia.
W jego skład wchodzą:
moduły sterujące poszczególnych urządzeń, ukrywające szczegóły charakterystyczne dla poszczególnych urządzeń,
ujednolicony interfejs modułów sterujących urządzeniami,
moduł zarządzający buforowaniem i czytaniem z
wyprzedzeniem pamięci pomocniczej.
3.13
Składowe systemu
Zarządzanie systemem WE/WY
W systemie UNIX osobliwości urządzeń WE/WY są ukrywane przed większością samego SO
Składa się on z:
części zarządzającej pamięcią wliczając w to buforowanie, pamięć podręczną i spooling
ogólnego interfejsu do modułów sterujących urządzeń
modułów sterujących (programów obsługi) poszczególnych urządzeń sprzętowych
osobliwości konkretnego urządzenia zna tylko odpowiadający mu moduł sterujący
3.14
Składowe systemu
Zarządzanie pamięcią pomocniczą
Pamięć operacyjna (PO) jest ulotna i zbyt mała, aby stale przechowywać wszystkie dane i programy, system komputerowy musi mieć pamięć pomocniczą będącą zapleczem PO
Większość współczesnych systemów komputerowych posługuje się pamięcią dyskową jako podstawowym środkiem magazynowania informacji
Programy, w tym kompilatory, asemblery, procedury sortujące, edytory jest przechowywana na dysku
SO odpowiada, w odniesieniu do zarządzania dyskami, za:zarządza urządzeniami pamięci pomocniczej (zwykle jest to pamięć dyskowa),
śledzi, które obszary są wolne, a które zajęte,
przydziela pamięć, szereguje odwołania do pamięci pomocniczej.
Pamięć pomocnicza jest często używania i dlatego musi działać wydajnie
Ogólna szybkość działania komputera może zależeć od podsystemu dyskowego i stosowanych w nim algorytmów3.15
Składowe systemu
Praca sieciowa (systemy rozproszone)
System rozproszony jest zbiorem procesów, które nie dzielą pamięci i zegara; każdy procesor ma własną lokalną pamięć
Procesory w systemie rozproszonym są połączone za pomocą sieci komunikacyjnej
Komunikacja odbywa się z wykorzystaniem stosu protokołów.
System rozproszony umożliwia użytkownikom dostęp do różnych zasobów systemu dostęp do wspólnych zasobów pozwala na:
zwiększenie szybkości obliczeń
zwiększenie dostępności danych
zwiększenie niezawodności systemu
3.16
Składowe systemu
Systemy ochrony
System komputerowy ma wielu użytkowników i umożliwia współbieżne wykonywanie wielu procesów, które trzeba chronić przed wzajemnym oddziaływaniem
Ochrona jest mechanizmem nadzorowania dostępu programów, procesów lub użytkowników do zasobów systemu komputerowego
Mechanizm ochrony musi:
umieć rozpoznać autoryzowaną i nieautoryzowaną próbę użycia zasobów
zawierać środki do wymuszenia zaprowadzonych ustaleń
System ochrony wykrywa błędy ukryte w interfejsach między składowymi podsystemu
3.17
Składowe systemu
System interpretacji poleceń
Interpreter poleceń będący interfejsem między użytkownikiem a SO jest albo zawarty w jądrze SO, lub jak w MS-DOS, UNIX-ie, jest specjalnym programem wykonywanym przy rozpoczęciu zadania lub zalogowaniu się
Wiele poleceń jest przekazywanych do SO za pomocą instrukcji sterujących
Program interpretujący instrukcje sterujące w UNIX-ie to powłoka (shell)
Inne nazwy takiego programu to:
interpreter kart sterujących
interpreter wiersza poleceń
• Polecenia rozpoznawane przez interpreter dotyczą:
• tworzenia procesów i zarządzania nimi
• obsługi WE/WY
• administrowania pamięcią pomocniczą i operacyjną
• dostępu do plików
• ochrony
• pracy sieciowej
3.18
Usługi systemu operacyjnego
wykonanie programu - zdolność systemu do załadowania programu do pamięci i rozpoczęcia jego wykonywania
operacje WE/WY - ponieważ programy użytkowników nie mogą wykonywać bezpośrednio operacji WE/WY, SO musi zapewnić środki do realizacji tych czynności
manipulowanie systemem plików - zdolność programu do czytania, pisania, tworzenia i usuwania plików
komunikacja - wymiana informacji między procesami działającymi albo w tym samym procesorze lub na różnych systemach powiązanych za pomocą sieci;Dwa mechanizmy implementacji komunikacji:
komunikacja za pomocą pamięci dzielonej
komunikacja z użyciem techniki przekazywania komunikatów (za pośrednictwem SO)
3.19
Usługi systemu operacyjnego cd.
wykrywanie błędów
w jednostce centralnej i pamięci : sprzętowa wada pamięci lub awaria zasilania, itp.
w urządzeniach WE/WY : błąd parzystości na taśmie, awaria połączenia w sieci, brak papieru w drukarce, itp.
w programie użytkownika: np. nadmiar arytmetyczny, próba sięgnięcia poza obszar pamięci programu, przekroczenie przydzielonego czasu procesoraNa wszystkie rodzaje błędów SO powinien odpowiednio zareagować, gwarantując poprawność i spójność obliczeń.
3.20
Dodatkowe funkcje SO
Nie są one przeznaczone do pomagania użytkownikowi, lecz do zapewnienia efektywnego (optymalizacja) działania systemu
przydzielanie zasobów - przydział zasobów dla wielu użytkowników i wielu zadań pracujących w tym samym czasie, np. planowanie przydziału czasu procesora
rozliczanie - przechowywanie danych o tym, którzy użytkownicy i w jakim stopniu korzystają z poszczególnych zasobów komputera (wystawianie rachunków, statystyka, rekonfiguracja)
ochrona - zapewnienie, że całkowity dostęp do zasobów jest kontrolowany
3.21
Wywołania systemowe
Funkcje systemowe (wywołania systemowe, system calls) tworzą interfejs między wykonywanym programem a SO
ogólnie dostępne poprzez rozkazy w języku assemblera
kilka języków programowania (C, Bliss, PL/360, PERL) zdefiniowano tak, aby umożliwić bezpośrednie wykonywanie wywołań funkcji systemowych
3.22
http://docs.cs.up.ac.za/programming/asm/derick_
tut/syscalls.html
3.23
używane są zasadniczo trzy metody przekazywania parametrów wykonywanego programu do SO:
umieszczenie parametrów w rejestrach jednostki centralnej
przechowanie parametrów w tablicy w pamięci, a jej adresu w rejestrze
program składa parametry na stosie, skąd zdejmowane są przez SO
Wywołania systemowe
3.24
Wywołania systemowe cd.
ilustracja sposobu używania funkcji systemowych, np.program czytający dane z jednego pliku i kopiujący je do innego pliku.
program będzie potrzebował podania nazw obu plików;będzie to wymagało ciągu odwołań do funkcji systemowych w celu:
wypisania na ekranie symbolu zachęty do pisania
czytania z klawiatury znaków definiujących oba pliki
otworzenia pliku wejściowego i utworzenia pliku wyjściowego; możliwe jest tu wystąpienie błędów:
nie istnieje plik o podanej nazwie
komunikat na konsoli (ciąg wywołań f.
systemowych)
zakończenie działania programu na warunkach wyjątkowych (kolejne wywołania f. systemowych)
jest już plik o takiej nazwie
...
...
3.25
Wywołania systemowe cd.
gdy oba pliki są przygotowane można rozpocząć pętlę czytania z pliku wejściowego (wywołania f. systemowej) i pisania do pliku wyjściowego (wywołania f. systemowej)
każda operacja czytania/pisania musi przekazać informację o wyniku jej wykonania, uwzględniając różne możliwe przyczyny błędów (brak miejsca na dysku, fizyczny koniec taśmy, itp.)
po skopiowaniu całego pliku program może zamknąć oba pliki (kolejne wywołania f. system.), po czym skończyć działanie w normalny sposób (ostatnie odwołanie f.systemowej)
3.26
Przekazywanie parametrów za pomocą tablicy
3.27
Rodzaje wywołań systemowych
Nadzorowanie procesów
zakończenie (end), zaniechanie (abort);
załadowanie (load), wykonanie (execute);
utworzenie procesu (create process), zakończenie procesu (terminate process);
pobieranie atrybutów procesu (get process attributes), określenie atrybutów procesu (set process attributes);
czekanie czasowe (wait for time)
oczekiwanie na zdarzenie (wait for event), sygnalizacja zdarzenia (signal event);
przydział i zwolnienie pamięci (allocate and free memory)
Operacje na plikach
utworzenie pliku (create file), usunięcie pliku (delete file);
otwarcie (open), zamknięcie (close);
czytanie (read), pisanie (write), zmiana położenia (reposition);
pobieranie atrybutów pliku (get file attributes), określenie atrybutów pliku (set file attributes)
3.28
Rodzaje wywołań systemowych cd.
Operacje na urządzeniach
zamówienie urządzenia (request device), zwolnienie urządzenia (release device)
czytanie (read), pisanie (write), zmiana położenia (reposition);
pobieranie atrybutów urządzenia (get device attributes), określenie atrybutów urządzenia (set device attributes)
logiczne przyłączanie lub odłączanie urządzeń (logically attach or detach devices)
Utrzymywanie informacji
pobieranie czasu lub daty (get time or date), określenie czasu lub daty (set time or date)
pobieranie danych systemowych (get system data), określenie danych systemowych (set system data)
pobieranie atrybutów procesu, plkiu lub urządzenia (get process, file or device attributes)
określenie atrybutów procesu, pliku lub urządzenia (set process, file or device attributes)
3.29
Rodzaje wywołań systemowych cd.
Komunikacja
utworzenie, usunięcie połączenia komunikacyjnego (create, delete communication connection)
nadawanie, odbieranie komunikatów (send, receive messages)
przekazanie informacji o stanie (transfer status information)
przyłączanie lub odłączanie urządzeń zdalnych (attach or detach remote devices)
3.30
Działanie systemu MS-DOS 1.
interpretator poleceń wywoływany jest na początku pracy komputera; nie tworzynowego procesu podczas uruchamiania nowego programu
2.
system wprowadza program do pamięci operacyjnej, nawet kosztem większości własnego kodu3.
następnie ustawia licznik rozkazów na pierwszy rozkaz programu i program zaczyna się wykonywać4.
jeśli wystąpi błąd podczas jego wykonania, uaktywnia się odpowiednia pułapka systemowa, albo program zatrzyma się wykonując odpowiednią funkcję systemową5.
w obu przypadkach kod błędu zostanie przechowany w pamięci systemu do późniejszego użytku6.
następnie interpretator ładuje z dysku resztę swojego kodu
MS-DOS, chociaż nie jest wielozadaniowy, dostarcza sposobów na okrojone działanie współbieżne:"przechwytuje przerwanie" po czym kończy pracę za pomocą funkcji systemowej "zakończ i pozostań w pogotowiu"
może przechwytywać przerwania zegara
3.31
Działanie systemu MS-DOS
3.32
UNIX- system wielozadaniowy
1. gdy użytkownik rejestruje się w systemie, wówczas wybiera odpowiednią wersję interpretatora poleceń (powłoka, shell)
2. w celu zapoczątkowania nowego procesu, shell wykonuje funkcję systemową fork
3. wówczas nowy program zostaje załadowany do pamięci za pomocą funkcji systemowej exec i rozpoczyna pracę
4. w zależności od wydanego polecenia, shell oczekuje na zakończenie działania procesu (proces pierwszoplanowy), albo powoduje, że proces będzie wykonywany "w tle" (proces drugoplanowy)
5. w drugim przypadku shell jest natychmiast gotowy do przyjmowania następnych poleceń; proces wykonywany w tle nie może otrzymać danych z klawiatury, ponieważ zasobu tego używa powłoka
6. procesy w tle wykonują operacje WE/WY za pośrednictwem plików 7. pod koniec pracy proces wywołuje funkcję systemową exit, która kończy jego
działanie i powoduje przekazanie procesowi, który go wywołał, kodu stanu zakończenia programu
3.33
UNIX- system wielozadaniowy
3.34
Komunikacja międzyprocesowa
3.35
Modele komunikacji
Model przekazywania komunikatów
informacja jest wymieniana przez międzyprocesowe środki komunikacji które dostarcza SO
przed rozpoczęciem komunikacji należy nawiązać połączenie (funkcja systemowe odebranie połączenia)
musi być znana nazwa odbiorcy: inny proces w tym samym procesorze lub proces w innym komputerze
każdy komputer w sieci ma swoją nazwę sieciową
każdy proces ma swoją nazwę procesu
funkcje systemowe pobranie nazwy sieciowej i pobranie nazwy procesu tłumaczą te nazwy na identyfikatory, których używa SO
proces odbiorcy musi zazwyczaj udzielić zgody na nawiązanie komunikacji za pomocą funkcji akceptującej połączenie
większość procesów realizujących połączenia to tzw. demony
3.36
Modele komunikacji cd.
Cd. Model przekazywania komunikatów
Wywołują one czekania na połączenie i są budzone gdy połączenie zostanie nawiązane
źródło komunikacji (klient) i demon odbiorcy (server) wymieniają komunikaty za pomocą funkcji systemowych czytania komunikatu i pisania komunikatu
wywołanie funkcji zamknięcie połączenia kończy komunikację
Przesyłanie komunikatów jest przydatne do bezpośredniej wymiany mniejszych ilości danych oraz w komunikacji międzykomputerowej
3.37
Modele komunikacji cd.
model pamięci dzielonej
wspólne użytkowanie przez procesy pewnego obszaru pamięci
procesy wymieniają informację przez pisanie i czytanie do wspólnie użytkowanych obszarów pamięci
procesy określają postać danych i ich miejsce w pamięci wspólnej; nie podlega to kontroli SO
procesy muszą dopilnować, aby nie zapisywać jednocześnie tego samego miejsca pamięci; niezbędne są do tego pewne mechanizmy
pamięć dzielona zapewnia maksymalna szybkość i wygodę komunikacji; w obrębie jednego komputera może ona przebiegać z szybkością działania pamięci operacyjnej
problemy z zakresu ochrony i synchronizacji
3.38
Programy systemowe
Tworzą one wygodne środowisko do opracowywania i wykonywania programów. Można je podzielić na kilka kategorii
manipulowanie plikami (tworzenie, usuwanie, kopiowanie, przemianowywanie, składowanie , wyprowadzanie zawartości plików / katalogów)
informacje o stanie systemu (data, czas, ilość dostępnej pamięci,...)
tworzenie i zmienianie zawartości plików (różne odmiany edytorów)
translatory języków programowania (kompilatory, assembliery, interpretatory)
ładowanie i wykonywanie programów
komunikacja (tworzenie wirtualnych połączeń między procesami, użytkownikami, systemem komputerowym)
programy aplikacyjne (przeglądarki WWW, bazy danych, arkusze kalkulacyjne, ...)
3.39
Programy systemowe cd.
najważniejszy program systemowy, to interpreter poleceń;
dwa sposoby jego realizacji:
interpreter poleceń sam zawiera kod wykonywanych poleceń
alternatywna metoda w UNIX-ie: polecenia systemowe są wykonywane przez specjalne programy systemowe; polecenie służy jedynie do zidentyfikowania pliku, który ma być załadowany do pamięci i wykonany; interpreter jest niewielki, a programista ma możliwość dołączania nowych poleceń
sposób w jaki większość użytkowników postrzega SO jest określany w większym stopniu przez programy użytkowe, aniżeli funkcje systemowe:
ten sam zbiór funkcji systemowych w np. Microsoft Windows może być oglądany przez:
powłokę poleceń CMD
interfejs graficzny z myszką i oknami
3.40
Struktura systemu MS-DOS
MS-DOS - zaprojektowany (dla mikroprocesora INTEL 8088) pod kątem osiągnięcia maksymalnej
funkcjonalności, przy oszczędności przestrzeni pamięci
nie jest podzielony na moduły
chociaż ma pewną strukturę, jego interfejsy i poziomy funkcjonalne nie są wyraźnie wydzielone
nie ma dualnego trybu pamięci, ani ochrony sprzętowej
3.41
Warstwowa struktura system 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
3.42
Struktura systemu UNIX
UNIX - inny przykład ograniczonej strukturalizacji;
początkowo również był ograniczony przez cechy sprzętu składa się z 2 odrębnych części
programów systemowych
jądra
wszystko co znajduje się poniżej interfejsu funkcji systemowych i powyżej sprzętu
za pośrednictwem funkcji sprzętowych udostępnia system plików, planowanie przydziału procesora, zarządzanie pamięcią; duża liczba funkcji na jednym poziomie
funkcje systemowe definiują interfejs programisty z systemem UNIX; zbiór programów systemowych określa interfejs użytkownika
3.43
Struktura systemu UNIX
Użytkownicy Powłoki i polecenia Kompilatory i interpretery
Biblioteki systemowe Interfejs funkcji systemowych jądra
Sygnały Obsługa terminali System znakowego
wejścia-wyjścia Moduły sterujące
terminalami
System plików Wymiana System blokowego
wejścia-wyjścia Moduły sterujące dysków i taśm
Planowanie Przydziału procesora
Zastępowanie stron Stronicowanie
na żądanie Pamięć wirtualna
Interfejs między jądrem a sprzętem Sterowniki terminali
Terminale
Sterowniki urządzeń Dyski i taśmy
Sterowniki pamięci Pamięć operacyjna
3.46
Podejście warstwowe
Nowe operacje
Istniejące operacje
Ukryte operacje
Warstwa M
. . . .
. .
. . .
Warstwa M-1
3.48
Struktura systemu Microkernel
Wszystkie „zbędne elementy” przeniesiono z jądra do przestrzeni użytkownika
Komunikacja odbywa się pomiędzy modułami użytkownika za użyciem przekazywania wiadomości.
Zalety:
- łatwiej rozszerzyć microkernel
- łatwiej przenieść system operacyjny na nowe architektury - bardziej niezawodny (mniej kodu jest uruchomione w trubie jądra)
- bardziej bezpieczny
3.50
Maszyny wirtualne
ogólnego punktu widzenia system komputerowy jest zbudowany z warstw:
1. najniższy poziom: sprzęt
2. następny poziom: jądro systemu; użyto w nim rozkazów sprzętowych do utworzenia zbioru funkcji systemowych, używanych w zewnętrznych warstwach
3. w programach systemowych występujących powyżej jądra systemu używa się funkcji systemowych na równi z rozkazami sprzętowymi 4. oba rodzaje operacji pozwalają zaprogramować bardziej złożone funkcje,
a sprzęt i funkcje systemowe traktuje się tak jakby należały do tego samego poziomu
5. niektóre systemy idą dalej: umożliwiają łatwe wywoływanie programów systemowych przez programy użytkowe
6. logiczną konkluzją tak pojmowanej warstwowości jest koncepcja maszyny wirtualnej
3.51
Maszyny wirtualne cd.
W wirtualnej maszynie traktuje się zarówno sprzęt jak i jądro SO jako sprzęt
stosując planowanie przydziału procesora oraz technikę pamięci wirtualnej, SO może tworzyć złudzenie, że wiele procesów pracuje na własnych procesorach, z własną (wirtualną) pamięcią
maszyna wirtualna tworzy interfejs identyczny z podstawowym sprzętem; każdy proces otrzymuje (wirtualną) kopię komputera
zasoby fizycznego komputera są określone w celu utworzenia maszyn wirtualnych
planowanie przydziału procesora powoduje powstanie wrażenia, że każdy użytkownik ma własny procesor
spooling i system plików pozwalają utworzyć wirtualne czytniki kart i wirtualne drukarki wierszowe
zwykły terminal do pracy z podziałem czasu przejmuje rolę wirtualnej konsoli operatorskiej
system operacyjny VM dla maszyn IBM jest najlepszym przykładem koncepcji maszyn wirtualnych
3.52
Zalety i wady maszyn wirtualnych
zalety / wady maszyn wirtualnych
koncepcja maszyny wirtualnej zapewnia pełną ochronę zasobów systemowych, ponieważ każda maszyna wirtualna jest izolowana od innych maszyn wirtualnych; z drugiej strony nie ma bezpośredniej możliwości wspólnego bezpośredniego użytkowania zasobów
system wirtualnych maszyn stanowi znakomite narzędzie badań nad SO i poszukiwań kierunków ich rozwoju;
programiści systemowi otrzymują własną maszynę wirtualną i to na niej, zamiast na maszynie fizycznej, odbywa się eksperymentowanie / konserwacja SO
maszyny wirtualne stają się sposobem rozwiązania zagadnień zgodności systemów np. utworzenie maszyny wirtualnej Intel (programy pod MS DOS) nadbudowanej nad rdzennym procesorem np. firmy Sun Microsystems
3.53
Modele systemu
3.54
Wirtualna maszyna Java
Język Java (Sun Microsystems) jest innym przykładem ciągłości koncepcji maszyn wirtualnych
kompilator Javy wytwarza tzw. kod pośredni (czy bajtkod) zawierający instrukcje wykonywane przez wirtualną maszynę Javy (Java Virtual Machine - JVM)
aby program w Javie mógł być wykonany na jakiejś platformie, musi w niej działać maszyna JVM
JVM działa na wielu typach komputerów, na przeglądarkach sieciowych, a także na małym systemie operacyjnym Java OS
urządzenia specjalizowane np. telefony komórkowe mogą być oprogramowane z użyciem Javy
koncepcja maszyny wirtualnej jest trudna do implementacji, zrealizowanie dokładnej kopii maszyny bazowej wymaga wielkiego wysiłku
3.55
Wirtualna maszyna Java
3.56
Założenia projektowe i implementacja systemu operacyjnego
System operacyjny powinien być projektowany zgodnie z:
celami użytkowników – czyli powinien być wygodny i łatwy w użyciu, łatwy do nauki, niezawodny, bezpieczny i szybki
cele systemu - czyli powinien być łatwy do
zaprojektowania, implementacji, utrzymywania i obsługi;
powinien być elastyczny, niezawodny, wolny od błędów i wydajny
Jest to sposób relatywnie trudny, a sformułowanie specyfikacji i projektowanie SO jest pracą twórczą;
ogólne zasady są natomiast określone w ramach inżynierii oprogramowania.
3.57
Założenia projektowe i implementacja systemu operacyjnego
Mechanizm a polityka
Polityka decyduje co ma być zrobione
Mechanizmy określają jak czegoś dokonać;
np. mechanizmem gwarantującym ochronę procesora jest czasomierz; decyzja o tym na jak długo czasomierz jest nastawiany dla poszczególnych użytkowników, leży w sferze polityki
Odseparowanie polityki od mechanizmów jest bardzo ważne; pozwala na maksymalną elastyczność systemu w sytuacji późniejszych zmian polityki
Można zdefiniować pewien mechanizm (związany, powiedzmy z priorytetami operacji), który w zależności od polityki będzie, albo uprzywilejowywał operacje wejścia/wyjścia, albo operacje np.:
arytmetyczne.
3.58
Założenia projektowe i implementacja systemu operacyjnego
Implementacja systemu
Tradycyjne SO-e pisano w językach asemblera, obecnie można je pisać w językach wyższego poziomu pierwszy SO napisany nie w asemblerze to MCP napisany w Algolu; następnie
MULTICS w PL/1
Primus w Fortranie
UNIX, OS/2, Windows NT niemal w całości w języku C (tylko 900 linii kody w UNIX-ie napisano w asemblerze)
Kodując SO w języku wysokiego poziomu uzyskuje się:
szybką implementację
bardziej zwarty kod
łatwiej zrozumiały i poprawny kod
jest znacznie łatwiejsze przenoszenie systemu na inne platformy sprzętowe
Po pełnym przetestowaniu, efektywność działania SO zakodowanego w języku wysokiego poziomu można zwiększyć, tłumacząc najbardziej czasochłonne procedury (wąskie gardła) na asembler
3.59
Generowanie systemu (SYSGEN)
SO-e są projektowane tak, aby mogły działać na dowolnej klasie maszyn, w instalacjach ze zmienną konfiguracją urządzeń zewnętrznych; system musi być skonfigurowany dla każdej specyficznej instalacji komputera;
Program generujący system, SYSGEN uzyskuje informacje dotyczące specyficznej konfiguracji (typ i ilość procesora, pamięci, urządzenia I/O, inne wymagania….) systemu dane te mogą być wykorzystane na kilka sposobów:
zostaną wprowadzone zmiany w kopii kodu źródłowego systemu i musi nastąpić jego całkowita kompilacja
zostaną utworzone tablice i wybrane zawczasu skompilowane moduły, a następnie skonsolidowane
zostanie generowany system całkowicie sterowany tablicami
rozruch (booting) - start przez załadowanie jądra systemu przez program rozruchowy zapisany w pamięci ROM, a najczęściej program ten odczytuje z dysku położenie pliku jądra SO, dzięki czemu w elastyczny sposób możemy dostosowywać maszynę do wymagań użytkowników.