Wstęp, historia i zadania systemów operacyjnych


Streszczenie

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.


Czym jest system operacyjny?

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:

Z powyższych definicji systemów operacyjnych wyłaniają się trzy podstawowe cele systemu operacyjnego:
  1. Umożliwienie użytkownikom uruchamiania programów i ułatwianie wykonywania zadań stawianych przez użytkowników.
  2. Stworzenie użytkownikom wygodnego i funkcjonalnego środowiska pracy.
  3. 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.


Wczesne systemy wsadowe

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: 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.

Systemy wieloprogramowe

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:

Systemy z podziałem czasu

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.


Komputery osobiste

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.


Rodzaje systemów operacyjnych

Rodzina systemów operacyjnych jest liczna i zróżnicowana. Przyjrzyjmy się teraz różnym rodzajom systemów operacyjnych.

Systemy równoległe

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ść.

Systemy rozproszone

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: 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

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.


Podsumowanie

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.

Słownik

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.

Zadania

  1. (2p.) Podaj trzy podstawowe cele systemów operacyjnych.
  2. (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?
  3. (2p.) Gdzie opłaca się stosować systemy równoległe?
  4. (2p.) Jakie są główne zalety systemów rozproszonych?
  5. (2p.) Podaj przykład systemu czasu rzeczywistego z bezwzględnymi i łagodnymi wymogami czasowymi.

Strona przygotowana przez Marcina Kubicę i Krzysztofa Stencla.