Mis on Linuxi tuum ja mida see teeb?
Üle 13 miljoni rea koodiga on Linuxi tuum üks suurimaid avatud lähtekoodiga projekte maailmas, kuid mis on kernel ja milleks seda kasutatakse?
Mis on Kernel?
Kernel on madalaima tasemega kergesti vahetatav tarkvara, mis liidab teie arvuti riistvaraga. See vastutab kõigi teie kasutajate režiimis töötavate rakenduste ja füüsilise riistvara vahelise liidese eest ning lubab protsessidel, mida nimetatakse serveriteks, saada üksteisest teavet protsessidevahelise kommunikatsiooni abil (IPC).
Erinevad tuumaliigid
Loomulikult on olemas erinevaid viise tuumade ja arhitektuuriliste kaalutluste loomiseks nullist ehitamisel. Üldiselt jagunevad enamik tuumaid ühest kolmest tüübist: monoliitne, mikrokernel ja hübriid. Linux on monoliitne kernel, samas kui OS X (XNU) ja Windows 7 kasutavad hübriidsüdamikke. Võtame kiiresti kolme kategooria ringreisi, et saaksime hiljem üksikasjalikumalt tutvuda.
Pilt kasutajalt popkorn
Microkernel
Mikrokernel kasutab lähenemisviisi, mida saab ainult hallata: CPU, mälu ja IPC. Päris palju muud arvutit saab vaadelda lisaseadmena ja seda saab käsitseda kasutajarežiimis. Microkernelitel on ülekantav eelis, kuna nad ei pea muretsema, kui muudate videokaarti või isegi oma operatsioonisüsteemi, kui operatsioonisüsteem püüab samasugust riistvara juurde pääseda. Microkernelidel on ka väga väike jalajälg nii mälu kui ka ruumi paigaldamiseks, ja need kipuvad olema turvalisemad, sest ainult teatud protsessid töötavad kasutajarežiimis, millel ei ole järelevalverežiimi kõrgeid õigusi.
Plussid
- Kaasaskantavus
- Väike paigaldusjälg
- Väike mälu jalajälg
- Turvalisus
Miinused
- Riistvara on rohkem draiverite kaudu
- Riistvara võib reageerida aeglasemalt, kuna draiverid on kasutajarežiimis
- Protsessid peavad teabe saamiseks ootama järjekorda
- Protsessid ei pääse ootamatult juurde teistele protsessidele
Monoliitne tuum
Monoliitsed tuumad on mikrokiibide vastand, sest need hõlmavad mitte ainult CPU-d, mälu ja IPC-d, vaid ka selliseid asju nagu seadme draiverid, failisüsteemi haldamine ja süsteemiserveri kõned. Monoliitsed tuumad kalduvad enam riist- ja multitegumiste juurde pääsema, sest kui programmil on vaja saada teavet mälust või mõnest muust töötavast protsessist, on sellel rohkem ligipääsuks ja ei pea ootama järjekorras, et asju teha. See võib siiski tekitada probleeme, sest mida rohkem asju juhendaja režiimis töötatakse, seda rohkem asju, mis võivad teie süsteemi alandada, kui keegi ei käitu korralikult.
Plussid
- Rohkem otsese juurdepääsu programmide riistvarale
- Lihtsam üksteise vahel suhelda
- Kui teie seade on toetatud, peaks see töötama ilma täiendavate seadmeteta
- Protsessid reageerivad kiiremini, sest protsessori aja jaoks pole järjekorda
Miinused
- Suur paigaldamise jalajälg
- Suur mälu jalajälg
- Vähem turvaline, sest kõik töötab juhendaja režiimis
Pilt kaudu schoschie kohta Flickris
Hybrid Kernel
Hübriid tuumadel on võimalus valida ja valida, mida nad soovivad kasutajarežiimis käivitada ja mida nad soovivad juhendaja režiimis käivitada. Sageli käivitatakse kasutajarežiimis näiteks seadme draiverid ja failisüsteemi I / O, samal ajal kui IPC ja serverikõnesid hoitakse juhendaja režiimis. See annab mõlema maailma parimad, kuid sageli vajab riistvaratootja rohkem tööd, sest kõik juhi vastutus on nende ülesanne. Samuti võib sellel esineda mõningaid latentsusprobleeme, mis on omane mikrokiibidele.
Plussid
- Arendaja saab valida ja valida, mis töötab kasutajarežiimis ja mis töötab juhendaja režiimis
- Väiksem installatsioon jalajälg kui monoliitne tuum
- Paindlikum kui teised mudelid
Miinused
- Võib kannatada sama protsessi viivitusega kui mikrokernel
- Seadme draivereid peab haldama kasutaja (tavaliselt)
Kus on Linuxi kerneli failid?
Kerneli fail salvestatakse Ubuntu'is teie / boot kausta ja seda nimetatakse vmlinuziks-versioon. Nimi vmlinuz pärineb unixi maailmast, kus nad kutsusid oma kerneleid lihtsalt „unix'iks” 60-ndatel aastatel, nii et Linux hakkas oma kerneli „linux” helistama, kui see esmakordselt 90-ndatel välja töötati.
Kui virtuaalmälu töötati välja lihtsamate multitegumtöötlusvõimete jaoks, pandi faili esiküljele “vm”, mis näitab, et tuum toetab virtuaalset mälu. Linuxi tuuma nimetati mõneks ajaks vmlinuxiks, kuid kernel kasvas liiga suureks, et see sobiva alglaadimismälu külge mahuks, nii et kerneli kujutis oli kokkusurutud ja lõpp X muudeti z-ks, et näidata, et see oli tihendatud zlib-tihendusega. Seda sama tihendust ei kasutata alati, sageli asendatud LZMA või BZIP2-ga ja mõningaid südamikke nimetatakse lihtsalt zImage.
Versiooni nummerdamine toimub vormingus A.B.C.D, kus A.B on tõenäoliselt 2,6, C on teie versioon ja D näitab teie plaastreid või parandusi.
Kaustas / boot on ka teisi väga olulisi faile nimega initrd.img-version, system.map-version ja config-version. Initrd-faili kasutatakse väikese RAM-plaadina, mis ekstraktib ja täidab tegeliku kerneli faili. System.map faili kasutatakse mälu haldamiseks enne kerneli täielikku laadimist ning konfiguratsioonifail ütleb kernelile, milliseid valikuid ja mooduleid kerneli kujutise laadimiseks laaditakse, kui seda koostatakse.
Linuxi kerneli arhitektuur
Kuna Linuxi kernel on monoliitne, on selle suurim jalajälg ja kõige keerulisem muud tüüpi tuumad. See oli disainifunktsioon, mis oli Linuxi algusaastatel mõnevõrra arutelu all ja kannab endiselt samu disainilahenduse vigu, mida monoliitsed tuumad on omane.
Üks asi, mida Linuxi tuuma arendajad tegid nende vigade ümberlülitamiseks, oli tuua tuuma mooduleid, mis võiksid laadimise ja laadimise ajal laadida ja mis tähendab, et saate lisada või eemaldada oma kerneli funktsioone. See võib piirduda ainult riistvara funktsionaalsuse lisamisega kernelile, lisades sellesse mooduleid, mis töötavad serveriprotsesse, nagu madala taseme virtualiseerimine, kuid see võib võimaldada ka kogu kerneli väljavahetamist ilma arvuti taaskäivitamata mõnel juhul.
Kujutage ette, kui saaksite uuendada Windowsi hoolduspaketti, ilma et peaksite kunagi taaskäivitama…
Kerneli moodulid
Mis siis, kui Windowsil oleks kõik draiverid juba installitud ja peate just vajaminevad draiverid sisse lülitama? Põhimõtteliselt teevad seda tuuma moodulid Linuxi jaoks. Kerneli moodulid, mida tuntakse ka laaditava kerneli moodulina (LKM), on hädavajalikud, et kernel toimiks kogu teie riistvaraga, ilma et kogu kasutatavat mälu tarbitaks.
Moodul lisab tavaliselt põhisüdamikule funktsioone, näiteks seadmeid, failisüsteeme ja süsteemikõnesid. LKM-idel on faililaiend .ko ja need on tavaliselt salvestatud kataloogi / lib / modules. Modulaarse olemuse tõttu saate oma kerneli hõlpsasti kohandada, seadistades menüükäsuga menuconfig käskude abil mooduleid laadimiseks või mitte, või oma / boot / config-faili redigeerides või saate moodulite laadimise ja tühjendamise modprobe abil käsk.
Kolmandate osapoolte ja suletud lähtekoodiga moodulid on saadaval mõnes jaotuses, nagu Ubuntu, ning neid ei pruugi vaikimisi installida, sest moodulite lähtekoodi pole saadaval. Tarkvara arendaja (nt nVidia, ATI) ei anna lähtekoodi, vaid pigem ehitab oma mooduleid ja kompileerib vajalikud .ko-failid levitamiseks. Kuigi need moodulid on vabad nagu õlle puhul, ei ole need vabad nagu kõnes ja seega ei sisalda mõned levitamised, sest hooldajad tunnevad, et see "tuendab" tuuma, pakkudes vaba tarkvara.
Kernel ei ole maagiline, kuid see on täiesti vajalik, et iga arvuti korralikult töötaks. Linuxi kernel erineb OS X-st ja Windowsist, sest see sisaldab kerneli tasemel draivereid ja muudab paljud asjad "karbist välja". Loodetavasti teate natuke rohkem, kuidas teie tarkvara ja riistvara koos töötavad ja milliseid faile vajate arvuti käivitamiseks.
Kernel.org
Pilt kasutajalt ingridtaylar