System operacyjny jest specjalnym typem programu, 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ć inne programy.
Podstawowym celem systemu operacyjnego jest:wydajna eksploatacja sprzętu komputerowego.spowodowanie, aby system komputerowy był wygodny w użyciu.
Pierwsze komputery były wielkimi (fizycznie) maszynami obsługiwanymi za Pośrednictwem konsoli. Popularnymi urządzeniami wejściowymi były czytniki kart i przewijaki taśm. Na wyjściu najczęściej można było spotkać drukarki wierszowe, przewijaki taśm i perforatory kart. Użytkownicy takich systemów nie współpracowali bezpośrednio z systemem komputerowym. Przeciwnie, użytkownik przygotowywał zadanie, które składało się z programu, danych i pewnych, charakteryzujących zadanie informacji sterujących (karty sterujące), po czym przedkładał to wszystko operatorowi komputera. Systemy operacyjne tych pierwszych komputerów były zupełnie proste.
Podstawowym ich obowiązkiem było automatyczne przekazywanie sterowania od jednego zadania do następnego. System operacyjny rezydował na stałe w pamięci operacyjnej, aby przyspieszyć przetwarzanie, zadania o podobnych wymaganiach grupowano razem i wykonywano w komputerze w formie tzw.wsadu Programiści zostawiali zatem programy operatorowi. Operator sortował je w grupy o podobnych wymaganiach i z chwilą, gdy komputer stawał się dostępny, przekazywał poszczególne pakiety zadań do wykonania.
Kolejnym krokiem było wprowadzenie metody przetwarzania nazwanej spooling, od skrótu pełnej nazwy angielskiej „simultaneous peripheral operation on-line” (jednoczesna, bezpośrednia praca urządzeń). Spooling w istocie polega na tym, że używa się dysku jako olbrzymiego bufora do czytania z maksymalnym wyprzedzeniem z urządzeń wejściowych oraz do przechowywania plików wyjściowych do czasu, aż urządzenia wyjściowe będą w stanieje przyjąć
Spooling umożliwia nakładanie w czasie operacji wejścia-wyjścia jednego zadania na obliczenia innych zadań. Nawet w prostym systemie procedura spooler może czytać dane jednego zadania i równocześnie drukować wyniki innego. W tym samym czasie może być wykonywane jeszcze inne zadanie(lub zadania), które czyta swoje „karty" z dysku i również na dysku„drukuje" wiersze swoich wyników. Spooling kosztem pewnego obszaru pamięci na dysku i niewielu tablic procesor pozwalał Wykonywać obliczenia jednego zadania równocześnie z operacjami wejścia-wyjścia dla innych zadań.
Ze spoolingiem jest związana bardzo ważna struktura danych - pula zadań Gdy kilka zadań znajdzie się na urządzeniu o dostępie bezpośrednim - jak dysk, wówczas staje się możliwe planowanie zadań (szeregowanie zadań; ang. job scheduling). Sytuacja taka ma miejsce gdy kilka zadań jest gotowych do wprowadzenia do pamięci operacyjnej, lecz brakuje dla wszystkich miejsca, wobec tego system musi wybierać spośród nich. Wybrawszy któreś z zadań z puli, system wprowadza je do pamięci operacyjnej w celu wykonania. Przechowywanie wielu programów w pamięci w tym samym czasie wymaga jakiegoś zarządzania pamięcią Jeżeli kilka zadań jest gotowych do działania w tym samym czasie, to system musi wy-brać któreś z nich. Tego rodzaju decyzje są planowaniem przydziału procesora.
Podział czasu (inaczej wielozadaniowość; ang. multitasking) stanowi logiczne rozszerzenie wieloprogramowości. Procesor wykonuje na przemian wiele różnych zadań, przy czym przełączenia następują tak często, że użytkownicy mogą współdziałać z każdym programem podczas jego wykonania.
Interakcyjny lub bezpośredni system komputerowy umożliwia bezpośredni dialog użytkownika z systemem. Użytkownik wydaje bezpośrednio instrukcje systemowi operacyjnemu lub programowi i otrzymuje natychmiastowe odpowiedzi. Za wejście służy zazwyczaj klawiatura, a jako wyjściowe - ekran (np. ekran monitora). Po wykonaniu jednego polecenia system szuka następnej „instrukcji sterującej" przekazywanej nie za pośrednictwem czytnika kart, lecz klawiatury użytkownika. Aby użytkownicy mogli wygodnie korzystać zarówno z danych, jak i z oprogramowania, powinien mieć bezpośredni dostęp do systemu plików.
Plik jest zestawem powiązanych informacji, zdefiniowanym przez jego twórcę. Z grubsza biorąc, w plikach pamięta się programy (zarówno w postaci źródłowej, jak i wynikowej) oraz dane. Pliki danych mogą zawierać liczby, teksty lub mieszane dane alfanumeryczne. Pliki mogą mieć układ swobodny, jak w plikach tekstowych, lub precyzyjnie określony format
Zazwyczaj pliki są zorganizowane w logiczne niepodzielne grupy, czyli katalogi (ang. directories), ułatwiające ich odnajdywanie i wykonywanie na nich działań. Ponieważ do plików ma dostęp wielu użytkowników, jest pożądane, by istniał nadzór nad tym, kto i w jaki sposób z nich korzysta. W systemie operacyjnym z podziałem czasu zastosowano planowanie przydziału procesora i wieloprogramowość, aby zapewnić każdemu użytkownikowi możliwość korzystania z małej porcji dzielonego czasu pracy komputera. Każdy użytkownik ma przynajmniej jeden oddzielny program w pamięci. Załadowany do pamięci operacyjnej i wykonywany w niej program przyjęto nazywać procesem Aby zagwarantować akceptowalny czas odpowiedzi,zadania z pamięci operacyjnej trzeba niekiedy odsyłać na dysk i wprowadzać do niej z powrotem. Dysk staje się zapleczem dla pamięci głównej komputera. Popularną metodą osiągania tego celu jest pamięć wirtualna czyli technika umożliwiająca wykonywanie zadania nie mieszczącego się w całości w pamięci operacyjnej. Aby zagwarantować porządek wykonywanych działań, w systemie muszą istnieć mechanizmy synchronizowania zadań oraz komunikacji między nimi; system musi również zapewniać, że zadania nie będą się zakleszczać, nieustannie wzajemnie na siebie czekając
Dzisiejsze systemy są w większości jednoprocesorowe, tzn. mają tylko jedną, główną jednostkę centralną. Obserwuje się jednakże zainteresowanie systemami wieloprocesorowymi W systemach tego rodzaju pewna liczba procesorów ściśle współpracuje ze sobą, dzieląc szynę komputera, zegar, a czasami pamięć i urządzenia zewnętrzne. Systemy takie nazywa się ściśle powiązanymi. Obecnie w systemach wieloprocesorowych używa się najczęściej modelu wieloprzetwarzania symetrycznego (ang. symmetric multiprocessing), w którym na każdym procesorze działa identyczna kopia systemu operacyjnego. Kopie te komunikują się ze sobą w zależności od potrzeb. W niektórych systemach zastosowano wieloprzetwarzanie asymetryczne polegające na tym, że każdy procesor ma przypisane inne zadanie. Systemem takim zawiaduje procesor główny. Inne procesory albo czekają na instrukcje od procesora głównego, albo zajmują się swoimi uprzednio określonymi zadaniami. Procesorg główny planuje i przydziela prace procesorom podporządkowanym.
Struktura, w której procesory nie dzielą pamięci ani zegara, natomiast każdy procesor ma własną pamięć lokalną a komunikacja odbywa się za pomocą różnych linii komunikacyjnych nazywa się zazwyczaj systemami luźno powiązanymi lub rozproszonymi.
Właściwości systemów rozproszonych:
Podział zasobów:Po połączeniu ze sobą różnych stanowisk (o różnych możliwościach) użytkownik jednego stanowiska może korzystać z zasobów dostępnych na innym. Podział zasobów w systemie rozproszonym tworzy mechanizmy dzielonego dostępu do plików w węzłach zdalnych, przetwarzania informacji w rozproszonych bazach danych, drukowania plików w węzłach zdalnych, zdalnego użytkowania specjalizowanych urządzeń sprzętowych i wykonywania innych operacji.
Przyspieszanie obliczeń: Jeśli pewne obliczenie da się rozłożyć na zbiór obliczeń cząstkowych, które można wykonywać współbieżnie, to system rozproszony umożliwia przydzielenie tych obliczeń do poszczególnych stanowisk i współbieżne ich wykonanie. Ponadto, jeżeli pewne stanowisko jest w danej chwili przeciążone zadaniami, to część z nich można przenieść do innego, mniej obciążonego stanowiska. Takie przemieszczanie zadań nazywa się dzieleniem obciążeń (ang. load sharing).
Niezawodność:W przypadku awarii jednego stanowiska
w systemie rozproszonym pozostałe mogą kontynuować pracę.
Innym rodzajem specjalizowanego systemu operacyjnego jest system czasu rzeczywistego (ang. real-time). System czasu rzeczywistego jest stosowany tam, gdzie istnieją surowe wymagania na czas wykonania operacji lub przepływu danych,
Istnieją dwie odmiany systemów czasu rzeczywistego.
Rygorystyczny system czasu rzeczywistego gwarantuje terminowe wypełnianie krytycznych zadań. Osiągnięcie tego celu wymaga ograniczenia wszystkich opóźnień w systemie, poczynając od odzyskiwania przechowywanych danych, a kończąc na czasie zużywanym przez system na wypełnienie dowolnego zamówienia.
Łagodny system czasu rzeczywistego ,w którym krytyczne zadanie do obsługi w czasie rzeczywistym otrzymuje pierwszeństwo przed innymi zadaniami i zachowuje je aż do swojego zakończenia. Podobnie jak w rygorystycznym systemie czasu rzeczywistego opóźnienia muszą być ograniczone Żaden z istniejących, uniwersalnych systemów operacyjnych nie umożliwia działania w czasie rzeczywistym. Systemy te nie mają również większości cech nowoczesnych systemów operacyjnych, które oddalają użytkownika od sprzętu, zwiększając niepewność odnośnie do ilości czasu zużywanego przez operacje.
Za proces można uważać program, który jest wykonywany. W myśl tego zadanie wsadowe jest procesem; program użytkownika wykonywany w systemie z podziałem czasu też jest procesem. Procesem jest również zadanie systemowe, Na razie można przyjąć, że procesem jest zadanie lub program pracujący w systemie z podziałem czasu, choć w istocie pojęcie procesu jest tu o wiele ogólniejsze. Program sam w sobie nie jest procesem Program jest elementem pasywnym, tak jak zawartość pliku przechowywanego na dysku. Natomiast proces jest jednostką aktywną, której licznik rozkazów określa następną instrukcję do wykonania. Wykonanie procesu musi przebiegać w sposób sekwencyjny. Jednostka centralna wykonuje instrukcje procesu jedna po drugiej, aż do jego zakończenia. Jeden wykonywany program rodzi wiele procesów .Proces jest jednostką pracy w systemie. W takim ujęciu system składa się ze zbioru procesów, z których część to procesy systemu operacyjnego (te, które wykonują kod systemu), pozostałe zaś są procesami użytkowymi (wykonującymi kod określony przez użytkownika). Wszystkie procesy potencjalnie mogą być wykonywane współbieżnie, na zasadzie multipleksowania między nimi jednostki centralnej.
Aby wypełnić swoje zadanie, proces musi korzystać z pewnych zasobów, takich jak czas jednostki centralnej, pamięć, pliki i urządzenia wejścia- wyjścia. Zasoby te proces otrzymuje w chwili jego utworzenia albo są one przydzielane procesowi podczas jego działania. W odniesieniu do zarządzania procesami system operacyjny odpowiada za następujące czynności: tworzenie i usuwanie zarówno procesów użytkowych, jak systemowych; wstrzymywanie i wznawianie procesów; dostarczanie mechanizmów synchronizacji procesów; dostarczanie mechanizmów obsługi zakleszczeń
W celu właściwego wykorzystanie jednostki centralnej, jak i szybszej reakcji komputera na polecenia jego użytkowników należy przechowywać kilka programów w pamięci operacyjnej. Jest wiele różnych sposobów zarządzania pamięcią. Odzwierciedlają one różne podejścia do tego zagadnienia, przy czym efektywność poszczególnych algorytmów zależy od konkretnej sytuacji. Wybór sposobu zarządzania pamięcią zależy od wielu czynników, a zwłaszcza od rozwiązań sprzętowych zastosowanych w danym systemie. Każdy algorytm wymaga swoistego wspomagania sprzętowego. W odniesieniu do zarządzania pamięcią system operacyjny odpowiada za:
utrzymywanie ewidencji aktualnie zajętych części pamięci wraz z informacją, w czyim są władaniu; decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów pamięci; przydzielanie i zwalnianie obszarów pamięci stosownie do potrzeb.
System operacyjny definiuje pliki,czyli jednostki logiczne przechowywanej informacji, niezależne od fizycznych właściwości używanych urządzeń pamięci. System operacyjny odwzorowuje pliki na fizyczne nośniki informacji i umożliwia do nich dostęp za pomocą urządzeń pamięci. Pliki są zazwyczaj zorganizowane w katalogi, co ułatwia ich użytkowanie. Jeśli wielu użytkowników ma dostęp do plików, to może być pożądane sprawowanie pieczy nad tym, kto i w jaki sposób korzysta z tego dostępu.W odniesieniu do zarządzania plikami system operacyjny odpowiada za:
tworzenie i usuwanie plików; tworzenie i usuwanie katalogów; dostarczanie elementarnych operacji do manipulowania plikami i katalogami; odwzorowywanie plików na obszary pamięci pomocniczej; składowanie plików na trwałych nośnikach pamięci
Jednym z celów systemu operacyjnego jest ukrywanie przed użytkownikiem szczegółów dotyczących specyfiki urządzeń sprzętowych. Osobliwości urządzeń wejścia-wyjścia są ukrywane przed większością samego systemu operacyjnego przez tzw. podsystem wejścia-wyjścia. Podsystem ten składa się z: części zarządzającej pamięcią, wliczając w to: buforowanie, pamięć podręczną i spooling; ogólnego interfejsu do modułów sterujących urządzeń; modułów sterujących (programów obsługi) poszczególnych urządzeń sprzętowych.
Zarządzanie pamięcią pomocniczą. W odniesieniu do zarządzania dyskami system operacyjny odpowiada za: zarządzanie obszarami wolnymi; przydzielanie pamięci; planowanie przydziału obszarów pamięci dyskowej.
Ochrona jest mechanizmem nadzorowania dostępu programów, procesów lub użytkowników do zasobów zdefiniowanych przez system komputerowy. Mechanizm ten musi zawierać sposoby określania, co i jakiej ma podlegać ochronie, jak również środki do wymuszenia zaprowadzonych ustaleń.
Wiele poleceń jest przekazywanych do systemu operacyjnego za pomocą instrukcji sterujących W chwili rozpoczęcia nowego zadania automatycznie zaczyna pracować program interpretujący instrukcje sterujące. Program ten bywa niekiedy nazywany interpreterem kart sterujących lub interpreterem wiersza poleceń, a często jest znany pod nazwą powłoki.
Programy systemowe tworzą wygodniejsze środowisko do opracowywania i wykonywania innych programów.
Interpretowanie poleceń.
Manipulowanie plikami: Są to programy, które służą do tworzenia, usuwania, kopiowania, przemianowywania, składowania i wyprowadzania zawartości plików bądź katalogów.
Informowanie o stanie systemu: Pewne programy po prostu pobierają z systemu dane określające datę, czas, ilość dostępnej pamięci lub miejsca na dysku, liczbę użytkowników lub podobne informacje o stanie systemu i komputera. Uzyskana informacja jest potem formatowana i drukowana na terminalu lub innym urządzeniu wyjściowym, względnie posyłana do pliku.
Tworzenie i zmienianie zawartości plików : Rozmaite odmiany edytorów służą do tworzenia i zmieniania zawartości plików przechowywanych na dyskach lub taśmach.
Ładowanie i wykonywanie programów: Po przetłumaczeniu programu za pomocą asemblera lub kompilatora należy go wprowadzić do pamięci w celu wykonania. System może dostarczać programów ładowania kodu o adresach absolutnych i kodu przemieszczalnego, konsolidatorów oraz ładowaczy nakładek. Potrzebne są również systemy uruchomieniowe dla kodu w językach wyższego poziomu oraz w języku maszynowym.
Komunikacja: w tej grupie znajdują się programy realizujące mechanizmy tworzenia wirtualnych połączeń między procesami, użytkownikami i różnymi systemami komputerowymi.
Istnieje wiele komercyjnych systemów nie mających dobrze określonej struktury. Systemy te powstały najczęściej jako małe, proste i ograniczone systemy operacyjne, które następnie rozrastały się, przekraczając pierwotne założenia.
Modularyzację systemu można uzyskać na wiele sposobów, ale najbardziej obiecujące jest podejście warstwowe, polegające na dzieleniu systemu operacyjnego na warstwy (poziomy), przy czym każda następna warstwa jest zbudowana powyżej niższych warstw. Najniższą warstwę(warstwę 0) stanowi sprzęt; najwyższą (warstwąN) jest interfejs z użytkownikiem.
Warstwa systemu operacyjnego jest implementacją abstrakcyjnego obiektu, wyizolowanym zbiorem danych i operacji, które mogą danymi tymi manipulować. Typową warstwę systemu operacyjnego - powiedzmy warstwę M- widać na rys. Zawiera ona struktury danych i procedury, które mogą być wywołane z wyższych warstw. Natomiast warstwa M może wywołać operacje dotyczące niższych warstw.
Stosując planowanie przydziału procesora i technikę pamięci wirtualnej, system operacyjny może tworzyć złudzenie, że wiele procesów pracuje na własnych procesorach z własną (wirtualną) pamięcią. Dzięki koncepcji maszyny wirtualnej nie uzyskuje się żadnych dodatkowych funkcji, lecz tworzy jedynie interfejs identyczny z podstawowym sprzętem. Każdy proces otrzymuje (wirtualną) kopię komputera będącego podstawą systemu .Największa trudność związana z maszyną wirtualną dotyczy systemów dyskowych. Rozwiązaniem jest zastosowanie dysków wirtualnych, które są pod każdym względem identyczne z fizycznymi z wyjątkiem rozmiaru. Tego rodzaju konstrukcji nadano miano minidysków. Suma rozmiarów wszystkich minidysków musi być mniejsza od aktualnie dostępne wielkości fizycznej przestrzeni dyskowej.
Modele systemu:
(a)maszyna niewirtualna;
(b)maszyna wirtualna
Uproszczony schemat postępowania przy projektowaniu systemu operacyjnego jest następujący:
Mechanizmy określają, jak czegoś dokonać. Natomiast polityka
decyduje o tym, co ma być zrobione. Odseparowanie polityki od mechanizmu jest bardzo ważne ze względu na elastyczność. Zasady polityki zmieniają się zależnie od miejsca i czasu. W najgorszym przypadku każda zmiana polityki może pociągać konieczność zmiany leżącego u jej podłoża mechanizmu. O wiele bardziej pożądany jest mechanizm ogólny. Zmiana polityki wymaga wtedy co najwyżej przedefiniowania pewnych parametrów w systemie.
Implementacja systemu. Po zaprojektowaniu system operacyjny trzeba zrealizować. Tradycyjnie systemy operacyjne pisano w językach asemblerowych. Jednak zasada ta przestała już obowiązywać. Systemy operacyjne można obecnie pisać w językach wyższego poziomu.
Można zaprojektować i zrealizować system operacyjny wyłącznie dla jednej maszyny w jednej instalacji. Częściej jednak projektuje się systemy operacyjne przeznaczone do działania na pewnej klasie maszyn w rozmaitych instalacjach ze zmienną konfiguracją urządzeń zewnętrznych. Proces konfiguracji nazywa się niekiedy generowaniem systemu W skrajnym przypadku informacje z SYSGEN mogą posłużyć do wprowadzenia zmian do kopii kodu źródłowego systemu. Program systemu operacyjnego musi zostać potem w całości skompilowany. W bardziej elastycznej metodzie opis systemu może spowodować utworzenie tablic i wybranie zawczasu skompilowanych modułów z biblioteki. Wygenerowanie systemu nastąpi w wyniku skonsolidowania tych modułów. Na przeciwnym biegunie leży możliwość skonstruowania systemu całkowicie sterowanego tablicami. System zawiera zawsze cały kod, a wyborów dokonuje się nie podczas kompilacji lub konsolidacji, lecz w czasie wykonania.
inginiero