Systemy operacyjne - Zespół Szkół Nr 23

Transkrypt

Systemy operacyjne - Zespół Szkół Nr 23
Systemy operacyjne
Dariusz Wawrzyniak
! Politechnika Poznańska
Instytut Informatyki
ul. Piotrowo 3a (pokój 409)
60-965 Poznań
! [email protected]
" www.cs.put.poznan.pl/dwawrzyniak
" (61) 665 28 09
1
Definicja systemu operacyjnego (1)
! System operacyjny jest zbiorem ręcznych i automatycznych
procedur, które pozwalają grupie osób na efektywne
współdzielenie urządzeń maszyny cyfrowej
Per Brinch Hansen
! System operacyjny (nadzorczy, nadrzędny, sterujący) jest to
zorganizowany zespół programów, które pośredniczą między
sprzętem a użytkownikami, dostarczając użytkownikom zestawu
środków ułatwiających projektowanie, kodowanie,
uruchamianie i eksploatację programów oraz w tym samym
czasie sterują przydziałem zasobów dla zapewnienia
efektywnego działania
Alen Shaw
Systemy operacyjne – wprowadzenie
2
Pojęcie systemu operacyjnego jest trudne do zdefiniowania, podobnie jak trudne
jest określenie elementów składowych systemu operacyjnego, czyli: co jest
częścią systemu operacyjnego, a co nią nie jest.
2
Definicja systemu operacyjnego (2)
! System operacyjny jest programem, który działa jako pośrednik
między użytkownikiem komputera a sprzętem komputerowym.
Zadaniem systemu operacyjnego jest tworzenie środowiska, w
którym użytkownik może wykonywać programy w sposób
wygodny i wydajny.
Abraham Silberschatz
! System operacyjny jest warstwą oprogramowania operującą
bezpośredni na sprzęcie, której celem jest zarządzanie zasobami
systemu komputerowego i stworzenie użytkownikowi
środowiska łatwiejszego do zrozumienia i wykorzystania.
Andrew Tanenbaum
Systemy operacyjne – wprowadzenie
3
3
Miejsce systemu operacyjnego w architekturze
systemu komputerowego
Programy użytkowe
System operacyjny
Sprzęt
Systemy operacyjne – wprowadzenie
4
System operacyjny pośredniczy pomiędzy użytkownikiem a sprzętem,
dostarczając wygodnego środowiska do wykonywania programów. Użytkownik
końcowy korzysta z programów (aplikacji), które określają sposób wykorzystania
zasobów. System operacyjny udostępnia te zasoby, dzięki czemu można uzyskać
stosunkowo duży stopień niezależności programów od konkretnego sprzętu.
4
Zadania systemu operacyjnego
! Definicja interfejsu użytkownika
! Udostępnianie systemu plików
! Udostępnianie środowiska do wykonywania programów
użytkownika
# mechanizm ładowania i uruchamiani programów
# mechanizmy synchronizacji i komunikacji procesów
! Sterowanie urządzeniami wejścia-wyjścia
! Obsługa podstawowej klasy błędów
! Zarządzanie zasobami (sprzęt i oprogramowanie) systemu
komputerowego
Systemy operacyjne – wprowadzenie
5
Definiowanie interfejsu użytkownika: system operacyjny dostarcza użytkownikom zbiór poleceń lub system okienkowy wraz z odpowiednim menu, który
umożliwia interakcję z systemem komputerowym.
Udostępnianie systemu plików: system operacyjny organizuje i ułatwia dostęp do
informacji (zwłaszcza gramodzonej w pamięci masowej) np. w postaci
hierarchicznego systemu plików.
Udostępnianie środowisko do wykonywania programów: system operacyjny
dostarcza struktur danych do organizacji wykonywania programu oraz
zachowywania i odtwarzania stanu przetwarzania (procesy i przełączanie
kontekstu). System operacyjny udostępnia też programistom mechanizmy
komunikacji pomiędzy procesami (kolejki komunikatów, strumienie, pamięć
współdzielona) oraz mechanizmy synchronizacji procesów (np. semafory,
monitory).
Sterowanie urządzeniami wejścia-wyjścia: inicjalizacja pracy urządzeń
zewnętrznych oraz pośrednictwo w efektywnym przekazywaniu danych
pomiędzy jednostką centralną a urządzeniami zewnętrznymi.
Obsługa podstawowej klasy błędów: reakcja na błędy użytkowników (np.
niedostępność zasobów, brak prawa dostępu), programistów (np. błąd dzielenie
przez 0), systemu (np. błąd braku strony)
Funkcja zarządzania zasobami nie jest funkcją bezpośrednio wspomagającą
użytkownika lecz mającą na celu optymalizację wykorzystania zasobów przez
wielu użytkowników
5
Zarządzanie zasobami systemu komputerowego
! Przydział zasobów
! Synchronizacja dostępu do zasobów
! Ochrona i autoryzacja dostępu do zasobów
! Odzyskiwanie zasobów
! Rozliczanie — gromadzenie danych o wykorzystaniu
zasobów
Systemy operacyjne – wprowadzenie
6
Przydział zasobów: realizacja żądań dostępu do zasobów w taki sposób, że
zasoby używane są zgodnie z intencją użytkowników (np. zagwarantowanie
wyłącznego dostępu drukarki).
Synchronizacja dostępu do zasobów: strategia przydziału zasobów gwarantu-jąca
bezpieczeństwo, żywotność, brak zakleszczenia, sprawiedliwość oraz
optymalność ich wykorzystania.
Ochrona i autoryzacja dostępu do zasobów: dopuszczanie możliwości
użytkowania zasobu tylko przez osoby uprawnione i w zakresie przydzielonych
im uprawnień.
Odzyskiwanie zasobów: dołączanie zwolnionych zasobów do zbioru zasobów
wolnych po zakończeniu ich użytkowania.
Rozliczanie: rejestrowanie i udostępnianie informacji o wykorzystaniu zasobów
w celach kontrolnych i rozrachunkowych.
6
Zasoby zarządzane przez system operacyjny
! Procesor — przydział czasu procesora
! Pamięć
# alokacja przestrzeni adresowej dla procesów
# transformacja adresów
! Urządzenia zewnętrzne
# udostępnianie i sterowanie urządzeniami pamięci masowej
# alokacja przestrzeni dyskowej
# udostępnianie i sterownie drukarkami, skanerami itp.
! Informacja (system plików)
# organizacja i udostępnianie informacji
# ochrona i autoryzacja dostępu do informacji
Systemy operacyjne – wprowadzenie
7
Procesor jest zasobem współdzielonym przez wiele procesów, w związku z czym
zadaniem systemu operacyjnego jest przydział kwantu czasu procesora i
wywłaszczanie procesu, który wykorzystał już swój czas lub nie może
kontynuować przetwarzania ze względu na brak gotowości urządzeń wejściawyjścia.
Pamięć jest zasobem, do którego proces musi najczęściej mieć wyłączny dostęp.
Zadaniem systemu jest zatem utrzymywanie informacji o zajętości przestrzeni
adresowej, znajdowanie i przydzielanie odpowiednich fragmen-tów wolnej
pamięci na żądanie procesów lub innych modułów systemu operacyjnego.
System operacyjny pośredniczy również w transformacji adresów wirtualnych na
fizyczne w systemach z segmentacją lub stronicowaniem przez organizacja
tablicy segmentów lub stron, obsługę błędów strony itp.
Urządzenia zewnętrzne są stosunkowo wolne, w związku z czym w celu poprawy
efektywności zarządzanie tymi urządzeniami wymaga odpowiedniej organizacji
systemu przerwań oraz buforowania danych, ewentualnie spoolingu. Osobnym
zagadnieniem jest zarządzanie urządzeniami pamięci masowej, zwłaszcza
odpowiednia organizacja przestrzeni dyskowej oraz optymalizacja ruchu głowic
dyskowych.
Informacja jest z punktu widzenia użytkownika najważniejszym zasobem, gdyż
jej przetwarzanie jest celem systemu komputerowego. System ope-racyjny
odpowiada za organizację gromadzenia i udostępniania informacji, jej ochronę
przed niepowołaną ingerencją, spójność w przypadku awarii itp.
7
Klasyfikacja systemów operacyjnych ze względu na
sposób przetwarzania
! Systemy przetwarzania bezpośredniego (ang. on-line
processing systems) — systemy interakcyjne
# występuje bezpośrednia interakcja pomiędzy użytkownikiem a
systemem
# wykonywanie zadania użytkownika rozpoczyna się zaraz po
przedłożeniu
! Systemy przetwarzania pośredniego (ang. off-line
processing systems) — systemy wsadowe
# występuje istotna, nieznana zwłoka czasowa między
przedłożeniem zadania a rozpoczęciem jego wykonywania
# niemożliwa jest ingerencja użytkownika w wykonywanie zadania
Systemy operacyjne – wprowadzenie
8
W przypadku systemu przetwarzania bezpośredniego użytkownik przedkłada
zadanie i oczekuje na wyniki. W trakcie przetwarzania jest zatem możliwa
interakcja pomiędzy użytkownikiem a systemem (aplikacją).
W przypadku przetwarzania pośredniego zadanie jest realizowane w czasie
wybranym przez system. Po przedłożeniu zadania ingerencja użytkownika jest
niemożliwa. Wszystkie dane muszą być zatem dostępne w momencie
przedkładania zadania, a jakikolwiek błąd programowy (np. niekompletność
danych) oznacza konieczność przedłożenia i wykonania zadania ponownie.
8
Klasyfikacja systemów operacyjnych ze względu na
dopuszczalną liczbę wykonywanych programów
! Systemy jednoprogramowe — niedopuszczalne jest
rozpoczęcie wykonywania następnego zadania
użytkownika przed zakończeniem poprzedniego
! Systemy wieloprogramowe — dopuszczalne jest istnienie
jednocześnie wielu zadań (procesów), którym kolejno
przydzielany jest procesor. Zwolnienie procesora następuje
w wyniku
# żądania przydziału dodatkowego zasobu
# zainicjowaniu operacji wejścia-wyjścia
# przekroczenia ustalonego limitu czasu (kwantu czasu) — systemy
z podziałem czasu (ang. time-sharing systems)
Systemy operacyjne – wprowadzenie
9
Systemy jednoprogramowe zwane też jednozadaniowymi umożliwiają
uruchomienie jednego zadania użytkownika, które ewentualnie może być
wykonywane współbieżnie z pewnymi procedurami systemu operacyjnego.
Systemy wieloprogramowe (wielozadaniowe) dostarczają mechanizm
przełączania kontekstu umożliwiający zachowanie stanu wykonywania
określonego programu (stanu procesu), a następnie odtworzenie stanu
wykonywania innego programu (w szczególności innego wykonywania tego
samego programu).
9
Klasyfikacja systemów operacyjnych ze względu na
liczbę użytkowników
! Systemy dla jednego użytkownika — zasoby systemu
przeznaczone są dla jednego użytkownika (np. w
przypadku komputerów osobistych), nie ma mechanizmów
autoryzacji dostępu, a mechanizmy ochrony informacji są
ograniczone
! Systemy wielodostępne — wielu użytkowników może
jednocześnie korzystać ze współdzielonych zasobów
systemu w taki sposób, że żaden z nich nie musi być
świadomy istnienia innych użytkowników, a system
synchronizuje dostęp do zasobów i gwarantuje ochronę
informacji przed niepowołaną ingerencją
Systemy operacyjne – wprowadzenie
10
W systemach dla jednego użytkownika nie ma problemu autoryzacji, czyli
konieczności
identyfikowania
zleceniodawcy
poszczególnych
zadań.
Mechanizmy ochrony są ograniczone w tym sensie, że nie ma potrzeby ochrony
zasobów jednego użytkownika przed drugim użytkownikiem tego samego
systemu operacyjnego, ale w czasie powszechności sieci rozległych istnieje
jednak problem ochrony zasobów przed ingerencją z zewnątrz.
System operacyjny w przypadku wielodostępu musi zagwarantować, że jeden
użytkownik nie jest w stanie zakłócić pracy innych użytkowników. Jest to
problem właściwego udostępniania zasobów oraz dostępności mechanizmów
ochrony „prywatnych” zasobów jednego użytkownika przed ingerencją innego.
10
Inne rodzaje systemów operacyjnych
! Systemy czasu rzeczywistego (ang. real-time systems) —
umożliwiają wyspecyfikowanie czasu zakończenie
przetwarzania zadania, tzw. linii krytycznej (ang. deadline)
! Systemy sieciowe i rozproszone (ang. network and
distributed systems) — umożliwiają zarządzanie zbiorem
rozproszonych jednostek przetwarzających, czyli zbiorem
jednostek (komputerów), które są zintegrowane siecią
komputerową i nie współdzielą fizycznie zasobów
Systemy operacyjne – wprowadzenie
11
W systemach czasu rzeczywistego priorytetem jest minimalizacja czasu
odpowiedzi (czyli czasu realizacji zadania). Jest to szczególnie istotne we
wszelkiego rodzaju systemach sterowania w czasie rzeczywistym (np. w
komputerach pokładowych samochodów, samolotów, jednostek pływających itp.)
Rozproszone systemy operacyjne zapewniają, że system komputerowy złożony z
autonomicznych jednostek przetwarzających połączonych siecią komputerową
postrzegany jest jako całość, a zasoby tego systemu udostępniane są w taki sam
sposób niezależnie od ich fizycznej lokalizacji. Cecha ta odróżnia systemy
rozproszone od systemów sieciowych, które również umożliwiają dostęp do
zdalnych zasobów, ale nie ukrywają faktu fizycznego rozproszenia tych zasobów.
Inaczej mówiąc, w systemie sieciowym odróżnia się dostęp lokalny i dostęp
zdalny do zasobów.
11
Znaczenie wiedzy z zakresu systemów operacyjnych
! Wybór systemu operacyjnego jest jedną z najważniejszych
decyzji przy wyborze całego systemu komputerowego
! Funkcje systemu operacyjnego są często bezpośrednio
wykorzystywane przez użytkownika
! Wiele koncepcji i technik wyrastających i związanych z
systemami operacyjnymi ma znaczenie uniwersalne
Systemy operacyjne – wprowadzenie
12
12
Ogólna struktura systemu operacyjnego
interpreter
poleceń
programy
systemowe
Jądro systemu
operacyjnego
Sprzęt
Systemy operacyjne – wprowadzenie
14
Nie ma precyzyjnego określenia, które składniki wchodzą w skład systemu
operacyjnego jako jego części. W ogólnym przypadku w strukturze systemu
operacyjnego wyróżnia się jądro oraz programy systemowe, które dostarczane są
razem z systemem operacyjnym, ale nie stanowią integralnej części jądra. Jądro
jest zbiorem modułów, które ukrywają szczegóły sprzętowe realizacji systemu
komputerowego, udostępniając pewien zestaw usług wykorzystywanych między
innymi do implementacji programów systemowych.
Z punktu widzenia kontaktu z użytkownikiem istotny jest interpreter poleceń,
który może być częścią jądra lub programem systemowym (np. w systemie
UNIX). Interpreter wykonuje pewne polecenia wewnętrznie (tzn. moduł lub
program interpretera dostarcza implementacji tych poleceń), jeśli natomiast nie
może ich wykonać wewnętrznie zleca wykonanie odpowiednich programów na
zewnątrz interpretera.
14
Zasada działania systemu operacyjnego
! Odwołania do jądra systemu przez system przerwań lub
specjalne instrukcje (przerwanie programowe)
! Dualny tryb pracy — tryb użytkownika (ang. user mode) i
tryb systemowy (ang. system mode)
! Wyróżnienie instrukcji uprzywilejowanych,
wykonywanych tylko w trybie systemowym
! Sprzętowa ochrona pamięci
! Uprzywilejowanie instrukcji wejścia-wyjścia
! Przerwanie zegarowe
Systemy operacyjne – wprowadzenie
15
Konstrukcja jądra systemu operacyjnego wymaga wspomagania sprzętowego.
Wspomaganie sprzętowe polega na tym, że w określonych sytuacja sprzęt (np.
procesor, sterownik przerwań) lub program w wyniku wykonania specjalnej
instrukcji zgłasza przerwanie, które powoduje przekazania sterowania do jądra
systemu operacyjnego.
Program jądra systemu operacyjnego jest więc zbiorem procedur obsługi
przerwań. Znaczna część przerwań obsługiwanych przez system operacyjny to
przerwania sprzętowe, zgłaszane wewnętrznie przez procesor lub pochodzące z
urządzeń zewnętrznych i przekazywane przez sterownik przerwań. Część
przerwań to przerwania programowe, wynikające z wykonania specjalnej
instrukcji procesora, umożliwiające programom użytkownika dostęp do
wybranych funkcji jądra systemu operacyjnego.
Wyróżnienie dwóch (w niektórych procesorach nawet większej liczby)
poziomów pracy (trybów pracy) umożliwia narzucenie sprzętowych restrykcji
odnośnie wykonywania niektórych instrukcji. Proces użytkownika uruchamiany
jest w trybie nieuprzywilejowanym, w związku z czym nie może wykonać
pewnych instrukcji dostępnych tylko w trybie uprzywilejowanym i tym samym
ma ograniczoną możliwość swobodnego ingerowania w „obszary” zastrzeżone
dla systemu operacyjnego.
Sprzętowa ochrona pamięci jest niezbędna w celu zabezpieczenia przed
niewłaściwą ingerencją (dotyczy to szczególnie pamięci jądra systemu
operacyjnego) przy jednoczesnym zachowaniu efektywności dostępu.
Przerwanie zegarowe umożliwia okresowe oddanie sterowania do jądra systemu
operacyjnego (uniemożliwia utratę kontroli przez jądro na systemem komput.).
15
Przerwania w systemie komputerowym
Przerwanie jest reakcją na asynchroniczne zdarzenie,
polegającą na automatycznym zapamiętaniu bieżącego stanu
procesora w celu późniejszego odtworzenia oraz przekazaniu
sterowania do ustalonej procedury obsługi przerwania.
Podział przerwań ze względu na źródło:
! przerwania zewnętrzne — od urządzeń zewnętrznych
! przerwania programowe — wykonanie specjalnej
instrukcji
! przerwania diagnostyczne — pułapki, błędy programowe i
sprzętowe
Systemy operacyjne – wprowadzenie
16
System przerwań umożliwia niesekwencyjne (współbieżne) wykonywanie
programów. Zmiana sekwencji wykonywania instrukcji polega na tym, że w
reakcji na przerwanie następuje zapamiętanie bieżącego stanu przetwarzania
(najważniejszych rejestrów procesora), przekazanie sterowania do ustalonej
procedury obsługi i rozpoczęcie wykonywania instrucji tej procedury. W
szczególności może to prowadzić do tzw. przełączenia kontekstu, tj. przkazania
sterowania po zakończeniu procedury obsługi przerwania do innego przetwarzania, niż to które zostało przerwane.
Przerwania od urządzeń zewnętrznych zgłaszane są po zakończeniu operacji wejwyj i przkezywane do procesora najczęściej przez sterownik przerwań.
Przerwania programowe są wynikiem wykonania specjalnej instrukcji procesora,
np. int (interrupt) w procesorach firmy Intel, sc (system call) w procesorach
PowerPC firmy Motorola.
Przerwania diagnostyczne są generowane przez wewnętrznie przez procesor w
sytuacji zajścia określonego stanu. Należą do nich pułapki, błędy programowe i
sprzętowe.
Pułapka jest przerwaniem które pojawia się, gdy licznik rozkazów osiągnie
określoną wartość, tzn. będzie wskazywał na instrukcję, na której założono
pułapkę. Mechanizm ten wykorzystywany jest w konstrukcji debugger’ów.
Przykładem błędu programowego jest błąd dzielenia przez 0 lub naruszenie
ochrony pamięci. W reakcji na to przerwanie jądro usuwa proces, który je
spowodował. Błędem sprzętowym wymagającym odpowiedniej obsługi ze strony
systemu operacyjnego jest błąd braku strony w przypadku systemów z pamięcią
stronicowaną.
16
Zasady ochrony pamięci
adres
! W wyniku wykonywania
programu następuje
odwołanie do komórek
pamięci o określonych
adresach
! Zaalokowane obszary
pamięci opisane są przez dwa
parametry: bazę (ang. base) i
granicę (ang. limit)
rejestr
bazowy
ú
TAK
<
TAK
rejestr
graniczny
pamięć
Systemy operacyjne – wprowadzenie
17
Rejestr graniczny określa rozmiar opisywanego obszaru pamięci. Adresy
dostępne w tym obszarze należą do przedziału <baza, baza+granica).
Jeśli żądany adres jest mniejszy niż baza lub jest nie mniejszy niż baza+granica
następuje zgłoszenie przerwania typu pułapka i sterowanie przekazywane jest do
odpowiedniej procedury systemu operacyjnego. W wyniku wykonania tej
procedury następuje najczęściej zakończenie wykonywania procesu, który
spowodował naruszenie ochrony pamięci.
17
Przerwanie zegarowe
programy
użytkow.
! Przerwanie zegarowe generowane jest przez czasomierz (ang. timer)
po wyznaczonym okresie czasu.
! Obsługa przerwania zegarowego oznacza przekazanie sterowania do
jądra systemu operacyjnego, umożliwiając w ten sposób wykonanie
pewnych zdań okresowych oraz uniemożliwiając zawłaszczenie
procesora przez program użytkownika.
program 2
przerwanie
zegarowe
program 1
program jądra
czas
Systemy operacyjne – wprowadzenie
18
Czasomierz jest licznikiem, na którego jedno z wejść podawane są impulsy o
stałej częstotliwości, niezależnej od częstotliwości zegara procesora. Do licznika
wpisywana jest pewna wartość, która zmniejszana jest z każdym impulsem. Po
osiągnięciu wartości 0 generowane jest przerwanie zegarowe.
W wyniku przerwania zegarowego system operacyjny przejmuje sterowanie
wykonuje pewne zadania okresowe (zbiera dane statystyczne w celu
optymializacji pracy systemu) i podejmuje decyzje, któremu procesowi
przekazać procesor. Jeśli procesor przekazywany jest cyklicznie kolejnym
procesom, a stan procesu, który został przerwany, jest zapamiętywany w celu
późniejszego odtworzenia stanu i kontynuacji przetwarzania, to mamy do
czynienia z systemem z podziałem czasu (ang. time-sharing systems).
Zapamiętanie stanu jednego procesu i odtworzenie stanu innego procesu
nazywane jest przełączeniem kontekstu.
W przypadku systemów z podziałem czasu czas nie przerwanej pracy jednego
procesu, zwany kwantem czasu, jest stosunkowo krótki, żeby każdy z procesów
(użytkowników) miał wrażenie, że ma procesor do swojej wyłącznej dyspozycji.
W systemach wsadowych czas nie przerwanej pracy systemu jest dłuższy i jest
często dostarczany przez użytkownika. Przekroczenie tego czasu może oznaczać
odrzucenie zadania i konieczność powtórzenia wykonania w czasie późniejszym
od początku. System operacyjny może też zdecydować o przydziale
dodatkowego czasu.
18
Uruchamianie zdań — podstawowe pojęcia
! Użytkownik (ang. user) — jednostka zlecająca
wykonywanie zadań
! Praca (ang. job) — zbiór akcji niezbędnych do realizacji
określonego przetwarzania, np. sekwencja: kompilacja,
załadowanie (uruchomienie) programu i wykonanie
programu
! Proces (zadanie, ang. process, task) — najmniejsza
jednostka aktywności zarządzana przez system operacyjny,
która może ubiegać się o zasoby systemu komputerowego
Systemy operacyjne – wprowadzenie
19
Użytkownikiem systemu może być określona osoba lub jakiś inny system (np.
system zarządzania bazą danych), które potrzebuje takiej samej ochrony i
dostępności zasobów na takich samych zasadach, jak użytkownik-człowiek.
Praca, jako zbiór zadań, może być różnie zorganizowana, tzn. przedłożenie
następnego zadania może zależeć od wyników wykonania akcji poprzednich,
wyniki poprzednich zadań mogą być przekazywane bezpośrednio jako dane
wejściowe dla innych zadań (np. potok).
19
Rodzaje użytkowników systemu operacyjnego
! Użytkownik końcowy — korzysta z poleceń i programów
użytkowych
! Programista — w swoich programach korzysta z usług
jądra (jako użytkownik końcowy głównie z edytorów,
kompilatorów i debuggerów)
! Administrator — poprzez system praw ustala zasady
dostępności zasobów dla użytkowników oraz rozwiązuje
bieżące problemy związane w funkcjonowaniem systemu
! Programista systemowy — modyfikuje program jądra
stosownie do aktualnych potrzeb użytkowników lub
urządzeń
Systemy operacyjne – wprowadzenie
20
Użytkownik końcowy korzysta najczęściej z poleceń systemu operacyjnego lub
programów dostarczanych wraz z systemem oraz aplikacji przygotowanych dla
konkretnych zastosowań (np. system finansowo-księgowy, kadrowy,
magazynowy itp.)
Programista tworzy programy (aplikacje), w których wykorzystywane są usługi
jądra systemu operacyjnego oraz ewentualnie programy lub biblioteki procedur
zbudowane ponad jądrem. Usługi jądra wykorzystywane są zatem bezpośrednio
lub pośrednio poprzez procedury biblioteczne, dostępne w systemie na potrzeby
aplikacji tworzonych w odpowiednich narzędziach do budowy aplikacji.
Administrator jest użytkownikiem uprzywilejowanym, którego dostęp do
zasobów systemu nie jest ograniczony żadnymi restrykcjami. Jego zadaniem jest
nadzorowanie pracy systemu oraz wykonywanie zadań, które ze względów
bezpieczeństwa całości systemu nie mogą być wykonywane przez dowolnego
użytkownika.
Programista systemowy jest użytkownikiem, który zna budowę systemu
operacyjnego oraz sprzęt, związany z danym systemem i potrafi dokonać
odpowiednich modyfikacji programu jądra w celu dostosowania go do bieżących
potrzeb zarówno w zakresie funkcjonalności (obsługa nowych urządzeń) jak i
efektywności pracy systemu.
20
Koncepcja procesu
! Proces jest elementarną jednostką pracy (aktywności)
zarządzaną przez system operacyjny, która może ubiegać
się o zasoby systemu komputerowego
! Proces = wykonujący się program
! Zasoby potrzebne do wykonania procesu
# czas procesora
# pamięć operacyjna
# pliki
# urządzenia wejścia-wyjścia
! Proces wykonuje kod programu użytkownika (proces
użytkownika) lub kod systemowy (proces systemowy)
Systemy operacyjne – wprowadzenie
21
Koncepcja procesu jest jednym z najważniejszych pojęć we współczesnych
systemach operacyjnych.
Proces służy do organizowania wykonywania programu w ten sposób, że stanowi
on powiązanie niezbędnych zasobów systemu komputerowego i umożliwia
kontrolę stanu tych zasobów, związaną z wykonywaniem programu.
Istotne jest rozróżnienie pomiędzy procesem a programem. Program jest zbiorem
instrukcji. W tym sensie jest tylko elementem procesu, znajdującym się w jego
segmencie kodu (zwanym też segmentem tekstu). Poza tym do wykonania
programu potrzebne są dodatkowe zasoby (procesor, pamięć itp.) Program
najczęściej nie zmienia się w czasie wykonywania (nie ulega modyfikacji),
podczas gdy stan procesu ulega zmianie: zmienia się stan wykonywania
programu podobnie jak stan większości zasobów z tym związanych. Zmianie w
wyniku wykonywania procesu ulega np. segment danych, segment stosu, stan
rejestrów procesora itp. Procesem jest więc cały ten kontekst niezbędny do
wykonania programu.
21
Stany procesu
! Nowy (ang. new) — proces jest tworzony
! Aktywny (ang. active) — wykonywane są instrukcje
programu
! Zawieszony (oczekujący, ang. suspanded, waiting) —
proces oczekuje na jakieś zdarzenie, np. na zakończenie
operacji wejścia-wyjścia, na przydział dodatkowego
zasobu, synchronizuje się z innymi procesami
! Gotowy (ang. ready) — proces czeka na przydział
procesora
! Zakończony (ang. terminated) — proces zakończył
działanie i zwalnia zasoby
Systemy operacyjne – wprowadzenie
22
W zależności od stanu wykonywania programu i dostępności zasobów można
wyróżnić następujące, ogólne stany procesu:
NOWY — formowanie procesu, czyli gromadzenia zasobów niezbędnych do
rozpoczęcia wykonywania procesu z wyjątkiem procesora (kwantu czasu
procesora), a po zakończeniu formowania oczekiwanie na przyjęcie do kolejki
procesów gotowych.
AKTYWNY — wykonywanie instrukcji programu danego procesu i wynikająca
z ich wykonywania zmiana stanu odpowiednich zasobów systemu.
ZAWIESZONY — zatrzymanie wykonywania instrukcji program danego
procesu ze względy na potrzebę przydziału dodatkowych zasobów, konieczność
otrzymania danych lub osiągnięcia odpowiedniego stanu przez obiekty na
zewnątrz procesu (np. urządzenia zewnętrzne lub inne procesy).
GOTOWY — dostępność wszystkich niezbędnych zasobów z wyjątkiem
procesora (kwantu czasu procesora).
ZAKOŃCZONY — zakończenie wykonywania programu, zwolnienie
większości zasobów i oczekiwanie na możliwość przekazania informacji o
zakończeniu innym procesom lub jądru systemu operacyjnego.
22
Cykl zmian stanów procesu
przerwanie
nowy
zakończony
gotowy
decyzja
planisty
wyjście
aktywny
przyjęcie
zakończenie operacji
wej-wyj lub
wystąpienie zdarzenia
oczekujący
Systemy operacyjne – wprowadzenie
zażądanie operacji wejwyj lub oczekiwanie na
zdarzenie
23
Przejście ze stanu gotowy do aktywny wynika z decyzji modułu szeregującego
procesy, która oparta jest na priorytetach procesów. Jeśli w systemie jest jeden
procesor, to aktywny może być tylko jeden proces, podczas gdy inne znajdują się
w pozostałych stanach.
Przejście ze stanu aktywny bezpośrednio do gotowy wynika z wywłaszczenia w
systemach z podziałem czasu, w których proces otrzymuje tylko kwant czasu na
wykonanie kolejnych instrukcji, po czym następuje przełączenie kontekstu i
kolejny kwant czasu otrzymuje inny proces (rotacyjny algorytm szeregowania
zadań).
23
Elementy składowe jądra systemu operacyjnego
! Moduł zarządzania procesami
! Moduł zarządzania pamięcią operacyjną
! Moduł zarządzania plikami
! Podsystem wejścia-wyjścia
! Moduł zarządzania pamięcią pomocniczą
! Interfejs sieciowy
! Podsystem ochrony
! Interpreter poleceń (?)
Systemy operacyjne – wprowadzenie
24
24
Moduł zarządzania procesami
! Tworzenie i usuwanie procesów
! Wstrzymywanie i wznawianie procesów (przełączanie
kontekstu)
! Planowanie przydziału procesora (szeregowanie procesów)
! Dostarczanie mechanizmów synchronizacji i komunikacji
procesów
! Dostarczanie mechanizmów obsługi zakleszczeń (ang.
deadlock)
Systemy operacyjne – wprowadzenie
25
25
Moduł zarządzania pamięcią operacyjną
! Przydzielanie i zwalnianie obszarów pamięci
! Ochrona pamięci — utrzymywanie informacji o stanie
zajętych obszarów pamięci (prawa dostępu, właściciel itp.)
! Realizacja wymiany procesów
! Realizacja wymiany stron w przypadku wirtualizacji
Systemy operacyjne – wprowadzenie
26
26
Zarządzanie plikami
! Tworzenie i usuwanie plików
! Tworzenie i usuwanie katalogów
! Dostarczanie elementarnych operacji manipulowania
zawartością plików (zapis, odczyt, usuwanie zawartości)
! Dostarczanie elementarnych operacji do manipulowania
katalogami
! Odwzorowanie plików na obszary pamięci pomocniczej
! Składowanie plików na trwałych nośnikach pamięci
Systemy operacyjne – wprowadzenie
27
27
Podsystem wejścia-wyjścia
! Zarządzanie pamięcią przeznaczoną na potrzeby obsługi
urządzeń zewnętrznych
# buforowanie
# zarządzanie pamięcią podręczną
# spooling (simultaneous peripheral operation on-line —
jednoczesna, bezpośrednia praca urządzeń)
! Zapewnianie dostępności modułów sterujących urządzeń
(programów obsługi, ang. device drivers)
! Udostępnianie ogólnego interfejsu do modułów
sterujących urządzeń
Systemy operacyjne – wprowadzenie
28
Udostępnianie ogólnego interfejsu do modułów sterujących urządzeń oznacza, że
urządzenia dostępne są poprzez taki sam lub zbliżony zbiór funkcji, które są
jednak wykonywane w różny sposób stosownie do rodzaju urządzenia.
Dostarczanie implementacji tych funkcji jest zadaniem samego modułu
sterującego określonego urządzenia.
Spooling polega na tym, że dysk używany jest jako olbrzymi bufor służący do
przechowywania danych czytanych z maksymalnym wyprzedzeniem z wolnych
urządzeń wejściowych (np. czytników kart) lub gromadzenia danych
przesyłanych do wolnych urządzeń wyjściowych (np. drukarek). Umieszczanie
danych bezpośrednio w pamięci przez cały czas ich czytania lub zapisywania
oznaczałoby konieczność utrzymywania odpowiedniego obszaru pamięci przez
stosunkowo długi czas.
28
Zarządzanie pamięcią pomocniczą (przestrzenią
dyskową)
! Zarządzanie obszarami wolnymi
! Przydzielanie przestrzeni dyskowej
! Planowanie przydziału obszarów pamięci dyskowej
Systemy operacyjne – wprowadzenie
29
29
Podsystem ochrony
! Utrzymywanie praw dostępu
! Kontrola praw przy dostępie do zasobów
! Udostępnianie mechanizmu zmian praw dostępu
! Autoryzacja (ang. authorisation) i uwierzytelnianie (ang.
authentication) użytkownika
Systemy operacyjne – wprowadzenie
30
Prawa dostępu określają, w jaki sposób i w jakim zakresie użytkownik (lub jego
procesy) może korzystać z zasobów systemu operacyjnego.
Autoryzacja oznacza konieczność identyfikowania użytkownika (procesu) w
systemie przy dostępie do zasobów, czyli konieczność „podpisania się” pod
odpowiednim żądaniem zgłaszanym do systemu operacyjnego.
Uwierzytelnienie oznacza potwierdzenie (uwiarygodnienie, udowodnienie)
swojej tożsamości w taki sposób, żeby uniemożliwić użytkownikom podanie się
za kogoś innego. Uwierzytelnianie najczęściej wykonuje się podczas logowania
użytkownika w systemie poprzez podanie hasła, analizę linii papilarnych, badanie
tęczówki oka itp.
30
Interpreter poleceń
! Pobieranie poleceń od użytkownika
! Interpretowanie poleceń
! Wykonywanie poleceń
! Przekazywanie użytkownikowi wyników wykonania
poleceń, informacji o problemach lub błędach
Systemy operacyjne – wprowadzenie
31
Interpreter poleceń może być zrealizowany jako część jądra systemu
operacyjnego. Może też być zrealizowany poza jądrem, działa wówczas jako
proces w trybie użytkownika, korzystając z usług jądra systemu operacyjnego na
zasadach ogólnych (tak jest w systemie UNIX).
Interpreter wykonuje pewne polecenia wewnętrznie (tzn. moduł lub program
interpretera dostarcza implementacji tych poleceń), jeśli natomiast nie może ich
wykonać wewnętrznie zleca wykonanie tych poleceń na zewnątrz poprzez
uruchomienie odpowiednich programów.
31
Warstwy jądra systemu operacyjnego
zarządzanie
informacją (system plików)
zarządzanie
urządzeniami zewnętrznymi
zarządzanie
procesami (warst. wyż.)
zarządzanie
pamięcią
zarządzanie
procesami
(warstwa niższa)
maszyna
podstawowa
Systemy operacyjne – wprowadzenie
32
Struktura warstwowa jest najczęściej stosowaną w projektowani i implementacji
jądra systemu operacyjnego. Idea podejścia warstwowego polega na tym, że
operacje warstwy wyższej implementowane są z wykorzystaniem usług warstwy
niższej.
Maszynę podstawową stanowi sprzęt (procesor, pamięć, interfejs urządzeń
zewnętrznych).
Warstwa niższa moduł zarządzania procesami odpowiedzialna jest za planowanie
przydziału procesora (szeregowanie zadań) oraz synchronizacje procesów.
Warstwa wyższa odpowiedzialna jest za tworzenie i usuwanie procesów oraz za
mechanizmy komunikacji pomiędzy procesami.
Zarządzanie pamięcią sprowadza się do przydziału i zwalniania bloków pamięci.
Zarządzanie urządzeniami wejścia wyjścia obejmuje przydział i zwalnianie tych
urządzeń oraz utrzymywanie ich stanu.
Warstwa zarządzanie informacją dostarcza podstawowych operacji na plikach
(tworzenie, usuwanie, zapis, odczyt itp.)
32
Literatura
1. A. Silberschatz, J.L. Peterson, Podstawy systemów operacyjnych, WNT, W-wa,
2000.
2. Maurice J. Bach: Budowa systemu operacyjnego Unix®, WNT, W-wa 1995
3. Berny Goodheart, James Cox: Sekrety magicznego ogrodu. UNIX® System V
Wersja 4 od środka, WNT, Warszawa 2001
4. Peter P. Silvester: System operacyjny Unix™, WNT, Warszawa 1990
5. Jerzy Marczyński: UNIX użytkowanie i administrowanie, Helion, 1995
6. Marc J. Rochkind: Programowanie w systemie Unix dla zaawansowanych, WNT,
Warszawa 1993
7. Richard W. Stevens: Programowanie zastosowań sieciowych w systemie Unix,
WNT, Warszawa 1995
8. Michel Gabassi, Bertrand Dupouy: Przetwarzanie rozproszone w systemie Unix,
Lupus, Warszawa 1995
9. E. Nemeth, G. Snyder S. Seebass, T. R. Hein: Przewodnik administratora systemu
UNIX®, WNT, Warszawa 1998
10. Æleen Frisch: UNIX. Administracja systemu, Of. Wyd. READ ME, W-wa 1997
Systemy operacyjne – wprowadzenie
33
Pozycja nr 1 ma charakter teoretyczny i dotyczy ogólnej budowy i
funkcjonowania systemów operacyjnych.
Pozycje nr 2 i 3 maja charakter zbliżony do pozycji nr 1 w odniesieniu do
systemu UNIX.
Pozycje 4 i 5 dotyczą użytkowania systemu UNIX, czyli omawiają kwestie
istotne dla użytkownika końcowego.
Pozycje 6–8 dotyczą zagadnień programowania z wykorzystaniem funkcji jądra
systemu operacyjnego UNIX oraz częściowo innych mechanizmów systemowych
funkcjonujących poza jądrem.
Pozycje 9 i 10 omawiają zagadnienia administracyjne w systemie UNIX.
33

Podobne dokumenty