Mówimy, że DOS, Windows, Linux, FreeBSD, OpenBSD, ReactOS, itd. są systemami operacyjnymi. Co to tak naprawdę znaczy?
Definicji jest wiele, ja odwołam się do polskiego tłumaczenie słów Andrew Tanenbauma: "System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania.".
Myślę, że definicja jest prosta i czytelna. W każdym systemie jest to rozwiązane trochę inaczej, niemniej jednak zawsze będziemy mogli mówić o podstawowym elemencie, jakim jest jądro. Jest wczytywane i uruchamiane po starcie komputera przez moduł ładujący, czyli tzw. bootloader (ten z kolei jest uruchamiany przez BIOS/EFI) i który w obecnych systemach zawiera mechanizmy związane z obsługą procesów (ich przerywanie, kontrola uprawnień, itd.), urządzeń (sterowniki), pamięci operacyjnej, jej rozszerzenia na dysku (czyli pamięci wirtualnej), systemów plików... O ile w Windows to instalator dobiera komponenty związane z daną konfiguracją sprzętową, o tyle np. w Linuksie to użytkownik jest w stanie bardzo precyzyjnie kontrolować ten fragment systemu.
Z historią jądra systemu GNU/Linux nierozłącznie wiąże się data 25 sierpnia 1991 i osoba Linusa Torvaldsa (wtedy studenta uniwersytetu w Helsinkach). Wysyła on wtedy swój historyczny list, w którym pisze o chęci stworzenia takiego rozwiązania na architekturę x86. Całość jest w jakiś sposób inspirowana m.in. Miniksem. We wrześniu 1991 powstaje wersja 0.01, wydanie 0.11 z grudnia 1991 jest kompilowalne na komputerze działającym pod kontrolą siebie samego, z kolei 0.12 (luty 1992) jest opublikowana pod licencją GNU General Public License (GPL). W styczniu 1992 powstaje grupa dyskusyjna alt.os.linux, wielu ochotników zaczyna wspierać pracę Linusa. Kolejne "duże" wersje pojawiają się ze stosunkowo niedużymi odstępami:
- 14 marca 1994 - 1.0.0
- 9 czerwca 1996 - 2.0.0
- 25 stycznia 1999 - 2.2.0
- 4 stycznia 2001 - 2.4.0
- 17 grudnia 2003 - 2.6.0
Jak widać - numery wersji składają się obecnie minimum z trzech cyfr. Jeżeli środkowa jest nieparzysta, dana wersja jest testową. Z kolei czasem spotyka się również np. czwartą cyfrę. W Ubuntu i Mincie mamy obecnie jądro 2.6.32, mimo że została już wydana stabilna wersja 2.6.34.
Z bardziej znanych wydarzeń: w 2003 SCO pozywa IBM o złamanie należących do nich praw patentowych (a dokładniej o dodanie do jądra linuksowego fragmentów, których byli właścicielami. Całość zostaje w końcu oddalona.
Obecnie jądro linuksowe jest udostępniane na stronie www.kernel.org na licencji GNU GPL2, skąd każdy może je bezpłatnie pobrać. Można je wykorzystywać na bardzo wielu platformach sprzętowych.
Jest monolityczne. Poszczególne elementy wewnątrz takie jak sterowniki mają dostęp do wszystkich zasobów, a więc również np. pamięci zajętej przez inne elementy, czyli działają w tzw. trybie jądra. Nie jest ważne w tym przypadku, że mogą być fizycznie ładowane z oddzielnych plików na dysku. Przyspiesza to całość, ale powoduje problemy w przypadku błędów.
Ta ostatnia wada spowodowała, że od dawna próbowano stworzyć takie jądro, w którym ilość elementów z dostępem do wszystkich zasobów byłaby minimalna, a możliwie duża ilość sterowników byłaby fizycznie od siebie odseparowana (tzw. mikrojądro). W 1992 i 2006 kwestia ta (tzn. co jest lepsze - mikrojądro czy jądro monolityczne?) była dosyć gorąco omawiana między Linusem Torvaldsem i Andrew Tanenbaumem. O ile wczesne implementacje idei mikrojądra były dosyć wolne, obecnie z ich zaletami można się zapoznać np. w systemie Minix 3.