Linux kernel

Linux kernel bemutató kezdőknek

Linux kernel bemutató kezdőknek

Háttérinformációk az operációs rendszerekről

Az operációs rendszer, rövidítve OS, olyan szoftver, amely vezérli a rendszer hardver elemeit, legyen az telefon, laptop vagy asztali számítógép. Feladata a szoftver és a hardver közötti kommunikáció. A Windows XP, a Windows 8, a Linux és a Mac OS X mind az operációs rendszerek példái. Az operációs rendszer a következőkből áll:

Kerneltér és Felhasználói tér

Kernel tér: a kernel megemelt rendszerállapotban található, amely védett memóriaterületet és teljes hozzáférést biztosít az eszköz hardveréhez. Ezt a rendszerállapotot és memóriaterületet összességében kerneltérnek nevezzük. A rendszermag téren belül a hardveres és rendszerszolgáltatásokhoz való alapvető hozzáférést kezelik és szolgáltatásként biztosítják a rendszer többi részének.

Felhasználói hely: a felhasználói alkalmazásokat a felhasználói térben hajtják végre, ahol kernel rendszerhívásokon keresztül elérhetik a gép rendelkezésre álló erőforrásainak egy részét. A kernel számára biztosított alapvető szolgáltatások felhasználásával felhasználói szintű alkalmazás hozható létre, például játék vagy irodai termelékenységi szoftver.

Linux

A Linux népszerűsége az évek során növekszik, mivel nyílt forráskódú, UNIX-szerű tervezésen alapul, és több platformra hordozza más versenytárs operációs rendszerekhez képest. Amint jeleztük, ez egy operációs rendszer, amely hasonlít egy UNIX operációs rendszerhez - egy stabil többfelhasználós, többfeladatos operációs rendszerhez, és amelyet ingyenes és nyílt forráskódú szoftverként állítottak össze fejlesztés és terjesztés céljából. Ez azt jelenti, hogy bármely magánszemélynek vagy vállalatnak engedélye van arra, hogy a Linux operációs rendszert bármilyen módon felhasználja, utánozza, tanulmányozza és módosítsa.

A Linux kernel

Első, 1991. szeptember 17-i kiadásától kezdve a Linux kernel minden esélyt dacolt a Linux meghatározó összetevőjével. Linus Torvalds adta ki, és a GNU / Linux segítségével írja le az operációs rendszert.  Az okostelefonokon futó Linux kernel alapú Android operációs rendszer a Linuxot versenyre késztette, hogy az összes általános operációs rendszer legnagyobb telepített operációs rendszere legyen.  A Linux Kernel története itt található.

A kernel lehet monolitikus, mikrokernes vagy hibrid (például az OS X és a Windows 7). A Linux kernel egy monolit számítógépes operációs rendszer kernel, amely hasonlít a UNIX rendszerre. Az operációs rendszerek Linux sora, amelyet általában Linux disztribúciónak neveznek, ezen a kernelen alapul.  A monolit kernel, a mikrokernel ellentétben, nemcsak a központi processzort, a memóriát és az IPC-t foglalja magában, hanem eszközillesztőket, rendszerkiszolgáló hívásokat és fájlrendszer-kezelést is tartalmaz. Legjobbak a hardverrel való kommunikációban és több feladat egyidejű végrehajtásában. Éppen ezért az itteni folyamatok gyorsan reagálnak.

Azonban néhány hátrány a hatalmas telepítési és memóriaigény, valamint a nem megfelelő biztonság, mivel minden felügyeleti módban működik. Ezzel szemben a mikrokern lassan reagálhat az alkalmazáshívásokra, mivel a felhasználói szolgáltatások és a kern elválik egymástól. Így kisebbek a monolit kernelhez képest.  A mikrokernelek könnyen bővíthetők, de több kódra van szükség a mikrokernek megírásához. A Linux kernel C és Assembly programozási nyelveken íródott.

A Linux kernel kapcsolata a Hardverrel

