Nowoczesne systemy operacyjne

Transkrypt

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

Podobne dokumenty