Mi a linux kernel?
De mi a Linux kernel? Hogyan működik? Mi a fő feladata? Ez egy nagyon kiterjedt téma, és megpróbáljuk szétszerelni ezt a cikket.
Mit tesz a Linux kernel?
De mielőtt megvizsgáljuk, hogyan működik az operációs rendszer kernelének ez a funkciója, nézzük meg, hogy mit válaszol. A kernel absztrakciót nyújt a programozók számára, akik programokat fejlesztenek ki a Linux platform számára. Ez az absztrakció lehetővé teszi az összetett feladatok egyszerűsítését. Az informatika absztrakció kifejezés azt jelenti, hogy bonyolult mechanizmusokat és algoritmusokat rejtenek egy egyszerűbb és standardabb funkcióhoz.
Természetesen a kernel nem az egyetlen olyan szoftver, amely absztrakciót nyújt, sokkal fontosabb a vezetők által biztosított absztrakció szintje. A rendszermagnak nem kell tudnia, hogyan kell egy bizonyos eszközzel dolgozni, mivel a járművezetők felelősek. Ezért a kernel különböző eszközökön dolgozhat.
Vegyük például az adatok olvasását és írását a RAM-ba. Mindegyik alaplapon különböző memória-vezérlők lehetnek, és a számítógép ARM processzoron, Intelen, AMD-en, SPARC-on, PowerPC-en vagy MIPS-en futhat. De nem számít a Hello World programnak, és mivel a kernel egy egységes felületet biztosít ezeknek a platformoknak.
Most nézzük meg pontosan, hogy a rendszermag milyen funkciókat nyújt, vagy más szavakkal, milyen absztrakciókat kapunk:
- RAM - adatok olvasása és írása a RAM-ba;
- Tartós tárolás - adatok olvasása és írása állandó tárolóeszközökkel;
- Virtuális fájlrendszer;
- A fizikai hálózatokkal való együttműködés (Ethernet, vezeték nélküli, LTE, kapcsolók, Bluetooth);
- Virtuális hálózatok;
- A CPU idő megosztása a programokkal;
- CPU terheléskiegyenlítés és prioritások;
Külső eszközök támogatása:
- Kivehető USB adathordozó;
- Webkamerák;
- Egerek és billentyűzetek;
- Fájlengedélyek a felhasználók és a csoportok számára;
- Rendszererőforrásokhoz való hozzáférés engedélyezése;
A Linux kernel fenti funkcióinak köszönhetően könnyebbé válik a programfejlesztés. A kernel mindezt rendszerhívásokkal hajtja végre. Továbbá részletesebben megvizsgáljuk számos funkciót.
Adatok tárolása
Ezenkívül a rendszermag elkülöníti az egyes folyamatokat egy külön memóriaterületen, ami azt jelenti, hogy a folyamatnak nem kell tudnia, hogy ehhez a memóriához tartozik-e, mivel az összes rendelkezésre álló memória hozzá tartozik. Ez a szétválasztás növeli a rendszer biztonságát.
Úgy tűnik, hogy a dolgok állandó tárolásban vannak. A rendszermag elrejti a SATA, PATA, SCSI, USB, M2 és egyéb tárolási protokollok közötti különbségeket. Az egyik program bármely médiával és bármilyen támogatott fájlrendszerrel együttműködhet a program módosítása nélkül. Ez növeli a kód újrafelhasználását és a fejlesztői termelékenységet.
Hálózati hozzáférés
De szerencsére a legelterjedtebb protokollok jelenleg IPv4 és IPv6. Ami a többi hálózati protokollt illeti, mint például a DECnet, az IPX, az AppleTalk, a rendszermag támogatja őket, de alig van értelme használni a modern programokban.
Ütemezési feladatok
A CPU idő ütemezése nagyon nagy és összetett téma. Nem fogunk érinteni az ütemezési algoritmusokat, csak a Linux rendszermag feladatait érdekeljük az egyes folyamatok kezelésében.
A többmagos folyamatok megjelenése előtt a számítógépek egy adott időpontban csak egyetlen feladatot végezhetnek. Mindegyik folyamat megkapta a saját, méltányos részét az idő, és miután az idő kapott egy másik folyamatot. Olyan gyorsan megvalósult, hogy az egyidejűleg futó folyamatok illúzióját létrehozták. Most, a többmagos processzorok megjelenésével a teljesítmény nagymértékben növekedett, de a CPU-idő tervezése nem ment el sehol.
Mindegyik folyamatnak szüksége van a CPU időre, és a rendszermag biztosítja, hogy minden folyamat a sor sorrendjében kapja meg. Ezenkívül egyes folyamatoknak késleltetniük kell, vagy várniuk kell az I / O-re, és ez is a mag. Amíg a folyamat várakozik, egy másik folyamat fut a processzoron, majd az eredeti folyamat megkapja az idejét. A tervezés lehetővé teszi a programozó számára, hogy ne törődjön a futó folyamatok számával.
A Linux kernel nagy számú absztrakciót tartalmaz, és túl nagy ahhoz, hogy egy hétköznapi ember megértse mindent. De mégis, ha nem, minden fejlesztőnek kézzel kell végrehajtania mindent, és ez több alkalommal is eltarthat. Remélem hasznosnak bizonyult a Linux kernel funkcióinak ismertetése.