System operacyjny to warstwa oprogramowania pośrednicząca między sprzętem komputera a aplikacjami użytkownika. Głównymi komponentami są jądro oraz zestaw usług i bibliotek, które pozwalają na wygodne wykorzystanie zasobów maszyny. Jądro odpowiada za tworzenie i obsługę procesów, zarządzanie pamięćą, koordynację dostępu do system plików oraz nadzorowanie urządzeń. Wiele mechanizmów jest też dedykowanych kwestii bezpieczeństwo i izolacji od nieautoryzowanych działań.
Podstawowe zadania systemu operacyjnego
Każdy system operacyjny realizuje zestaw kluczowych funkcji, dzięki którym aplikacje mogą działać niezależnie od szczegółów sprzętowych. Do najważniejszych zadań należą:
- zarządzanie procesami – tworzenie, synchronizacja i zakończenie procesów;
- kontrola pamięći – przydział przestrzeni wirtualnej i fizycznej;
- obsługa system plików – organizacja, alokacja i dostęp do danych;
- sterowanie urządzeniami – komunikacja przez sterowniki i przerwania;
- zapewnienie bezpieczeństwoi – uprawnienia, uwierzytelnianie, izolacja procesów;
- udostępnianie interfejsu użytkownika – powłoki tekstowe, środowiska graficzne.
Zarządzanie procesami i wątkami
Procesy
Proces to jednostka wykonawcza uruchamiana przez system. Każdy proces posiada strukturę kontrolną (PCB), w której przechowywane są informacje o stanie, priorytecie oraz kontekście wykonania. Dzięki tej izolacji możliwe jest równoległe uruchamianie wielu programów bez wzajemnego zakłócania się.
Wątki
Wyróżniamy także lżejsze jednostki wykonawcze, czyli wąteki, które dzielą przestrzeń adresową danego procesu. Pozwala to na efektywniejsze harmonogramowanie i mniejsze zużycie zasobów podczas przełączania między zadaniami. Wątki są podstawą tworzenia aplikacji wielowątkowych, umożliwiając równoczesne przetwarzanie zadań wewnątrz jednego procesu.
Zarządzanie pamięcią
System operacyjny nadzoruje przydzielanie i zwalnianie pamięći, zapewniając, że żaden proces nie nadpisze danych innego. Kluczowe techniki to:
- pamięć wirtualna – każdy proces widzi swoją spójną przestrzeń adresową;
- segmentacja – podział pamięci na logiczne segmenty, np. kod, dane, stos;
- stronicowanie – dzielenie pamięci na strony o stałym rozmiarze, umożliwiające dynamiczny przydział i zarządzanie fragmentacją;
- swap – przenoszenie rzadko używanych stron na dysk;
- mechanizmy ochrony – bit r/w, tabele stron, prawa dostępu.
Dzięki tym mechanizmom system chroni stabilność, izoluje procesy i optymalizuje wykorzystanie zasobów fizycznych.
System plików i pamięć masowa
Operacje na danych realizowane są przez warstwę system plików. Organizuje ona strukturę katalogów, alokuje miejsce na dysku i zapewnia spójność danych w razie awarii. Typowe funkcje to:
- alokacja plików – ciągła, listowa lub wielowarstwowa;
- zarządzanie katalogami – hierarchiczne drzewo lub graf;
- buforowanie i cache – przyspieszanie odczytu i zapisu;
- mechanizmy dziennikowania – journal, log-structured FS;
- uprawnienia i atrybuty – odczyt, zapis, wykonanie dla użytkowników i grup.
Przykłady popularnych systemów plików to FAT32, NTFS, ext4 oraz XFS. Każdy z nich różni się podejściem do wydajności, odporności na błędy i obsługi dużych wolumenów.
Sterowanie urządzeniami i sterowniki
Komunikacja z elementami sprzętowymi odbywa się za pomocą sterowniki – fragmentów kodu implementujących interfejsy urządzeń. Kluczowe mechanizmy to:
- przerwania – szybkie reagowanie na zdarzenia sprzętowe;
- wejście/wyjście programowe – odwołania do portów I/O;
- Direct Memory Access (DMA) – bezpośredni transfer danych do pamięci;
- kolejkowanie operacji – harmonogramowanie odczytów i zapisów;
- buforowanie – minimalizacja opóźnień i zwiększenie wydajności.
System zarządza kolejkami zadań I/O, wspiera hot-plugging i pozwala na ładowanie modułów sterowników w locie.
Wirtualizacja i izolacja
Współczesne systemy operacyjne często oferują mechanizmy wirtualizacja sprzętu oraz izolacji środowisk. W zależności od architektury wyróżnia się:
- hiperwizory typu 1 – działające bezpośrednio na sprzęcie;
- hiperwizory typu 2 – uruchamiane jako aplikacja pod innym OS;
- kontenery – lekkie izolowane środowiska współdzielące jądro;
- sandboxing – ograniczenie dostępu procesów do zasobów;
- mechanizmy SELinux, AppArmor – polityki bezpieczeństwa na poziomie jądra.
Dzięki tym technologiom możliwe jest uruchamianie wielu wirtualnych maszyn lub kontenerów na jednym fizycznym hoście z gwarancją separacji i bezpieczeństwoi aplikacji.