Struktura systemu operacyjnego.

Struktura systemu operacyjnego.

Na system operacyjny składają się zazwyczaj:

  • jądro systemu,
  • oprogramowanie systemowe (m.in. sterowniki)
  • interpreter poleceń bądź GUI

 Głównym elementem systemu operacyjnego jest jego jądro (ang. kernel), które stanowi trzon platformy programowej. Jadro jest traktowane jako zbiór procedur, które są odpowiedzialne za bezpośrednie zarządzanie sprzętem komputerowym i udostępniają zestaw usług służących do implementacji oprogramowania systemowego – jest interfejsem pomiędzy sprzętem a oprogramowaniem użytkowym. Można pokusić się o stwierdzenie że jądro systemu to właśnie system operacyjny.

Najważniejsze zadania jądra systemowego to:

  • zarządzie procesami,
  • zarządzanie pamięcią operacyjną,
  • obsługa systemu wejścia-wyjścia,
  • zarządzanie plikami i przestrzenią dyskową,
  • uwierzytelnianie i ochrona,
  • implementacja interfejsu poleceń.

Istnieje kilka podstawowych koncepcji budowy jądra systemu operacyjnego:

  • Jądro monolityczne. Jadro to duży program, którego zadaniem jest wykonywanie wszystkich najważniejszych funkcji i zadań systemu operacyjnego. Zaletą jądra monolitycznego jest szybkość działania (jądro nie jest rozbite na wiele podprogramów). Oprócz tego, jeśli jest ono dobrze przygotowane, może mieć niewielkie rozmiary a ponadto w jednym pliku łatwiej wyszukuje się ewentualne błędy. Do wad tego typu jądra można zaliczyć:
      •  trudności w rozbudowie jednego wielkiego programu;
      • błędy związane z jedną częścią oprogramowania mogą wpłynąć na stabilność całego jądra,
      • źle przygotowane jądro może się także rozrosnąć do dużych rozmiarów;
      • moduły i jadro korzystają z jednej przestrzeni adresowej, co może rzutować na stabilność systemu.

Z tego typu jądra korzystają systemy operacyjne z rodziny Unix. 

  • Mikrojądro. Jest ono stosunkowo małe i zawiera wyłącznie mechanizmy niskopoziomowe odpowiedzialne za:
      • zarządzanie przestrzenią adresową ,
      • zarządzanie wątkami,
      • komunikacja między procesami.

Funkcje związane z obsługą sterowników urządzeń, protokołów sieciowych czy systemów plików są przenoszone do specjalnych bloków lub przestrzeni użytkowników i uruchamiane jako moduły.
Oto zalety mikrojądra:

  • rozwój kodu źródłowego jest łatwy;
  • implementacja nowych funkcjonalności  nie wymaga ponownej kompilacji jądra;
  • błąd w jednym elemencie systemu nie na jego ogólną stabilność.

Do wad zaliczamy:

  • dość trudny proces wyszukiwania błędów;
  • uruchomienie wielu programów prowadzi do spadku wydajności i większego obciążenia pamięci;

System który korzysta z mikrojądra to : Minix.

  • Jądro hybrydowe. Jest połączeniem koncepcji dwóch powyższych rozwiązań: łączy szybkość i prostotę konstrukcji jądra monolitycznego oraz modułowość i bezpieczeństwo mikrojądra. Jądro hybrydowe uruchamia pewne moduły w swojej przestrzeni w celu zmniejszenia utraty wydajności, a jednocześnie przenosi określone funkcjonalności w postaci usług do przestrzeni użytkownika. Dla przykładu w wewnętrznej strukturze jądra hybrydowego można implementować wirtualny system plików i sterowniki magistrali, natomiast zarządzanie systemem plików i pamięcią masową może zostać przeniesione poza jądro i być uruchamiane jako usługa. Jądra hybrydowe  są wykorzystywane w systemach z rodziny Windows NT.

 W skład systemu operacyjnego mogą wchodzić również programy systemowe, które nie są częścią jądra.

Kolejnym elementem systemu operacyjnego jest interpreter poleceń, który może być zaimplementowany w jądrze systemu lub przyjmować postać odrębnego programu, np. interfejsu graficznego.

W zależności od rodzaju zastosowanego jądra system operacyjny może cechować:

  • Wielozadaniowość. Umożliwia wykonywanie wielu procesów na zasadzie dzielenia czasu mikroprocesora.
  • Wielodostępność (ang. multiuser). Umożliwia pracę wielu użytkowników systemu operacyjnego w tym samym czasie.
  • Wielowątkowość (ang. mulihreading). Umożliwia wykonanie jednego procesu w ramach kilku wątków.
  • Wielobieżność (ang. reentrant). Kilka procesów może mieć dostęp do interfejsu jadra (praca w trybie jądra), dzięki czemu wszystkie mogą korzystać z funkcji systemowych.
  • Skalowalność (ang. scalability). Cecha ta opisuje możliwość łatwej rozbudowy elementów systemu operacyjnego. Ważne jest, aby mimo zwiększenia objętości systemu nie spadła jego wydajność.
  • Wywłaszczenie. Technika ta pozwala na wstrzymanie jednego procesu, aby możliwe było uruchomienie innego. Zawieszenie jednego procesu nie wstrzymuje całego systemu operacyjnego.