Zadania systemu operacyjnego
System operacyjny – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika.
Celem tworzenia systemów operacyjnych jest zastąpienie zapisywania w programie użytkownika sekwencji działań, łatwymi w użyciu opisami funkcjonalnymi i zapewnienie bezpiecznego wykonania programu.
Funkcje systemu operacyjnego udostępniane jako usługi tworzą maszynę wirtualną.
Wykonanie programów wymaga kontroli przydziału i ochrony zasobów systemu:
- czas procesora,
- przestrzeń pamięci,
- urządzenia wejścia/wyjścia (peryferia).
Najważniejsze z funkcji wspomagających te działania to:
- synchronizacja procesów ,
- obsługa wyjątków (exception handling) ,
- zarządzanie pamięcią (memory management) ,
- obsługa wejścia i wyjścia (I/O handling).
W celu uruchamiania i kontroli zadań użytkownika system operacyjny zajmuje się:
planowaniem oraz przydziałem czasu procesora poszczególnym zadaniom,
kontrolą i przydziałem pamięci operacyjnej dla uruchomionych zadań,
dostarcza mechanizmy do synchronizacji zadań i komunikacji pomiędzy zadaniami,
obsługuje sprzęt oraz zapewnia równolegle wykonywanym zadaniom jednolity, wolny od interferencji dostęp do sprzętu.
Dodatkowe zadania system operacyjny to:
- ustalanie połączeń sieciowych,
- zarządzanie plikami.
Wiele systemów operacyjnych posiada środowiska graficzne ułatwiające komunikacje maszyny z użytkownikiem
Systemy operacyjne ogólnego przeznaczenia dzielą się na cztery typy:
systemy wsadowe (serial batch),
systemy wieloprogramowe (multi-programming),
systemy z podziałem czasu (time-sharing),
systemy rozproszone (distributed).
W systemie wsadowym programy są wykonywane kolejno i w całości, a wszystkie działania nadzoruje procesor.
Jest możliwe buforowanie wejścia i wyjścia podczas wykonania zadania wsadowego, które umożliwia przyspieszenie transmisji i niezależne od procesora przesłanie danych między buforem i urządzeniem zewnętrznym wtedy, gdy procesor przetwarza dane.
System wieloprogramowy równolegle wykonuje program i realizuje obsługę we/wy.
W czasie, gdy w przetwarzaniu szeregowym procesor oczekiwałby na obsługę we/wy, jest wykonywany inny program, którego nie blokuje komunikacja we/wy.
Transmisję we/wy realizują procesory komunikacyjne zwane kanałami. Dzięki temu operacje we/wy nie wymagają bezpośredniego angażowania czasu procesora.
Separację zadań użytkowników zapewnia przydzielanie poszczególnym zadaniom rozłącznych obszarów pamięci głównej.
System z podziałem czasu naprzemiennie wykonuje fragmenty różnych programów. Jednocześnie użytkownik ma możliwość komunikacji z własnym programem.
Metoda jest skuteczna, jeśli zasoby systemu (szybkość procesora, rozmiar pamięci i pojemność buforów peryferiów) wystarczają do zapewnienia krótkiego czasu reakcji wszystkim użytkownikom. Przetwarzanie w trybie podziału czasu wymaga zapewnienia prywatności i bezpieczeństwa programów i danych użytkownika. W tym celu wykorzystywane są mechanizmy pamięci wirtualnej.
System z podziałem czasu nazywa się też systemem wieloprocesowym.
W rozproszonym systemie poszczególne funkcje są wykonywane współbieżnie przez różne procesory.
W celu zapewnienia dużej niezawodności przetwarzania kod zasadniczej części systemu, zwanej jądrem (systemu, wykonują niezależnie wszystkie procesory.
Pozostałe funkcje systemu mogą być wykonywane przez różne procesory. Funkcje te mają priorytet przed zadaniami użytkowników.
Historia systemów operacyjnych Wczesne komputery były urządzeniami bardzo kosztownymi, wobec czego właścicielom tych urządzeń zależało na maksymalnym wykorzystaniu ich możliwości takich jak:
- Szybkość działania interfejsów wejścia – wyjścia
- Umieszczenie na stałe w pamięci komputera oprogramowania realizującego obsługę sprzętu oraz komunikację sprzętu z użytkownikiem.
- wielozadaniowością
System operacyjny udostępnia zestaw funkcji zwanych API (Application Programming Interface) lub wywołań systemowych.
Programista może skorzystać z tych funkcji w celu uzyskania żądanego efektu, przykładowo odczytu danych z pliku dyskowego.
Jakąkolwiek czynność na sprzęcie chcą wykonać zadania użytkownika, korzysta zawsze z interfejsu systemu. Ma to tę zaletę, że o szczegółach obsługi sprzętu jest poinformowany tylko i wyłącznie system operacyjny a same zadania nie muszą znać specyfiki obsługi urządzeń.
Dzięki interfejsu użytkownika możliwa jest bezpośrednia interakcja użytkownika z komputerem.
Trzy główne elementy budowy SO :
- Jądro systemu wykonujące i kontrolujące we-wy.
- Powłoka – program komunikujący użytkownika SO,
- System plików – sposób zapisu struktury danych na nośniku.
Jądro składa się z następujących elementów :
planisty (algorytm szeregowania) czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane,
przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami.
Dodatkowo:
modułu zapewniającego synchronizacje i komunikację pomiędzy zadaniami,
modułu obsługi przerwań i zarządzania urządzeniami,
modułu obsługi pamięci.
innych zależnie od funkcji i przeznaczenia systemu.
Rodzaje systemów operacyjnych:
Podział systemów operacyjnych:
- czasu rzeczywistego,
- czasowo niedeterministyczne.
Inny rodzaj podziału:
- otwarte systemy operacyjne
- wbudowane systemy operacyjne.
Systemy otwarte można uruchomić na dowolnej maszynie wskazanego rodzaju np. PC.
Systemy wbudowane są zaszyte (wbudowane) wewnątrz urządzeń użytkowych, maszyn pojazdów itp.
Pod względem środowiska użytego do implementacji systemu można wprowadzić podział na:
- programowe,
- sprzętowe.
Sprzętowe systemy operacyjne to: sprzętowo programowe rozwiązania integrowane z wybraną architekturą procesora. Sprzętowa część systemu przyśpiesza wybrany zakres czynności wykonywanych przez system.
Jako otwarte systemy operacyjne spotyka się systemy w pełni programowe, czasowo niedeterministyczne stosujące wywłaszczenie przy przełączaniu zadań.
Wbudowane systemy operacyjne są najczęściej czasowo deterministyczne, zazwyczaj nie stosują wywłaszczenia zadań.
Funkcje realizowane przez system operacyjny dzieli się na
- użytkowe
- systemowe.
Funkcje użytkowe wspomagają działania użytkownika w środowisku programowym maszyny wirtualnej, gdyż ułatwiają dostęp do zasobów środowiska, w którym są wykonywane procesy, i uwalniają użytkownika od nadzoru nad przetwarzaniem programów.
Funkcje systemowe służą do zapewnienia poprawnego i bezkonfliktowego przetwarzania programów użytkowników.
Funkcje użytkowe dzielą się na trzy grupy:
sterowanie i kontrola wykonania programu (program control) — zapewnienie pełnej kontroli użytkownika nad kompilacją i wykonaniem programu,
obsługa we/wy (HO handling) - udostępnienie komunikacji z urządzeniami wejścia i wyjścia na poziomie przesyłania danych bez konieczności znajomości szczegółów obsługi tych urządzeń,
obsługa zbioru plików (file system manipulation) - umożliwienie przetwarzania plików bez konieczności znajomości szczegółów obsługi pamięci wtórnej.
Funkcje systemowe wykonują zadania niezbędne do przetwarzania programów użytkowych oraz bezkonfliktowej współpracy procesów współbieżnych:
zarządzanie pamięcią (memory management) - odwzorowanie w rzeczywistej fizycznej przestrzeni adresowej przestrzeni logicznej, adresowanej w programie, oraz wirtualnej przestrzeni adresowej przydzielonej procesom,
ochronę zasobów (resource protection) - wzajemną separację programów w celu zapewnienia ich prywatności, ale z możliwością kontrolowania ich komunikacji,
przydział zasobów systemu (resource allocation) poszczególnym programom,
obsługę wyjątków (exception handling) — reagowanie na zdarzenia zagrażające spójności systemu lub poprawnemu wykonaniu programów i podejmowanie rozstrzygnięć powstałych problemów,
harmonogramowanie (scheduling) - ustalenie porządku wykonania programów współbieżnych w celu optymalnego wykorzystania zasobów,
raportowanie (accounting) - tworzenie statystyk wykorzystania zasobów.
Zadania systemu operacyjnego podczas zarządzania zasobami systemu komputerowego:
- tworzenie deskryptora zasobu,
- usuwanie deskryptora zasobu,
- realizacja żądania przydziału,
- zwolnienie i odzyskiwanie zasobu.Deskryptor – identyfikator - język wyszukiwania informacji, który jest używany do opisania jego podstawowych treści semantycznej dokumentów.
Zarządzanie zasobami systemu komputerowego:
- przydział zasobów,
- synchronizacja dostępu do zasobów (zapobieganie interferencji),
- ochrona i autoryzacja dostępu do zasobów,
- odzyskiwanie zasobów,
- rozliczanie – gromadzenie danych o wykorzystaniu zasobów.
Proces - to program w stanie uruchomionym. Każdy proces wymaga przydziału pewnych zasobów, włączając w to czas procesora, pamięć, pliki oraz urządzenia wejścia/wyjścia, aby w pełni wykonać swoje zadanie.
System operacyjny jest odpowiedzialny w fazie zarządzania procesami za:
- tworzenie i usuwanie procesu,
- wstrzymywanie i przywracanie procesu,
- zapewnienie mechanizmów pozwalających na synchronizację procesów oraz komunikację między procesami.
Pamięć - to duża tablica słów lub bajtów, każda z własnym adresem, pamięć jest szybko dostępna i dzielona jest pomiędzy procesor oraz urządzenia wejścia/wyjścia.
Pamięć główna jest ulotnym miejscem przechowywania danych, traci swoją zawartość w czasie awarii systemu.
System operacyjny jest odpowiedzialny w fazie zarządzania pamięcią za:
- utrzymywanie informacji, która część pamięci jest aktualnie używana i przez kogo,
- decydowania, który proces powinien zostać wczytany do pamięci, jeżeli pamięć jest wolna,
- przydzielanie i zwalnianie pamięci.
Plik jest zbiorem informacji zdefiniowanym przez twórcę pliku. Pliki reprezentują programy oraz dane.
System operacyjny jest odpowiedzialny w fazie zarządzania plikami za:
- tworzenie i kasowanie plików,
- tworzenie i kasowanie katalogów,
- wsparcie dla użytkowników końcowych przy operacjach na plikach,
- mapowanie plików na nośniku danych,
- tworzenie kopii plików.
System wejścia/wyjścia składa się z:
- systemu buforowania,
- interfejsu urządzeń głównych,
- sterowników (kontrolerów) dla specyficznych urządzeń.
Pamięć główna jest ulotna i często za mała aby obsłużyć wszystkie programy i dane, dlatego stosuje się nośniki danych (najczęściej dysk twardy) do powiększania tej pamięci tak zwanej pamięć drugiego rzędu. Na napędach tych mapuje się pamięć główną.
System operacyjny jest odpowiedzialny w fazie zarządzania nośnikami danych za:
- zarządzanie wolną pamięcią,
- alokacją zapisu,
- planowaniem dysku.
Jedynym dodatkowym urządzeniem koniecznym do uruchomienia wielozadaniowego systemu operacyjnego jest licznik zliczający interwały czasowe.
Zaplecze sprzętowe systemów operacyjnych
W celu uzyskania systemu o dużym stopniu niezawodności procesory posiadają cechy wspierające działanie systemów operacyjnych. Cechy te to:
tryby pracy:
- uprzywilejowany (kerel/supervisor mode).
- chroniony (protected mode). W chronionym trybie pracy niektóre potencjalnie niebezpieczne instrukcje procesora są niedostępne, a próba wywołania ich spowoduje wystąpienie przerwania. Wszelka aktywność zadań (aplikacji) użytkownika oraz powłoki odbywa się w chronionym trybie pracy.
- jednostki zarządzania i ochrony pamięci, pozwalające definiować obszary pamięci np. tylko do odczytu lub tylko do zapisu przez wybrany proces.
kontrolery przerwań, gdy licznik taktujący system operacyjny wyliczy żądany interwał czasowy informacja o tym zdarzeniu przekazywana jest do procesora przy pomocy przerwania.
specjalistyczne akceleratory sprzętowe służące do przyśpieszania pewnych typowych czynności wykonywanych przez systemy operacyjne. Ta funkcjonalność jest rzadko spotykana i zazwyczaj spotyka się ją we wbudowanych systemach.
Ochrona i zarządzanie pamięcią
Działanie mechanizmów zarządzania i ochrony pamięci opiera się na wsparciu sprzętowym dostarczanym przez kontrolery pamięci wbudowane w procesor (lub chipset).
Technicznie ochrona realizowana jest poprzez podział obszaru pamięci na segmenty i strony. Zadanie użytkownika, które jest aktywowane w danej chwili przywraca swój kontekst poprzez ustawienie odpowiednich rejestrów CPU jak i rejestrów kontrolnych jednostki zarządzania pamięcią.
Dzięki ochronie pamięci awaria jednego zadania i próba błędnego nadpisana przestrzeni adresowej innych zadań jest niemożliwa.
Amiga: AmigaOS, AROS, MorphOS
Apple: Apple DOS, ProDOS, Darwin, GS/OS, iOS, Mac OS, OS X, Atari ST: TOS, MultiTOS, FreeMiNT, MagiC, Be, BeOS,
DEC/Compaq: AIS, OS-8, RSTS/E, RSX, OpenVMS,
Google: Android, Chrome OS,
IBM:OS/2, AIX, OS/400, OS/390, VM/CMS
CL: EXEC, JEAN, MINIMOP, GEORGE, KOZBER MANUL, Microsoft i pochodne: MS-DOS, PC-DOS, DOS, Microsoft Windows, PetrOS, ReactOS
Novell: Novell NetWare, Novell DOS
NeXT: NeXTStep
Unisys: MCP(Master Control Program), OS 2200
UNIX i jego pochodne: AIX, Android, BSD, Darwin, Digital UNIX, HP-UX, iOS, IRIX, OS X, Oracle Solaris, Oracle, Venix , GNU, Linux,
Systemy operacyjne czasu rzeczywistego (realtime systems)
LynxOS, FlexOS, OS9, Phoenix-RTOS, QNX, Nut/OS, RT-Linux, VxWorks, Suse Linux Enterprise Real Time
System wbudowany (Embedded system) - system komputerowy specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu.
Każdy system wbudowany oparty jest na mikroprocesorze (lub mikrokontrolerze), zaprogramowanym do wykonywania ograniczonej ilości zadań lub nawet tylko do jednego.
Na projektowanie systemu wbudowanego składa się
- opracowywanie warstwy sprzętowej,
- odpowiedniego oprogramowania. W tym wydzielić można obszar systemowy i aplikacyjny.
Warstwa systemowa tworzy środowisko wykonania dla aplikacji wbudowanej i, w zależności od obszaru zastosowań, cechuje się różnym stopniem skomplikowania.
Zaawansowane systemy, przeznaczone dla medycyny, lotnictwa, telekomunikacji czy robotyki realizowane są w oparciu o specjalne systemy operacyjne lub biblioteki, które zawierają mechanizmy i funkcje ułatwiające tworzenie aplikacji i testowanie systemu.
System wbudowany może zawierać oprogramowanie:
- dedykowane wyłącznie temu urządzeniu (firmware)
- może to być system operacyjny wraz ze specjalizowanym oprogramowaniem.
Może o tym decydować też stopień niezawodności jakie ma oferować dany system wbudowany. Ogólną zasadą jest, że im mniej złożone i specjalizowane jest oprogramowanie, tym bardziej system jest niezawodny oraz może szybciej reagować na zdarzenia krytyczne.
Niezawodność systemu wbudowanego może być zwiększona, przez rozdzielenie zadań na mniejsze podsystemy, a także przez redundancję. Polegać to może np. na zastosowaniu do jednego zadania dwóch identycznych urządzeń, które mogą przejąć zadania drugiego, w przypadku awarii jednego z nich.
Za pierwszy komputer wbudowany uznaje się ten, który sterował amerykańskim statkiem kosmicznym Apollo.
Systemy wbudowane znajdują zastosowanie we wszystkich dziedzinach, gdyż w obecnych czasach dąży się aby wszystkie urządzenia były inteligentne i zdolne do pracy autonomicznej oraz wykonywały coraz bardziej złożone zadania.
Przykłady, w których stosuje się systemy wbudowane:
- układy sterujące pracą silnika samochodowego;
- sprzęt sterujący samolotami, rakietami,
- sprzęt medyczny;
- sprzęt pomiarowy: oscyloskopy, analizatory;
- bankomaty i podobne urządzenia ATM;
- termostaty, klimatyzatory; kuchenki mikrofalowe, zmywarki;
- sterowniki stosowane w przemyśle do sterowania i kontroli procesów i maszyn produkcyjnych;
- sterowniki do wszelkiego rodzaju robotów mechanicznych,
- systemy alarmowe służące do ochrony osób i mienia
- telefony komórkowe i centrale telefoniczne;
- drukarki, kserokopiarki; kalkulatory;
- sprzęt komputerowy: dyski twarde, napędy optyczne, routery;
- systemy rozrywki multimedialnej i interaktywnej: konsole do gier: stacjonarne i mobilne automaty np. do gier oraz inne;
- telewizory, odtwarzacze DVD, kamery cyfrowe.
SoC (System-on-a-chip)- mianem tym określa się układ scalony zawierający kompletny system elektroniczny, w tym układy cyfrowe, analogowe (także radiowe) oraz cyfrowo-analogowe. Poszczególne moduły tego systemu, pochodzą zwykle od różnych dostawców. Przykładowo jednostka centralna pochodzi od jednego dostawcy, a porty komunikacji szeregowej od innego.
Typowym obszarem zastosowań SoC są systemy wbudowane.
W przypadku, gdy niemożliwe jest zintegrowanie wszystkich obwodów na jednym podłożu półprzewodnikowym, poszczególne moduły wykonuje się na oddzielnych kryształach, a całość zamyka się w jednej obudowie. Rozwiązanie takie określane jest mianem SiP (System-in-a-package).