Jedro (računalništvo)
Jedro operacijskega sistema (angleško kernel), ali tudi samo jedro, v računalništvu pomeni del operacijskega sistema, ki je odgovoren za varen programski dostop do strojne opreme. Jedro nadzira tudi časovni dostop določenega programa do kosa strojne opreme.
V grobem se delijo na dve veji: monolitična jedra in mikrojedra, mešanica teh dveh pa so hibridna jedra:
- Monolitično jedro je tisto jedro, ki se v pomnilnik naloži kot en velik dvojiški zapis računalniških ukazov. Vsebuje vse funkcije, ki jih mora opravljati jedro, vanj pa so vključene tudi različne druge funkcije (npr. omrežni protokoli) in gonilniki naprav. Zato izvorna koda monolitičnih jeder vsebuje veliko vrstic kode, kar oteži preglednost in odkrivanje napak. Predvsem slabo napisani in nepreverjeni gonilniki so lahko vir težav, ker en tak gonilnik lahko oteži delovanje sistema ali celo povzroči njegovo sesutje. Zgled operacijskega sistema z monolitičnim jedrom je Linux.
- Mikrojedro vsebuje le funkcije upravljanja s pomnilnikom, časovnega razvrščanja procesov ter komunikacije med procesi, ki so nujne za njegovo delovanje. Druge funkcije in programi (npr. razni servisi, gonilniki naprav, datotečni sistemi, ...) pa so vsebovane v uporabniškem prostoru in lahko komunicirajo z jedrom preko skupnega kanala, ne morejo pa neposredno dostopati do njega. Takšno načelo se uporablja predvsem v namenskih operacijskih sistemih, kjer se zahteva enostavna zasnova in velika zanesljivost delovanja. Taka zasnova jedra ravno zaradi posrednega dostopa nekaterih komponent do jedra povzroči nekoliko slabšo odzivnost sistema. Zgled takšnega jedra je Mach.
- Hibridna jedra so tista, ki so implementirana kot monolitična, vendar uporabljajo tehniko kanalov za komunikacijo med moduli. Zgled hibridnega jedra je Microsoft Windows XP.
Jedro po navadi vsebuje naslednje podsisteme:
- upravljanje s pomnilnikom,
- razvrščanje,
- prekinitvene rutine za komponente,
- (navidezni) datotečni sistem,
- omrežni nivoji
Jedro deli navidezni pomnilnik v dva prostora: uporabniški prostor ter prostor jedra. Kadar proces teče v prostoru jedra, ima dostop do vseh mest v pomnilniku in tako neposreden dostop do struktur jedra. Zato so programi, ki tečejo v prostoru jedra gonilniki ali pa procesi, ki potrebujejo visoko dostopnost pomnilnika. Vsi ostali procesi pa tečejo v uporabniškem prostoru in jim je dostop do sistemskega dela pomnilnika zavrnjen. Prav tako se lahko pomnilnik procesov v uporabniškem prostoru izmenjuje na disk, nasprotno pa pri prostoru jedra.
Najbolj razširjen koncept jeder operacijskih sistemov je Unix, obstaja pa tudi nekaj pionirskih jeder, kot so npr. Singularity, projekt Microsoftove raziskovalne ekipe, ki poskuša jedro spisati na vrhu navideznega stroja. Implementirajo ga v jeziku C#.