Transcript pobierz
Bibliografia:
„Systemy operacyjne. Struktura i zasada budowy” W. Stallings; wyd. MIKOM
„Podstawy systemów operacyjnych” A. Silberschatz; wyd. WNT
http://pl.wikipedia.org/
Zadania systemu
operacyjnego
Zadania systemu operacyjnego
1. Wygodna obsługa – wygodny, domyślny
interfejs
2. Wydajność – system plików
3. Możliwość rozwoju – system plików,
interfejs, przenośność
Idea budowy komputera
- architektura
von Neumanna
Architektura von Neumanna
Architektura von Neumanna - rodzaj
architektury komputera, przedstawionej po
raz pierwszy w 1945 roku przez Johna von
Neumanna stworzonej wspólnie z Johnem
W. Mauchly'ym i Johnem Presper Eckertem.
Architektura von Neumanna
Polega na ścisłym podziale komputera na trzy
podstawowe części:
•
procesor (w ramach którego wydzielona bywa część
sterująca oraz część arytmetyczno-logiczna)
•
pamięć komputera (zawierająca dane i sam
program)
•
urządzenia wejścia/wyjścia
Architektura von Neumanna
System komputerowy zbudowany w oparciu o architekturę
von Neumanna powinien:
•
mieć skończoną i funkcjonalnie pełną listę rozkazów
•
mieć możliwość wprowadzenia programu do systemu
komputerowego poprzez urządzenia zewnętrzne i jego
przechowywanie w pamięci w sposób identyczny jak
danych
•
dane i instrukcje w takim systemie powinny być
jednakowo dostępne dla procesora
•
informacja jest tam przetwarzana dzięki
sekwencyjnemu odczytywaniu instrukcji z pamięci
komputera i wykonywaniu tych instrukcji w procesorze.
Architektura von Neumanna
Podane warunki pozwalają przełączać system
komputerowy z wykonania jednego zadania (programu)
na inne bez fizycznej ingerencji w strukturę systemu, a
tym samym gwarantują jego uniwersalność.
System komputerowy von Neumanna nie posiada
oddzielnych pamięci do przechowywania danych i
instrukcji.
Instrukcje jak i dane są zakodowane w postaci liczb. Bez
analizy programu trudno jest określić czy dany obszar
pamięci zawiera dane czy instrukcje.
Architektura von Neumanna
Wykonywany program może się sam modyfikować
traktując obszar instrukcji jako dane, a po przetworzeniu
tych instrukcji - danych - zacząć je wykonywać.
Model komputera wykorzystującego architekturę von
Neumanna jest często nazywany przykładową maszyną
cyfrową (PMC).
Idea budowy komputera
- architektura
harwardzka
Architektura harwardzka
- rodzaj architektury komputera.
W odróżnieniu od architektury von Neumanna, pamięć
danych programu jest oddzielona od pamięci rozkazów.
Podstawowa architektura komputerów zerowej generacji i
początkowa komputerów pierwszej generacji.
Prostsza (w stosunku do architektury von Neumanna)
budowa przekłada się na większą szybkość działania dlatego ten typ architektury jest często wykorzystywany
w procesorach sygnałowych oraz przy dostępie
procesora do pamięci cache.
Architektura harwardzka
Separacja pamięci danych od pamięci rozkazów sprawia,
że architektura harwardzka jest obecnie powszechnie
stosowana w mikrokomputerach jednoukładowych, w
których dane programu są najczęściej zapisane w
nieulotnej pamięci ROM (EPROM/EEPROM), natomiast
dla danych tymczasowych wykorzystana jest pamięć
RAM (wewnętrzna lub zewnętrzna).
Pamięć wirtualna.
Plik wymiany
Plik wymiany
Pamięć wirtualna - składa się z pliku wymiany (pliku
stronicowania) i zainstalowanej fizycznej pamięci RAM.
Plik wymiany w Windows – pagefile.sys jest ukryty,
chroniony przez system i użytkownik nie może go
zmieniać bezpośrednio.
Plik stronicowania – używany przez system Windows do
przechowywania części plików programów i danych,
które są zbyt duże i nie mogą być umieszczone w całości
w pamięci.
System Windows przenosi dane z pliku stronicowania do
pamięci zgodnie z potrzebami oraz z pamięci do pliku
stronicowania , aby zwolnić miejsce dla nowych danych.
Plik wymiany
W systemie Windows XP tylko jądro systemu operuje
bezpośrednio na pamięci RAM.
Wszystkie inne procesy i aplikacje korzystają w mniejszym
lub większym stopniu z pośrednictwa pamięci wirtualnej.
W pamięci RAM przechowywane są dane pozostające
aktualnie w użyciu.
Jeśli w pamięci RAM nie ma już miejsca, system przenosi
do pliku stronicowania wszystko to, co w danej chwili nie
jest konieczne.
Tworzy w ten sposób wolne miejsce dla danych bieżących.
Każda informacja z pliku wymiany potrzebna w danej chwili
przenoszona jest do pamięci RAM.
Ćwiczenia
Ćwiczenie 1
Sygnałem, że pamięci może być za mało , jest wyraźne
spowolnienie pracy systemu.
Zajrzeć do Menedżera zadań [Alt] + [Ctrl] + [Delete]
Menedżer zadań / Wydajność – Pamięć - Razem
Ćwiczenie 2
Lokalizacja pliku stronicowania – znajdź plik stronicowania
Wyszukaj – pagefile.sys
Defragmentacja pliku wymiany
Pamięć wirtualną powinno ustawiać się na dysku
zdefragmentowanym – to jednak nie daje gwarancji
zachowania ciągłości tego pliku.
Dynamicznie rozciągający się plik ulega fragmentacji –
operacje na takim pliku tracą na wydajności.
Defragmentator Windows nie potrafi scalać pliku
pagefile.sys.
Najlepiej skorzystać z programu narzędziowego np..
darmowy PageDefrag
Ćwiczenie 3
Ustawienie wielkości pliku stronicowania
Panel sterowania / System / Zaawansowane
– Wydajność – Ustawienia
Zaawansowane / Pamięć wirtualna / Zmień
-Ustaw
Kombinacje rozmiaru
- rozmiar niestandardowy
- rozmiar początkowy
- rozmiar maksymalny
- rozmiar kontrolowany przez system
- bez pliku stronicowany
Tryby pracy
procesora
Tryby pracy procesora
Tryb rzeczywisty – real mode
Tryb chroniony – protected mode
Tryb wirtualny – virtual mode
Procesy i wątki
Proces w systemie operacyjnym
Procesem nazywamy wykonujący się program
wraz z jego środowiskiem obliczeniowym.
Proces stanowi podstawowy obiekt dynamiczny
w systemie operacyjnym.
Wymagania odnośnie systemu operacyjnego odnośnie
zarządzania procesami:
• umożliwienie przeplatania się wykonywania procesów,
• akceptowalnie krótki czas odpowiedzi systemu,
• zarządzanie przydziałem zasobów poszczególnym
procesom,
• udostępnianie mechanizmów do komunikacji
międzyprocesowej,
• udostępnianie mechanizmów do tworzenia procesów.
Tworzenie i kończenie procesów
Utworzenie procesu może być rezultatem:
• inicjalizacji systemu,
• wywołania przez już uruchomiony proces funkcji
systemowej do tworzenia procesu,
• zlecenia użytkownika utworzenia nowego procesu,
• uruchomienia zadania wsadowego.
Tworzenie i kończenie procesów
Zakończenie działania procesu może być rezultatem:
• zakończenia algorytmu procesu,
• celowego zakończenia w wyniku wystąpienia błędu,
• wykonania niedozwolonej operacji (zakończenie
wymuszone),
• otrzymania sygnału od innego procesu (zakończenie
wymuszone).
Stany procesów
Running
1
2
3
Blocked
Ready
4
Stany procesów
•
uruchomiony - (ang. running), w danej chwili wykonuje się na
procesorze,
•
gotowy - (ang. ready), gotowy do wykonania, ale wstrzymany w
oczekiwaniu na przydział czasu procesora,
•
wstrzymany - (ang. blocked), nie może kontynuować pracy do
momentu wystąpienia pewnego zewnętrznego zdarzenia.
Stany procesów w systemie Unix
• uruchomiony w trybie użytkownika - (ang. user
running),
• uruchomiony w trybie jądra - (ang. kernel running),
• gotowy, w pamięci - (ang. ready to run, in memory),
• wstrzymany, w pamięci - (ang. asleep in memory),
• gotowy wymieciony - (ang. ready to run, swapped),
Stany procesów w systemie Unix
• wstrzymany, wymieciony - (ang. sleeping,
swapped),
• wywłaszczony - (ang. preempted),
• utworzony - (ang. created),
• zombie - (ang. zombie).
Typowe pola elementu tablicy procesów
Zarządzanie procesem
Zarządzanie pamięcią
Rejestry
Wskaźnik do segmentu kodu
Licznik rozkazów (PC)
Wskaźnik do segmentu danych
Słowo stanu procesora (PSW)
Wskaźnik do segmentu stosu
Wskaźnik stosu
Stan procesu
Priorytet
Parametry szeregowania
Zarządzanie plikami
ID procesu
Katalog root
Typowe pola elementu tablicy procesów
Zarządzanie procesem
Zarządzanie pamięcią
Proces rodzic
Katalog bieżący
Grupa procesu
Deskryptory plików
Sygnały
ID użytkownika
Czas startu procesu
ID grupy
Użyty czas CPU
Czas następnego alarmu
Zarządzanie
pamięcią
Zarządzanie pamięcią
Zarządzanie pamięcią (ang. Memory
Management, MM) na poziomie systemu
operacyjnego uwarunkowane jest
architekturą systemu.
Zarządzanie pamięcią
Oczekiwania w stosunku do pamięci systemu:
• by była duża,
• by była szybka,
• by była nieulotna.
Hierarchia pamięci:
• mała szybka droga pamięć (np. cache),
• średnia, średnio szybka, umiarkowanie droga,
pamięć (np. pamięć operacyjna),
• ogromna, wolna i tania pamięć (np. pamięć
dyskowa/ taśmowa).
Organizacja zarządzania pamięcią
W zależności od długości pola adresacji
przestrzeń adresowa może pokrywać się z
zakresem adresów pamięci operacyjnej, może
być większa lub mniejsza.
Na organizację zarządzania mają wpływ:
• pole adresowe argumentów rozkazu,
• miejsce pola adresacji w słowie,
• sprzętowe możliwości przekształcania pola
adresacji.
Funkcje systemu
operacyjnego w kontekście
zarządzania pamięcią:
Funkcje systemu operacyjnego w kontekście
zarządzania pamięcią:
• zagospodarowanie przestrzeni adresowej
poprzez wykorzystanie mechanizmów translacji
adresów,
• ochrona zawartości pamięci,
• organizacja dostępu do obszarów dzielonych,
• efektywna organizacja pamięci operacyjnej.
Jądro systemu
operacyjnego
Jądro systemu operacyjnego
Jądro systemu operacyjnego (ang. kernel) –
podstawowa część systemu operacyjnego,
która jest odpowiedzialna za wszystkie jego
zadania.
Budowa jądra systemu operacyjnego
Jądro monolityczne
Jądro monolityczne – często stosowane w systemach
typu Unix. Wszystkie zadania są wykonywane przez
jądro, będące jednym, dużym programem
działającym w trybie jądra.
Przykładami takiego jądra są systemy z rodziny Linux,
chociaż większość posiada umiejętność dołączania i
odłączania modułów (najczęściej zawierających kod
sterownika urządzenia lub obsługi potrzebnego w
danej chwili systemu plików).
Jądro monolityczne
aplikacje
jądro systemu operacyjnego
procesor
pamięć
urządzenia
Model funkcjonowania jądra monolitycznego.
Zalety i wady
• Zaletą tej techniki jest prostota, stabilność, łatwość
komunikacji pomiędzy różnymi członami jądra (jedna
przestrzeń adresowa).
• Wadą jest, w późniejszym stadium rozwoju projektu,
uciążliwość w rozwijaniu programu oraz w
znajdywaniu błędów.
Mikrojądro
Mikrojądro – w tej technice z monolitycznego
jądra zostaje tylko jego podstawowa część, a
części odpowiedzialne za bardziej
wyrafinowane funkcje są wydzielone do
funkcjonalnych bloków albo realizowane jako
zwykłe procesy w trybie użytkownika.
Mikrojądro
serwery
aplikacje
jądro systemu operacyjnego
Model komunikacji mikrojądra z aplikacjami.
Nanokernel
nanokernel – technika zbliżona do techniki
mikrojądra, różnica w wielkości – nanokernel
jest jeszcze mniejszy.
Exokernel
Exokernel – architektura będąca odmianą nanojądra.
Cechą wyróżniającą jest możliwość zarządzania
zasobami systemu przez nieuprzywilejowanego
użytkownika, a rola jądra sprowadza się do
zabezpieczania zasobów.
Przykładem systemu korzystającego z tego typu jądra
jest system XOK, zbudowany w MIT Laboratory for
Computer Science, pracujący na komputerach PC.
Wyposażony on został w bibliotekę ExOS, która
implementuje system UNIX i umożliwia uruchamianie
większości aplikacji tego systemu.
Cachekernel
Cachekernel – w tej technice jądro systemu
buforuje obiekty systemowe takie jak wątki
czy przestrzenie adresowe tak jak sprzęt
komputerowy buforuje pamięć.
Jądra aplikacji trybu użytkownika są
odpowiedzialne za ładowanie tych danych i
ponowne ich zapisanie stosując specyficzne
dla danej aplikacji mechanizmy.
Jądro hybrydowe
Jądro hybrydowe – kompromis między architekturą
jądra monolitycznego i mikrojądra.
W krytycznych usługach - np. stos sieci - 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.
Klasyfikacja ta budzi kontrowersje niektórych
programistów.
Jądro tego typu zastosowano w systemie Windows.
Jądro hybrydowe
aplikacje
jądro systemu operacyjnego
serwery
Model komunikacji jądra hybrydowego z aplikacjami