Zadania systemu operacyjnego
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
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 gozmieniać 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
1 3 2
4
Running
Ready
Blocked
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
Model funkcjonowania jądra monolitycznego.
aplikacje
jądro systemu operacyjnego
procesor pamięć urządzenia
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
Model komunikacji mikrojądra z aplikacjami.
aplikacje
jądro systemu operacyjnego serwery
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
Model komunikacji jądra hybrydowego z aplikacjami aplikacje
jądro systemu operacyjnego serwery