A rendszermag a megszakításokon keresztül kezelheti a rendszer hardverét. Amikor a hardver kapcsolódni akar a rendszerhez, egy megszakítást adnak ki, amely megszakítja a processzort, amely viszont ugyanezt teszi a kernellel. A szinkronizálás érdekében a kernel letilthatja a megszakításokat, legyen az egyetlen vagy mindegyik. Linuxban azonban a megszakításkezelők nem egy folyamatkörnyezetben futnak, hanem egy folyamathoz nem kapcsolódó megszakítási környezetben futnak.Ez a megszakítási kontextus kizárólag azért létezik, hogy a megszakításkezelő gyorsan reagáljon az egyes megszakításokra, majd végül kilépjen.

Mi különbözteti meg a Linux kernelt a többi klasszikus Unix kerneltől?

Jelentős különbségek vannak a Linux és a Classic Unix kernek között; az alábbiak szerint:

  1. A Linux támogatja a kernelmodulok dinamikus betöltését.
  2. A Linux kernel megelőző jellegű.
  3. A Linux szimmetrikus többprocesszoros támogatással rendelkezik.
  4. A Linux nyílt szoftveres jellege miatt ingyenes.
  5. A Linux figyelmen kívül hagy néhány szabványos Unix szolgáltatást, amelyet a rendszermag-fejlesztők „rosszul megtervezettnek” neveznek.”
  6. A Linux objektum-orientált eszközmodellt kínál eszközosztályokkal, gyorsbetölthető eseményekkel és felhasználói tér eszköz fájlrendszerrel
  7. A Linux kernel nem tesz különbséget a szálak és a normál folyamatok között.

Architechture

A Linux kernel elemei

A kern egyszerűen erőforrás-kezelő; a kezelt erőforrás lehet folyamat, memória vagy hardver eszköz. Kezeli és dönt az erőforráshoz való hozzáférésről több versengő felhasználó között. A Linux kernel a rendszermagban, a felhasználói terület alatt található, ahol a felhasználó alkalmazásai futtatásra kerülnek. Annak érdekében, hogy a felhasználói tér kommunikálhasson a kerneltérrel, egy GNU C könyvtár került beépítésre, amely fórumot biztosít a rendszerhívó felület számára, hogy csatlakozzon a kerneltérhez, és lehetővé tegye az áttérést a felhasználói térbe.

A Linux kernel három elsődleges szintre osztható:

  1. A rendszerhívási felület; ez a legfelső, és elvégzi az alapvető műveleteket, például olvasni és írni.
  2. A kernel kódja; a rendszerhívási felület alatt található, minden Linux által támogatott processzorarchitektúrában közös, néha architektúrától független kernelkódként definiálják.
  3. Az architektúrától függő kód; az architektúrától független kód alatt alkotja az úgynevezett Board Support Package (BSP) csomagot - ez egy bootloader nevű kis programot tartalmaz, amely az operációs rendszert és az eszközillesztőket a memóriába helyezi.

A Linux kern építészeti perspektívája a következőkből áll: Rendszerhívási felület, Folyamatkezelés, Virtuális fájlrendszer, Memóriakezelés, Hálózati verem, Építészet és az eszközillesztők.

  1. Rendszerhívási felület; egy vékony réteg, amelyet a felhasználói térből a kernelbe történő függvényhívások végrehajtására használnak. Ez a felület architektúrától függhet
  2. Folyamatmenedzsment; főleg a folyamatok végrehajtására szolgál. Ezeket a kernel szálaként emlegetik, és az adott processzor egyedi virtualizációját jelentik
  3. Memóriakezelés; a memóriát az úgynevezett oldalak kezelik a hatékonyság érdekében. A Linux tartalmazza a rendelkezésre álló memória kezelésének módszereit, valamint a fizikai és virtuális leképezések hardveres mechanizmusait.  Cserehely is biztosított
  4. Virtuális fájlrendszer; szabványos interfész-absztrakciót biztosít a fájlrendszerek számára. Váltási réteget biztosít a rendszerhívási felület és a rendszermag által támogatott fájlrendszerek között.
  5. Hálózati verem; az adott protokollok alapján mintázott réteges architektúrának van kialakítva.
  6. Eszközmeghajtók; a Linux kernel forráskódjának jelentős része megtalálható azokban az eszközillesztőkben, amelyek felhasználhatóvá teszik az adott hardvereszközt.  Eszközillesztő oktatóanyag
  7. Építészetfüggő kód; azok az elemek, amelyek függnek az építészettől, amelyen futnak, ezért figyelembe kell venniük a normál működés és a hatékonyság architektúráját.

