A Linux kernel olyan, mint egy híd, amely lehetővé teszi a számítástechnikai kommunikációt az alkalmazások és a hardver között, és kezeli a rendszer erőforrásait. Linus Torvalds C-vel és Assembly-vel fejlesztette ki a Linux kernelt, és így sikerült egy könnyű és hordozható magot létrehoznia, amelyet nyílt forráskódúként tettek közzé.
A Linux kernelt számos különböző szektorban láthatja, például az űrben, a számítógépekben, az okosórákban, a mobiltelefonokban, a robotikában és az egészségügyben. De elgondolkozott már azon, hogyan működik a Linux kernel a motorháztető alatt?
Hardverhasználat Linuxon
A Linux kernel mindenekelőtt azt szabályozza, hogy melyik hardver fusson és milyen módon, amikor bekapcsolja a számítógépet. Ezenkívül a programozói felületnek köszönhetően csúcskategóriás szoftverek vezérlése is lehetséges. Példaként említve ezeket a vezérlőket, megtekintheti az alaplap nyílásaiba telepített hardverre vonatkozó információkat, és hasznot húzhat ezekből a részletes információkból.
Ezenkívül ez a programozási felület absztrakciós réteget is biztosít. Ha például videobeszélgetést szeretne folytatni barátaival, szüksége lesz egy webkamerára. Az absztrakciós réteg lehetővé teszi a használt szoftver számára, hogy ezt a webkamerát alkalmazza, függetlenül annak gyártmányától és modelljétől. Az itt található szoftver csak a Linuxhoz létező felületet tudja használni. A Linux kernel ennek az interfésznek a függvényhívásait tényleges hardverparancsokká fordítja le, amelyekre a webkamerának szüksége van.
Használni a /proc és /sys virtuális fájlrendszereket, a Linux kernel képes részletes információkat exportálhat a hardverről érzékeli. Az alábbiakban láthat néhány ehhez használt eszközt, valamint azt, hogy milyen eszközöket és kártyákat exportálnak:
- lspci: PCI eszközökhöz
- lsusb: USB-eszközökhöz
- lspcmcia: PCMCIA kártyákhoz
Mint látható, a fenti képernyőképen látható Linux disztribúció VirtualBoxon fut. Lehetősége van azonban sok információ megtekintésére, például VGA, USB-vezérlő, hidak és SATA-vezérlő.
Használhatja továbbá a -v paramétert, hogy sokkal részletesebb információkat kapjon.
A Linux kernelben az alkalmazások általában speciális fájlokon keresztül érik el az eszközöket, amelyek a /dev Könyvtár. Ezek a speciális fájlok lemezmeghajtókat és egyéb fizikai eszközöket jelentenek. Fájlok, mint pl /dev/hda, /dev/sdc, /dev/sdc3, /dev/input/mouse0 és dev/snd/* példák ezekre a speciális fájlokra.
Linux fájlrendszer-kezelés
A fájlrendszerek a Linux kernel egyik legfigyelemreméltóbb összetevői. A Linux fájlrendszere az egyik legnagyobb előnye. A Linux rendszeren lévő összes fájl egyetlen ágba gyűlik össze. A felhasználók így ezt a hierarchiát használhatják a kívánt helyük eléréséhez.
Ennek a hierarchiának a kiindulópontja a gyökérkönyvtár (/). A többi alkönyvtár a gyökérkönyvtár alatt található. A leggyakrabban használt alkönyvtár / az a /home Könyvtár. Ez az alkönyvtár további alkönyvtárakat tartalmaz, és minden könyvtárban vannak fájlok, amelyek a tényleges adatokat tárolják.
Például gondolhat egy szöveges fájlra az asztalon. Ha létrehoz egy szöveges fájlt a helloworld.txt az asztalon, úgy hivatkozhat rá /home/muo/Desktop/helloworld.txt. A példája /muo itt természetesen változni fog. Mivel ez az alkönyvtárnév az aktuális felhasználó nevétől függ. Ezzel az elnevezési rendszerrel a Linux kernel a lemezen található tényleges és fizikai tárhely között vált.
Ezenkívül a Linux kernel több lemezről is képes adatokat integrálni. Itt jön képbe a rögzítési rendszer. A gyökérrendszer egyik lemezét használja, a többit pedig a hierarchia meglévő könyvtáraihoz csatolja. A többi lemez ezután a csatolási pontok alá kerül. Ez lehetővé teszi a felhasználók számára, hogy tárolják a /home könyvtárat egy második merevlemezen, amely más alkönyvtárakat is tartalmaz.
Amikor lemezt csatlakoztat a /home könyvtárat, ezeket a könyvtárakat normál helyekről érheti el. Így olyan utak, mint pl /home/muo/Desktop/helloworld.txt tovább dolgozni.
A rendszeren lévő fájlok közötti csatolási pontokat a findmnt -A parancs.
Számos fájlrendszer-formátum esetén fizikailag is tárolhat adatokat lemezeken. A Linuxon a legismertebbek a ext2, ext3, és ext4 fájlrendszer-formátumok. Azonban sok más fájlrendszer-formátum is létezik. Mindenesetre formáznia kell a fájlrendszert a csatlakoztatás előtt. Használhat olyan parancsokat, mint pl mkfs.ext3 (az mkfs a make fájlrendszer rövidítése, az ext3 pedig a fájlrendszer).
Ezek a parancsok paraméterként fogadják el a formázni kívánt eszközfájl elérési útját. Ez egy pusztító művelet, és óvatosan kell használni, ha nem akar törölni vagy visszaállítani egy fájlrendszert.
Ezeken kívül vannak még hálózati fájlrendszerek, például NFS amit a Linux kernel használ. Az NFS egy hálózati fájlrendszer, ahol az adatok nem helyi lemezen tárolódnak. Az NFS segítségével az adatok a hálózaton keresztül egy kiszolgálóhoz kerülnek, amely az adatokat tárolja. Mivel az adatok egy szerveren lesznek, a felhasználóknak nem kell folyamatosan foglalkozniuk velük. Szokás szerint használhatják a Linux hagyományos hierarchikus fájlrendszerét is.
Megosztott funkciójú műveletek
A Linux rendszerben minden szoftvernek közös funkciója van. Ezért ezek a funkciók központi szerepet töltenek be a Linux kernelben. Például egy fájl megnyitásakor csak a fájlnévvel nyithatja meg, anélkül, hogy tudná, hol található a fájl fizikailag, és milyen funkciókat és műveleteket fog használni. Mindezek a funkciók már jelen vannak a kernelben.
A fájlokat a merevlemezen tárolhatja, több merevlemezre oszthatja, vagy akár távoli szerveren is tárolhatja. Ilyen esetekben fontosak a megosztott fájlkommunikációs funkciók. Az alkalmazások az adatok áthelyezésétől függetlenül cserélnek adatokat. A megosztott kommunikációs funkciók ezen adatcserék elvégzésére szolgálnak. Ez a lépés történhet vezeték nélküli hálózatokon vagy akár vezetékes telefonvonalon keresztül is.
Folyamatkezelés Linux alatt
A memóriában lévő adatokkal vagy információkkal működő program aktív példányát folyamatnak nevezzük. A Linux kernel feladata ezen memóriarégiók generálása és nyomon követése. A kernel lefoglalja a memóriát futó programhoz, és betölti a futtatható kódot a memóriába a fájlrendszerből. Közvetlenül ezután a kernel lefuttatja a kódot.
A Linux kernel támogatja a multitaskingot. Több folyamat egyidejű futtatására képes. Egy adott időkereten belül azonban csak egy tranzakció van. A Linux kernel azonban apró darabokra bontja az időt, és ennek eredményeként minden egyes eljárás egymás után megy végbe.
Mivel ezek a kis időszegmensek ezredmásodperces lépésekben jelennek meg, csak meghatározott időpontokban aktívak, és a fennmaradó időben tétlenek maradnak. A Linux kernel feladata itt a teljesítmény maximalizálása több folyamat egyidejű futtatásával.
Ha az idősávok túl hosszúak, előfordulhat, hogy a futó alkalmazás nem lesz olyan érzékeny, mint szeretné. Ha az időkeretek túl rövidek, problémák adódhatnak a feladatok módosításával. A folyamat prioritásától függően az itt szükséges időkeret intervallum változhat. Talán hallott már a magas prioritású és alacsony prioritású folyamatokról. Ez az egyik olyan funkció, amelyet a Linux kernel vezérel.
Ez a magyarázat nem mindig helyes. Az igazi korlát az, hogy processzormagonként egyszerre csak egy munkafolyamat lehet. A többprocesszoros rendszerek lehetővé teszik több folyamat párhuzamos futtatását. Egy alaprendszerben szinte mindig több tucat futó folyamat van.
Hozzáférési jogok Linuxban
Más operációs rendszerekhez hasonlóan egy Linux rendszeren is sok felhasználót hozhat létre. Ilyen esetekben létezik egy jogosultságkezelő rendszer, amely támogatja az egyes felhasználókat és csoportokat. Ez az, ahol fájl és felhasználói engedélyek jöjjön játékba.
A Linux kernel kezeli az adatokat, és minden folyamathoz ellenőrzi a szükséges engedélyeket. Például, ha megpróbál megnyitni egy fájlt, a kernelnek ellenőriznie kell a folyamatazonosítót a hozzáférési engedélyekkel szemben. Ha a kernel ellenőrzi, és látja, hogy rendelkezik jogosultságokkal, akkor megnyitja a fájlt.
A Linux kernel mindent vezérel
Amint láthatja, a Linux kernel mindent felügyel a fájlbiztonságtól kezdve a felhasználók létrehozásáig és a fájlok internetről való letöltéséig. Minden egy bizonyos sorrendben van. Minden felhasználónak jogai vannak. A Linux kernel a folyamatokat és az időréseket kezeli a csúcsteljesítmény érdekében.
Ezenkívül nagyon fontos a fájlrendszer, amely az egyik legnagyobb tulajdonság, amely megkülönbözteti a Linux kernelt a többi operációs rendszertől. A Linux nem egy rejtett doboz. Éppen ellenkezőleg, minden fájl és forráskód elérhető. A Linux kernel gyakorlati és hatékony természetének jobb megértéséhez megvizsgálhatja a Linux címtárrendszer hierarchiáját.