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

Podobne dokumenty