Interfészek

Rendszerhívások és megszakítások

Az alkalmazások rendszerhívások útján adják át az információkat a kernelnek. A könyvtár olyan funkciókat tartalmaz, amelyekkel az alkalmazások működnek. Ezután a könyvtárak a rendszerhívási felületen keresztül utasítják a kernelt az alkalmazás által kívánt feladat végrehajtására.  Mi az a Linux rendszerhívás?

A megszakítások lehetőséget kínálnak arra, hogy a Linux kernel kezelje a rendszerek hardverét. Ha a hardvernek kommunikálnia kell egy rendszerrel, akkor a processzor megszakítása végzi a trükköt, és ezt továbbítja a Linux kerneljének.

Linux kernel interfészek

A Linux kern különféle interfészeket kínál a felhasználói téralkalmazásokhoz, amelyek különféle feladatokat látnak el és különböző tulajdonságokkal rendelkeznek. Két különálló alkalmazásprogramozási felület (API) létezik; a kernel-felhasználói tér és a kernel belső.  A Linux API az kernel-userspace API; hozzáférést biztosít a felhasználói térben lévő programokhoz a rendszermagba és a rendszermag szolgáltatásaiba. A System Call Interface és a GNU C könyvtár alprogramjai alkotják.

Linux ABI

Ez az ABI kernel-felhasználói térre vonatkozik (Application Binary Interface). Ezt a programmodulok közötti interfészként magyarázzák. Az API és az ABI összehasonlításakor a különbség az, hogy az ABI-ket a már összeállított külső kódok elérésére használják, míg az API-k a szoftverek kezelésére szolgáló struktúrák.  A fontos ABI meghatározása főként a Linux disztribúciók feladata, mint a Linux kernelé. Minden utasításkészlethez meg kell adni egy speciális ABI-t, például x86-64. A Linux-termékek végfelhasználóit az ABI-k érdeklik, nem pedig az API.

Rendszerhívási felület

Mint korábban tárgyaltuk, ez kiemelkedőbb szerepet játszik a kernelben. Ez az összes létező rendszerhívás teljes részének megnevezése.

A C szabványos könyvtár

A rendszermag összes rendszerhívása a GNU C könyvtárban található, míg a Linux API a rendszerhívási felületből és a GNU C könyvtárból áll, más néven glibc.

Hordozható operációs rendszer interfész (POSIX)

A POSIX az operációs rendszerek közötti kompatibilitás fenntartásának szabványosított fogalma. Az API-t a segédprogram-interfészekkel és a parancssori héjakkal együtt deklarálja. A Linux API nemcsak a POSIX által definiálható használható tulajdonságokkal rendelkezik, hanem a rendszermagjában további funkciókkal is rendelkezik:

  1. Csoportok alrendszer.
  2. A Direct Rendering Manager kezelője hív.
  3. A felolvasni funkció.
  4. Getrandom hívás, amely jelen van a V 3-ban.17.
  5. Rendszerhívások, mint pl futex, epoll, toldás, dnotify, fanotizálni és inotify.

További információ a POSIX Standardról itt található.

A moduláris kernel

