Jadro systému (Unix)

Roman Lacko <xlacko1@fi.muni.cz>

Obsah

Úvod

Čo je jadro?

Jadro (kernel) operačného systému je program, ktorý je zodpovedný najmä za

Operačný systém (OS) typicky okrem kernelu obsahuje aj iné nástroje (napr. prekladač, textový editor, grafické rozhranie).

História

Predkovia kernelov (a OS) sa nazývali rezidentné monitory (angl. "resident monitor"). Monitory sa zavádzali do sálových počítačov po ich spustení a dozerali na spracovanie úloh.

Postupným pridávaním ďalších funkcií, najmä zjednocovaním prístupu k I/O a zdieľaním procesorového času, vznikali prvé jadrá (vtedy ešte označované za operačné systémy). Prvým takýmto systémom bol GM-NAA I/O pre IBM 704 z roku 1956.

V roku 1963 odštartoval projekt ministerstva obrany USA "Project MAC", medzi ktorého výsledky patrí operačný systém Multics. Ten implementoval (okrem iného)

Multics mal silný vplyv na vývoj systému AT&T UNIX v laboratóriách spoločnosti Bell pod vedením D. Ritchieho a K. Thompsona okolo roku 1970. Jeden z rozdielov týchto systémov je vo filozofii; kým Multics bol komplexný a snažil sa robiť "všetko", Unix bol od začiatku navrhovaný v menších rozmeroch. V roku 1972 bol prepísaný do jazyka C.

V októbri [říjnu =)] 1991 vydal Linus Torvalds jadro systému Linux, ktoré je dnes pravdepodobne najpoužívanejšou implementáciou Unixu-podobného jadra.

Rozdelenie jadier

Linux kernel

Jadro systému Linux (GNU/Linux) je druh monolitického jadra. Ovládače zariadení typicky fungujú v priestore jadra (angl. kernel space), ostatné programy v užívateľskom priestore (angl. user space). Linux taktiež podporuje zásuvné moduly (Kernel Loadable Modules).

Dôležité časti jadra

Správa pamäte (Memory Management)
Jadro musí zabezpečiť, aby proces nezasahoval do pamäte iného procesu. K tomu používa:
Medziprocesová komunikácia (Inter-Process Communication)
Aj keď priamy zásah do pamäte iného procesu je zriedka žiadaný, často je potrebné, aby niektoré procesy mohli spolu komunikovať. Na to jadro ponúka tieto prostriedky:
Správa zariadení (Device Management)
Ovládače tvoria rozhranie medzi jadrom a konkrétnym hardvérom. Presnejšie, úlohou ovládača je preložiť štandardizované systémové volanie na nízkoúrovňové volanie daného ovládača. Keďže ovládač pristupuje k zbernici, beží v režime jadra.

Najdôležitejšie ovládače sú typicky dostupné priamo v jadre, ostatné sa dajú pridať v prípade potreby neskôr ako zásuvné jadrové moduly.
Virtuálny súborový systém (Virtual File System)
Analogicky k ovládačom, VFS tvorí rozhranie medzi jadrom a konkrétnym súborovým systémom. Nové súborové systémy sa tak dajú pridať tak, že sa implementuje rozhranie definované VFS.

Moduly

Linux kernel podporuje zásuvné moduly (Kernel Loadable Modules). Typicky sú to ovládače, ktoré nie sú potrebné v každom okamihu behu systému, ale len keď to vyžaduje napr. nejaký program. Vďaka tomu je možné znížiť veľkosť jadra a zrýchliť štart systému.

Konfigurácia a inštalácia jadra

Aké má výhody ma vlastná konfigurácia?

Aké má nevýhody?

Dostupnosť zdrojových kódov

Čisté (tzv. "vanilla") jadro Linuxu je možné získať na www.kernel.org, distribučné jadrá sa dajú väčšinou získať pomocou balíčkovacieho systému tejto distribúcie. Zdrojové kódy je typicky potrebné pred použitím rozbaliť a spotrebovať do dátumu uvedeného na obale (podpora systému).

Konfigurácia

Pred samotnou konfiguráciou je nutné vedieť, na akom hardvéri pobeží. Konfiguráciu je možné spustiť väčšinou jedným z týchto spôsobov:

Príkaz Význam
make config interaktívna konfigurácia v textovom režime
make menuconfig konfigurácia v "polografickom" režime (ncurses)
make xconfig konfigurácia v grafickom režime (Qt)
make gconfig konfigurácia v grafickom režime (GTK)

Jednotlivé položky majú voľby YES (zahrnúť) alebo NO (nezahrnúť), pričom niektoré poskytujú možnosť MODULE (zostaviť ako modul).

Preklad a inštalácia

Príkaz Význam
make zostaví jadro do /arch/$ARCH/boot/$IMAGE
make modules_install zostaví moduly do /lib/modules/
make install skopíruje jadro a konfiguráciu do /boot/

Spustenie jadra

Nové jadro je možné zaviesť po reštarte počítača. Niekedy je ešte potrebné upozorniť zavádzač, že bolo pridané nové jadro.

Jadru môžu byť pred spustením predané parametre zo zavádzača, ktoré modifikujú niektoré jeho vlastnosti a funkcionalitu.

Literatúra