Wstęp, historia i zadania systemów operacyjnych
W rozdziale tym przedstawimy cele i zadania systemów operacyjnych,
pokrótce omówimy historię systemów komputerowych oraz
przedstawimy różne rodzaje systemów operacyjnych.
System operacyjny jest istotną częścią wszystkich systemów komputerowych.
Istnieje wiele definicji systemów operacyjnych, tak jak istnieje wiele
systemów operacyjnych.
Każda z definicji charakteryzuje system operacyjny z innej perspektywy.
System operacyjny:
- Pośredniczy między użytkownikiem a sprzętem komputerowym.
Przedstawiono to poniżej na rysunku.
Użytkownicy korzystają z systemu komputerowego poprzez rozmaite
programy użytkowe.
Programy te nie mają jednak bezpośredniego dostępu do sprzętu
komputerowego.
Korzystają tu z pośrednictwa systemu operacyjnego.
System operacyjny określa sposoby korzystania z zasobów
sprzętowych.
- Udostępnia programom maszynę wirtualną.
System operacyjny pośrednicząc między programami i sprzętem
komputerowym ukrywa
wiele szczegółów technicznych przed programami.
Programy widzą urządzenia w uproszczony, jednolity sposób,
niezależny od konkretnego rodzaju sprzętu i niskopoziomowych
szczegółów jego obsługi.
W ten sposób, programy nie widzą konkretnego sprzętu, a jedynie
uproszczoną i ujednoliconą maszynę wirtualną.
- Przydziela sprzętowe zasoby systemu komputerowego programom.
Zasoby te, to np. pamięć, procesor, urządzenia wejścia/wyjścia.
Programy uruchamiane przez użytkowników potrzebują tych zasobów
do wykonania realizowanych przez nie zadań.
To jednak system operacyjny przydziela te zasoby.
Można go przyrównać do kierownika przedsiębiorstwa.
Decyduje o tym, ile i jakich zasobów ma być przydzielonych
poszczególnym pracownikom tak, aby ci mogli realizować powierzone
im zadania.
Sam jednak nie wytwarza nic, a jedynie dba o sprawne
funkcjonowanie przedsiębiorstwa.
W sytuacji gdy dochodzi do konfliktów między programami o
przydzielenie zasobów, system operacyjny musi rozstrzygać
te konflikty dbając o
zaspokojenie potrzeb wszystkich programów.
- Nadzoruje pracę programów.
W sytuacji, gdy w systemie komputerowym działa wiele programów,
nieprawidłowe działanie programu może zakłócić działanie innych
programów lub wręcz całego systemu komputerowego.
System operacyjny przeciwdziała temu.
Pilnuje, aby programy korzystały prawidłowo z powierzonych
im zasobów,
aby nie ingerowały w zasoby przydzielone innym programom i
przeciwdziała ewentualnym błędom.
System operacyjny odgrywa tu rolę policjanta.
- Tworzy wygodne i bezpieczne środowisko pracy dla użytkowników.
System operacyjny (wraz z programami użytkowymi) tworzy
środowisko pracy użytkownika.
W dużej mierze, to od systemu operacyjnego zależy, czy użytkownik
będzie czuł się wygodnie w tym środowisku.
O tej wygodzie decyduje przede wszystkim
interfejs użytkownika,
zestaw podstawowych narzędzi udostępnianych przez system,
wydajność systemu komputerowego, jego niezawodność i
bezpieczeństwo.
- Przechowuje dla użytkowników rozmaite informacje.
Zadania wykonywane przez systemy komputerowe wiążą się
(przeważnie) z przetwarzaniem informacji.
Użytkownicy chcą przechowywać w systemie komputerowym rozmaite
informacje.
Do systemu operacyjnego należy ułatwienie im tego,
stworzenie odpowiedniego
mechanizmu magazynowania informacji (np. system plików)
wraz z podstawowymi narzędziami.
Z powyższych definicji systemów operacyjnych wyłaniają się
trzy podstawowe cele systemu operacyjnego:
- Umożliwienie użytkownikom uruchamiania programów i ułatwianie
wykonywania zadań stawianych przez użytkowników.
- Stworzenie użytkownikom wygodnego i funkcjonalnego
środowiska pracy.
- Efektywne wykorzystanie zasobów systemu komputerowego.
Zwykle mianem "system operacyjny" określa się całość oprogramowania
realizującego
powyższe cele, dostarczanego razem (często przez dostawcę
sprzętu komputerowego).
Aby dokładniej zrozumieć czym są systemy operacyjne, prześledzimy
historię ich ewolucji.
Pierwsze komputery były wielkimi maszynami wyposażonymi najczęściej
w drukarki, czytniki kart, przewijaki taśm i konsolę.
Ze względu na ich cenę i koszty utrzymania priorytetem było efektywne
wykorzystanie czasu pracy komputera.
Użytkownicy nie mieli bezpośredniego dostępu do komputera.
Pracę komputera nadzorował wyspecjalizowany operator.
Użytkownicy przekazywali swoje zadania, czyli programy i dane wejściowe
(zazwyczaj w formie kart perforowanych),
operatorowi, a po jakimś czasie mogli odebrać wyniki
(w postaci wydruków).
Operator łączył zadania o podobnych wymaganiach w tzw.
wsady (ang. batch).
System operacyjny był bardzo prosty, jego rola sprowadzała się do
wczytywania kolejnych zadań i uruchamiania ich.
Podstawową miarą wydajności takiego systemu jest
czas obrotu zadania
czyli czas między przedłożeniem zadania do wykonania a pojawieniem
się wyników.
Spooling
W systemach wsadowych procesor był o kilka rzędów wielkości
szybszy od urządzeń
wejścia/wyjścia (czytników kart i drukarek).
W miarę upływu czasu ta dysproporcja pogłębiała się, gdyż
prędkości procesorów
rosły szybciej niż prędkości urządzeń wejścia/wyjścia.
Operacje wejścia/wyjścia w niewielkim tylko stopniu angażują procesor.
W rezultacie, procesor był często bezczynny, gdyż czekał na odczytanie
lub wypisanie danych.
W momencie gdy pojawiły się dyski magnetyczne, nowy szybki nośnik
informacji,
powstała nowa technologia,
pozwalająca na zwiększenie wydajność systemu:
spooling
(ang. simultaneous peripherial operation on-line).
Spooling polega na tym, że równocześnie odbywają się trzy rzeczy:
- nowe zadania są wczytywane przez czytnik(i) kart i zapisywane na
dysku,
- procesor pobiera kolejne zadania z dysku, wykonuje je i zapisuje
wyniki na dysku,
- wyniki zakończonych zadań są drukowane na drukarce(-kach).
Dzięki spoolingowi operacje wejścia/wyjścia mogły odbywać się
równocześnie z obliczeniami.
Za cenę dysku magnetycznego i części pamięci operacyjnej można było
tak efektywnie wykorzystać czas pracy procesora.
Synchronizacja wczytywania zadań, wypisywania wyników oraz zarządzanie
informacjami magazynowanymi na dysku stało się nowym zadaniem
systemu operacyjnego.
Mimo, iż spooling umożliwił wydajniejsze wykorzystanie procesora, to
nadal procesor był momentami bezczynny, np. w trakcie wykonywania
operacji dyskowych lub w trakcie korzystania z pomocniczych pamięci
zewnętrznych, takich jak taśmy magnetyczne.
Dalsze zwiększenie wydajności osiągnięto dzięki zastosowaniu
wieloprogramowości.
Wieloprogramowość polega na tym, że w pamięci operacyjnej komputera
znajduje się kilka działających programów.
Taki program, który został uruchomiony i załadowany do pamięci
operacyjnej będziemy nazywać
procesem.
(Jeżeli ten sam program został uruchomiony kilkakrotnie, to
tworzy on kilka odrębnych procesów.)
Gdy jeden z procesów czeka na zakończenie operacji wejścia/wyjścia,
procesor nie musi być bezczynny, może wykonywać inny proces.
Nie wszystkie zadania, które zostały wczytane i czekają na dysku na
wykonanie można równocześnie zmieścić w pamięci.
W związku z tym, przed systemem operacyjnym pojawiają się nowe wyzwania:
- zarządzanie pamięcią i pilnowanie, aby jeden proces
nie ingerował w obszar pamięci przydzielonej innym procesom,
- przydzielanie urządzeń zewnętrznych procesom,
- jeśli procesor jest bezczynny, to należy wybrać jeden z
procesów, które znajdują się w pamięci i są gotowe do
wykonania; jest to tzw.
szeregowanie
krótkoterminowe,
- jeśli zwalnia się pamięć operacyjna i można wczytać z dysku
kolejne zadanie oczekujące na wykonanie, to należy wybrać
jedno z oczekujących zadań; jest to tzw.
szeregowanie
długoterminowe.
Wieloprogramowość umożliwiła efektywne wykorzystanie czasu
pracy komputera,
jednak czas pracy programistów był wykorzystywany mało efektywnie.
Nadal nie mieli oni bezpośredniej styczności z komputerem, a jedynie
przetwarzali wsadowo zadania.
Każdy błąd w programie powodował konieczność powtórzenia zadania
i wiązał się z długotrwałymi oczekiwaniami na kolejne wyniki.
Nie było też mowy o śledzeniu wykonania programu.
Systemy z podziałem czasu były pierwszymi, które pozwoliły na
interaktywną pracę wielu użytkowników z komputerem.
Czytniki kart perforowanych zostały zastąpione
terminalami, przy których mogli pracować użytkownicy.
Podział czasu polega na tym, że procesor jest przydzielany procesom
znajdującym się w pamięci komputera w małych porcjach, "kwantach".
Gdy kwant czasu się kończy, procesor jest przydzielany kolejnemu
oczekującemu procesowi.
Kwanty czasu są na tyle małe, że użytkownicy mają wrażenie płynnej
interakcji z komputerem.
Jednocześnie, dzięki temu, że jeden użytkownik nie jest w stanie
cały czas obciążać procesora, każdy z użytkowników ma wrażenie,
że ma do dyspozycji dużą część mocy obliczeniowej komputera.
W systemie, w którym użytkownicy interakcyjnie komunikują się z
procesami, czas obrotu nie jest dobrą miarą wydajności systemu.
Lepszą miarą jest średni czas reakcji.
Czas reakcji to czas, jaki upływa od wykonania przez użytkownika
jakiejś akcji (naciśnięcia klawisza, wprowadzenia polecenia,
kliknięcia myszą itp.) do zareagowania przez proces na tę akcję.
Na czas reakcji składa się również czas oczekiwania przez proces
na przydział procesora.
Dlatego też, im krótszy jest kwant czasu, na jaki przydzielany jest
procesor, tym krócej proces czeka na przydzielenie procesora.
Z chwilą, gdy użytkownicy mieli bezpośredni kontakt z systemem
operacyjnym, pojawiły się nowe potrzeby i wzrosły wymagania
użytkowników wobec środowiska pracy oferowanego przez system
operacyjny.
Jedna z takich potrzeb dotyczyła mechanizmu przechowywania
programów i rozmaitych danych.
W rezultacie powstały systemy plików.
Realizacja systemu plików i operacji na plikach stała się
kolejnym elementem systemu operacyjnego.
Przetwarzanie wsadowe było też łączone z podziałem czasu.
Działo się tak np. w przypadku komputerów, które zostały
skonstruowane z myślą o przetwarzaniu wsadowym, a następnie
ich systemy operacyjne zostały rozszerzone o podział czasu.
Przykładem może być tu system operacyjny IBM OS/360, do którego
dodano opcję podziału czasu.
W miarę postępu technologii pojawiła się nowa klasa komputerów:
komputery osobiste.
Są to małe i tanie komputery przeznaczone jako miejsce pracy
dla jednej osoby.
Stopniowo nastąpiła zmiana hierarchii celów stawianych przed
systemami operacyjnymi dla takich komputerów.
Efektywne wykorzystanie zasobów systemowych ustąpiło miejsca
wygodzie użytkownika, która zależy głównie od interakcji
z systemem.
Tak więc najważniejszym celem systemu operacyjnego stało
się stworzenie wygodnego stanowiska pracy dla użytkownika,
nawet jeżeli miało się to odbijać na wydajności systemu.
Początkowo komputery osobiste były pozbawione mechanizmów
niezbędnych do realizacji wieloprogramowości.
Z czasem jednak stały się równie funkcjonalne jak
wcześniejsze serwery.
Obserwując różne klasy komputerów: serwery, minikomputery,
komputery osobiste oraz palmtopy i telefony komórkowe (sic!)
możemy zaobserwować ciekawe zjawisko.
W miarę postępu technologii, techniki które znalazły
wcześniej zastosowanie w systemach operacyjnych dla
komputerów "cięższej kategorii", pojawiają się z pewnym
opóźnieniem w systemach operacyjnych dla komputerów
"lżejszej kategorii".
Zjawisko to jest na tyle powtarzalne, że możemy się spodziewać,
że techniki znane z systemów operacyjnych dla serwerów,
zawitają kiedyś na komputerach przenośnych.
Rodzina systemów operacyjnych jest liczna i zróżnicowana.
Przyjrzyjmy się teraz różnym rodzajom systemów operacyjnych.
Większość systemów komputerowych jest wyposażona w pojedynczy
procesor.
Systemy równoległe to systemy komputerowe wyposażone
w wiele procesorów, które mogą równolegle wykonywać
obliczenia.
Procesory te mogą być ze sobą
ściśle powiązane, jeżeli współdzielą niektóre pozostałe
składowe systemu komputerowego (magistralę, pamięć, urządzenia
zewnętrzne, itp.).
Mogą też być luźno powiązane, jeżeli każdy procesor
posiada własną pamięć i magistralę, tworzy niezależny podsystem
komputerowy i komunikuje się
z pozostałymi podsystemami poprzez szybkie linie komunikacyjne.
Wyróżniamy dwa rodzaje równoległych systemów ściśle powiązanych:
systemy z symetrycznymi procesorami i
z asymetrycznymi procesorami.
Symetryczne procesory to równoprawne procesory centralne, które
współdzielą zegar, magistralę systemową i pamięć, wraz z jakimś
mechanizmem synchronizacji ich działania.
Symetryczna wieloprocesorowość jest obecnie najpopularniejszą
techniką konstrukcji równoległych komputerów ogólnego przeznaczenia.
Asymetryczne procesory tworzą hierarchię.
Procesor centralny rozdziela zadania między wyspecjalizowane
procesory pomocnicze.
Te procesory pomocnicze mogą też mieć swoje procesory pomocnicze,
między które rozdzielają zadania.
Asymetryczna wieloprocesorowość jest zwykle stosowana w
serwerach wyspecjalizowanych w jakimś celu.
Jest tak dlatego, że struktura podziału zadań między procesory
wynika z przeznaczenia systemu komputerowego, a jednocześnie
jest odzwierciedlona w konstrukcji sprzętu komputerowego.
Systemy równoległe pozwalają na uzyskanie większej mocy
obliczeniowej.
Jeżeli wykonywane obliczenia można zrównoleglić, to kilka
procesorów może wykonać je szybciej.
Należy jednak pamiętać, że n procesorów nigdy nie
daje n razy większej mocy obliczeniowej -
zawsze istnieją czynności, które nie mogą być wykonywane
równocześnie przez wszystkie procesory.
Moc obliczeniowa systemów równoległych jest również tańsza.
Ceny procesorów bardzo szybko rosną wraz ze wzrostem ich
prędkości.
Dlatego też kilka wolniejszych procesorów jest tańsze niż
jeden kilka razy szybszy procesor.
Systemy równoległe mogą też posiadać inne pożądane cechy:
odporność na uszkodzenia i
łagodną degradację.
Jeżeli system komputerowy jest wyposażony w mechanizmy
pozwalające wykrywać uszkodzenia procesorów,
to w przypadku awarii jednego z procesorów pozostałe procesory
mogą przejąć jego zadania.
Dzięki temu awaria części z procesorów nie prowadzi do awarii
całego systemu, lecz jedynie zmniejsza jego wydajność.
Szczególnym przypadkiem luźno powiązanych systemów równoległych
są systemy rozproszone.
Są to systemy, w których wiele komputerów połączonych w sieć
tworzy jeden system.
Użytkownik takiego systemu, niezależnie od tego, z którego komputera
korzysta, postrzega zawsze system rozproszony jako jedną spójną
całość.
Systemy rozproszone maja szereg zalet:
- niezawodność -
jeżeli niektóre z komputerów tworzących system rozproszony
ulegną awarii, to pozostałe komputery mogą je zastąpić,
przynajmniej częściowo,
- współdzielenie zasobów -
system rozproszony może udostępniać swoim użytkownikom
wszystkie zasoby znajdujące się w obrębie systemu;
dzięki temu użytkownicy mogą współdzielić zasoby systemowe,
co obniża koszty systemu;
np. pliki wszystkich użytkowników mogą być przechowywane
na wspólnych dyskach,
- zwiększenie mocy obliczeniowej -
jeżeli użytkownicy wykonują obliczenia, które można
zrównoleglić, to system rozproszony może je wykonywać
na wielu komputerach, równoważąc ich obciążenie,
- nowe usługi -
niektóre z usług oferowanych przez system operacyjny,
zwłaszcza usługi komunikacyjne, możliwe są do zrealizowania
tylko przez komputery połączone w sieć;
przykładem może być tu choćby poczta elektroniczna.
Rozproszenie wszystkich funkcji systemu operacyjnego, zwłaszcza
rozpraszanie obliczeń, jest bardzo trudne.
Dlatego też często spotyka się systemy rozproszone obejmujące
część funkcji systemu operacyjnego.
Typowym przykładem jest tu rozproszony system plików.
Najczęściej spotykana architektura systemów rozproszonych, to
architektura client-server.
W architekturze tej wiele stacji klienckich korzysta z
usług realizowanych przez jeden serwer.
W ten sposób, bez względu na to, na której stacji klienckiej
pracuje użytkownik, korzysta on (pośrednio) z usług serwera.
W przypadku niektórych zastosowań ważniejsza od wydajności jest
niezawodność systemu i jego bezawaryjna, ciągła praca.
Tworzy się wówczas grono komputerów (ang. cluster),
które dublują swoje funkcje i na zewnątrz są widoczne jako
jeden system komputerowy.
Jeśli jeden z komputerów ulegnie awarii, to pozostałe natychmiast
przejmują jego zadania i kontynuują ich wykonywanie.
Systemy czasu rzeczywistego to takie systemy, od których
wymaga się działania w określonych ograniczeniach czasowych,
np. reagowania na określone zdarzenia z ograniczonym
opóźnieniem.
Wyróżniamy przy tym dwie klasy systemów czasu rzeczywistego:
systemy z bezwzględnymi wymogami czasowymi
(ang. hard real-time systems) i
systemy z łagodnymi wymogami czasowymi
(ang. soft real-time systems).
Systemy z bezwzględnymi wymogami czasowymi to zwykle
systemy wbudowane sterujące jakimiś urządzeniami lub procesami
technologicznymi.
System taki monitoruje urządzenie(a), którymi steruje i
w określonym czasie musi reagować na zachodzące zdarzenia.
Niespełnienie wymagań czasowych może doprowadzić do
uszkodzenia sterowanych urządzeń lub może sprowadzić
niebezpieczeństwo na ludzi.
Przykładem takiego systemu jest system sterujący kuchenką
mikrofalową.
Bez względu na sposób jej użycia, otwarcie drzwiczek musi
spowodować natychmiastowe wyłączenie emisji mikrofal.
W przypadku systemów z bezwzględnymi wymogami czasowymi
zagwarantowanie, że wymogi te będą zawsze spełnione, jest
ważniejsze od efektywnego wykorzystania systemu.
Systemy z łagodnymi wymogami czasowymi to takie systemy, w
których niespełnienie nałożonych na nie wymogów czasowych
nie jest niebezpieczne, ale powoduje pogorszenie jakości
usług świadczonych przez system.
Najpopularniejszym przykładem takich systemów są systemy
multimedialne.
W pierwszym wykładzie poznaliśmy ogólnie pojęcie systemu
operacyjnego oraz cele, jakie system operacyjny ma spełniać.
Prześledziliśmy ewolucję systemów operacyjnych począwszy od
pierwszych systemów wsadowych, poprzez systemy wieloprogramowe,
aż do systemów z podziałem czasu.
Przedstawiliśmy też różne rodzaje systemów operacyjnych:
systemy równoległe, rozproszone i czasu rzeczywistego.
- asymetryczna wieloprocesorowość
-
umieszczenie w systemie wielu wyspecjalizowanych procesorów;
procesor centralny planuje i przydziela zadania do wykonania
procesorom pomocniczym.
- czas obrotu zadania
-
czas między przedłożeniem zadania do wykonania, a pojawieniem
się jego wyników.
- czas reakcji
-
czas jaki upływa od wykonania przez użytkownika
jakiejś akcji do zareagowania przez program na tę akcję.
- proces
-
uruchomiony program, który został załadowany do pamięci operacyjnej;
jeżeli ten sam program został uruchomiony kilkakrotnie, to
tworzy kilka odrębnych procesów.
- spooling
-
(ang. simultaneous peripherial operation on-line)
technika polegająca na równoczesnym:
wczytywaniu nowych zadań na dysk,
wykonywaniu zadań zapamiętanych na dysku i zapisywaniu ich wyników
na dysku,
drukowaniu wyników zapamiętanych na dysku.
- symetryczna wieloprocesorowość
-
umieszczenie w systemie komputerowym
kilku równoprawnych procesorów ściśle ze sobą powiązanych.
- system czasu rzeczywistego
-
to system komputerowy, od którego wymaga się działania
w określonych ograniczeniach czasowych,
np. reagowania na określone zdarzenia z ograniczonym
opóźnieniem.
- system operacyjny
-
całość oprogramowania umożliwiającego użytkownikom uruchamianie
programów, stwarzającego użytkownikom wygodne i funkcjonalne
środowisko pracy i umożliwiającego efektywne wykorzystanie systemu
komputerowego, dostarczanego razem (często przez dostawcę
sprzętu komputerowego).
- system rozproszony
-
system komputerowy złożony z wielu komputerów połączonych w
sieć, postrzegany przez użytkowników jak jedna spójna całość.
- system równoległy
-
system komputerowy wyposażony w wiele procesorów
wykonujących równolegle obliczenia.
- system wsadowy
-
system operacyjny dla pierwszych komputerów, charakteryzujący się
wsadowym przetwarzaniem zadań oraz tym, że użytkownicy nie mieli
bezpośredniego
dostępu do komputera, a jedynie poprzez operatora.
- szeregowanie
krótkoterminowe
-
wybór jednego z programów znajdujących się w pamięci operacyjnej
i gotowych do wykonania przez procesor.
- szeregowanie
długoterminowe
-
wybór jednego z zadań oczekujących na wczytanie do pamięci i
wykonanie.
- (2p.) Podaj trzy podstawowe cele systemów operacyjnych.
- (2p.) Podaj przykłady sytuacji z własnego życia, w których zastosowanie
równoległości działań pozwala zwiększyć wydajność pracy.
Czy potrafisz wskazać odpowiedniki procesora i urządzeń
wejścia/wyjścia?
- (2p.) Gdzie opłaca się stosować systemy równoległe?
- (2p.) Jakie są główne zalety systemów rozproszonych?
- (2p.) Podaj przykład systemu czasu rzeczywistego z bezwzględnymi i
łagodnymi wymogami czasowymi.
Strona przygotowana przez Marcina Kubicę i
Krzysztofa Stencla.