A Linux kernel korábbi verziói olyanok voltak, hogy minden részüket statikusan egyetlen, monolitikusba rögzítették. Ugyanakkor a modern Linux kernek funkcionalitásának nagy részét modulok tartalmazzák, amelyeket dinamikusan tesznek a kernelbe. Ezt a monolitikus típusokkal ellentétben moduláris magoknak nevezik. Egy ilyen beállítás lehetővé teszi a felhasználó számára, hogy a futó kernelben modulokat töltsön be vagy cseréljen újraindítás nélkül.

A Linux betölthető kernelmodulja (LKM)

A kód hozzáadásának alapvető módja a Linux kernelben a forrásfájlok bevezetése a kernel forrásfájába. Érdemes azonban kódot adnia a kernel futása közben. Az így hozzáadott kódot tölthető kernelmodulnak nevezzük. Ezek a modulok különféle feladatokat hajtanak végre, de három csoportba sorolhatók: eszközillesztők, fájlrendszer-illesztőprogramok és rendszerhívások.

A betölthető kernelmodul összehasonlítható más operációs rendszerek kernelbővítéseivel. Beilleszthet egy modult a kernelbe úgy, hogy vagy betölti LKM-ként, vagy összeköti az alap kernelbe.

Az LKM-ek előnyei az alap kernelhez való kötéssel szemben:

Az LKM-ek felhasználása

  1. Eszközmeghajtók; a kern ezen keresztül cserél információkat hardverekkel. A kernelnek rendelkeznie kell egy eszköz illesztőprogramjával, mielőtt használná.
  2. Fájlrendszer-illesztőprogramok; ez lefordítja egy fájlrendszer tartalmát
  3. Rendszerhívások; a felhasználói térben lévő programok a rendszerhívásokat használják, hogy szolgáltatásokat szerezzenek a kerneltől.
  4. Hálózati illesztőprogramok; hálózati protokollt értelmez
  5. Futtatható tolmácsok; betölt és kezel egy futtatható fájlt.

A Linux kernel fordítása

Ellentétben azzal, amit a legtöbb ember mond, a Linux kernel fordítása egyszerű feladat. Az alábbiakban részletesen bemutatjuk a folyamatot a Linux disztribúciók egyikével: Fedora 13 KDE. (Célszerű biztonsági másolatot készíteni az adatokról és a grubról.konf csak arra az esetre, ha valami elromlik)

  1. A http: // kernelből.org weboldal, töltse le a forrást.
  2. A letöltési könyvtárban húzza ki a rendszermag forrását az archívumból a következő parancs beírásával a terminálba:
    tar xvjf Linux-2.6.37.kátrány.bz2
  3. Használja a make mrproper parancsot, hogy minden fordítás előtt törölje a felépítési területet.
  4. Használjon egy konfigurációt, mondjuk: xconfig. Ezeket a konfigurációkat úgy tervezték, hogy megkönnyítsék bármelyik program futtatását Linux alatt.
  5. Adja meg azokat a modulokat és szolgáltatásokat, amelyeket a kernel tartalmazni kíván.
  6. Miután megszerezte a .konfig fájlt, a következő lépés az Makefile
  7. Futtassa a make parancsot, és várja meg, amíg a fordítás végbemegy.
  8. Telepítse a modulokat a make modules_install paranccsal
  9. Másolja a rendszermagot és a rendszertérképet a / boot rendszerbe.
  10. Futtassa az new-kernel-pkg-t a modulfüggőségek és hasonló dolgok listájának összeállításához grub.konf

A kernel frissítése

Lehetőség van egy Linux kernel frissítésére egy régebbi verzióról egy újabbra, megtartva az összes konfigurációs beállítást a korábbi verziótól. Ennek eléréséhez először biztonsági másolatot kell készíteni a .konfig fájl a kernel forráskönyvtárában; ez abban az esetben történik, ha valami rosszul esik, amikor megpróbálja frissíteni a kernelt. A lépések a következők:

  1. Szerezze be a legfrissebb forráskódot a fő kernelből.org honlapján
  2. Alkalmazza a variációkat a régi forrásfára, hogy a legfrissebb verzióra jusson.
  3. Konfigurálja újra a kernt az előző kernel konfigurációs fájl alapján, amelyet Ön biztonsági másolatra készített.
  4. Készítsd el az új kernelt.
  5. Most telepítheti az új build kernelt.

