Kiedy umieścimy jądro Linux w kontekście, możesz pomyśleć o maszynie z Linuksem, która ma 3 warstwy:
- Sprzęt: maszyna fizyczna – podstawa systemu, składająca się z pamięci (RAM) i procesora lub jednostki centralnej (CPU), a także urządzeń wejścia / wyjścia (I / O), takich jak pamięć masowa, sieć i grafiki. Procesor wykonuje obliczenia, odczytuje i zapisuje w pamięci.
- Jądro Linuksa: rdzeń systemu operacyjnego. (Widzisz? Jest w samym środku). To oprogramowanie rezydujące w pamięci, które mówi procesorowi, co ma robić.
- Procesy użytkownika: są to uruchomione programy, którymi zarządza jądro. Procesy użytkownika łącznie tworzą przestrzeń użytkownika. Procesy użytkownika są również nazywane tylko procesami. Jądro umożliwia również tym procesom i serwerom komunikację ze sobą (nazywaną komunikacją międzyprocesową lub IPC).
Kod wykonywany przez system działa na procesorach w 1 z 2 trybów:
- tryb jądra (ang. kernel space)
- tryb użytkownika (ang. user space)
Kod działający w trybie jądra ma nieograniczony dostęp do sprzętu, podczas gdy tryb użytkownika ogranicza dostęp do procesora i pamięci. Podobna separacja istnieje w przypadku pamięci (przestrzeń jądra i przestrzeń użytkownika). Te dwa drobne szczegóły stanowią podstawę niektórych skomplikowanych operacji, takich jak separacja uprawnień dla bezpieczeństwa, budowanie kontenerów i maszyn wirtualnych.
Oznacza to również, że jeśli proces nie powiedzie się w trybie użytkownika, szkody są ograniczone i można je odzyskać przez jądro. Jednak ze względu na dostęp do pamięci i procesora awaria procesu jądra może spowodować awarię całego systemu. Ponieważ istnieją zabezpieczenia i uprawnienia wymagane do przekraczania granic, awarie procesów użytkownika zwykle nie powodują zbyt wielu problemów. Z tego też powodu założenie w/w dwóch kontekstów rozwiązuje wiele skomplikowanych problemów podczas tworzenia oprogramowania. Można dzięki temu ustalić czytelnie, na jakiej warstwie działamy i przydzielić zasoby dla programu jaki tworzymy.
Rozwiązuje to też problem znany i nielubiany problem z konkurencyjnymi systemami operacyjnymi (nie bazującymi na jądrze Linux), tzn. blokada przed przedostaniem się wirusa komputerowego, robaka lub malware do jądra systemu operacyjnego. Oczywiście, regularne łatki bezpieczeństwa, które tworzą wolontariusze z całego świata, wspiera potężnie bezpieczeństwo systemu Linux.