Az új forrás letöltése; a Linux kernel fejlesztői megértették, hogy egyes felhasználók nem akarják letölteni a kernel frissítéseinek teljes forráskódját, mivel ez időt és sávszélességet pazarolna. Ezért elérhetővé válik egy javítás, amely frissítheti egy régebbi rendszermag kiadást. A felhasználóknak csak azt kell tudniuk, hogy melyik javítás vonatkozik egy adott verzióra, mivel a rendszermag-javító fájl csak egy adott kiadásból frissíti a forráskódot. A különböző javítófájlok a következő módszerekkel alkalmazhatók;

  1. Stabil kernel javítások, amelyek az alap kern verzióra vonatkoznak.
  2. Az alap kernel kiadási javítások csak az előző alap kern verzióra vonatkoznak
  3. Inkrementális javítás frissítés egy adott kiadásról a következő kiadásra. Ez lehetővé teszi a fejlesztők számára, hogy elkerüljék a korszerűsítést, majd a kernel frissítését. Ehelyett a jelenlegi stabil kiadásukról a következő stabil kiadásra válthatnak.

Itt találhatók részletesebb lépések a kernel frissítéséhez a Debian forrásból, valamint a CentOS és az Ubuntu előre elkészített bináris fájljaiból.

Következtetés

A Linux kernel főleg erőforrás-kezelőként működik, mint elvont réteg az alkalmazások számára. Az alkalmazások kapcsolatban vannak a kernellel, amely viszont kölcsönhatásba lép a hardverrel és kiszolgálja az alkalmazásokat. A Linux egy többfeladatos rendszer, amely több folyamat egyidejű végrehajtását teszi lehetővé. A Linux kernel népszerű a nyílt forráskódú jellege miatt, amely lehetővé teszi a felhasználók számára, hogy a kernelt megváltoztassák a számukra és hardverüknek megfelelőre. Ezért más eszközökben használható, ellentétben más operációs rendszerekkel.

A Linux kernel moduláris jellemzői nagyobb izgalmat adnak a felhasználóknak. Ennek oka a sokféle módosítás, amelyek itt elvégezhetők a rendszer újraindítása nélkül. A rugalmasság nagy teret ad a felhasználóknak, hogy megvalósítsák képzeletüket.

Ezenkívül a kernel monolit jellege nagy előny, mivel nagy feldolgozási képességgel rendelkezik, mint a mikrokern. A Linux-típusú kernel fő hátránya, hogy ha bármely szolgáltatása meghibásodik, akkor az egész rendszer leáll vele. A legújabb verziók úgy lettek megtervezve, hogy új szolgáltatás hozzáadása esetén nincs szükség az egész operációs rendszer módosítására. Ez javulás a korábbi verziókhoz képest.

Források

  1. Wikipedia Linux kernel
  2. Wikipedia Linux kernel interfészek
  3. Linux betölthető kernelmodul Hogyan
  4. linux.com kezdőknek szóló útmutató
  5. https: // www.quora.com / What-are-good-tutorials-to-learn-Linux-Kernel
  6. https: // unix.veremcsere.com / questions / 1003 / linux-kernel-good-beginners-tutorial
  7. http: // www.linux-tutorial-tutorial.info / modulok.php?név = MCtartalom & pageid = 82
  8. https: // www.howtogeek.com / howto / 31632 // mi-a-linux-kernel-és-mit csinál-csinál /
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...
0 A.D. Bemutató
A sok stratégiai játék közül 0 A.D. átfogó címként és nagyon mély, taktikus játékként képes kiemelkednie annak ellenére, hogy nyílt forráskódú. A játé...
Unity3D bemutató
Bevezetés a Unity 3D-be Az Unity 3D egy erőteljes játékfejlesztő motor. Ez több platformon keresztül lehetővé teszi játékok, mobil, webes, asztali és ...