5Aug
Üle 13 miljoni koodiliini on Linuxi kernel maailmas üks suuremaid avatud lähtekoodiga projekte, kuid mis on kernel ja mis seda kasutatakse?
Mis on kernel?
Kernel on kergesti vahetatava tarkvara madalaim tase, mis ühildub arvuti riistvaraga. Ta vastutab kõikide rakenduste, mis töötavad "kasutaja režiimis" füüsilise riistvara külge ja võimaldavad protsesside, tuntud serveritena, omavaheliseks ühendamiseks üksteisega teabe saamiseks protsessidevahelise suhtlemise( IPC) kaudu.
Erinevad tuumade tüübid
Põhimõtteliselt on tuum ja arhitektuurilised kaalutlused ehitatud nullist erinevad viisid.Üldiselt jagunevad enamus tuumad kolme tüüpi: monoliitsed, mikrokernel ja hübriidid. Linux on monoliitne kernel, samas kui OS X( XNU) ja Windows 7 kasutavad hübriidseid tuumareise. Vaatame kolme kategooria kiiret ekskursiooni, et saaksime üksikasjalikumalt hiljem lähemalt tutvuda.
Pilt ülesküljel popcorn
Microkernel
Mikrokernel võtab lähenemisviisi, et hallata ainult seda, mida ta vajab: CPU, mälu ja IPC.Peaaegu kõike muud arvutist võib vaadelda lisaseadmena ja seda saab käsitseda kasutaja režiimis. Mikrokernelitel on kaasaskantavuse eelis, sest neil ei pea muretsema, kui muudate oma videokaardi või isegi operatsioonisüsteemi seni, kuni operatsioonisüsteem üritab ikka riistvara juurde pääseda. Mikrokernelitel on ka väike jalajälg nii mälu kui ka ruumi paigaldamiseks ning need on tavaliselt turvalisemad, kuna ainult konkreetsed protsessid käivad kasutaja režiimis, kus järelevalvaja režiimil ei ole kõrgeid õigusi.
Pros
- Portability
- Väike paigaldamise jalajälg
- Väike mälu jalajälg
- Turvalisus
Nõuanded
- Riistvara on rohkem juhtida läbi draiverid
- Riistvara võib reageerida aeglasemalt, sest draiverid on kasutaja režiimis
- Protsessid peavad ootama järjekorda, et saada teavet
- Protsessid ei saasaada juurdepääs teistele protsessidele ootamata
Monolithic Kernel
Monoliitsed tuumad on vastupidine mikrokernelitele, kuna need hõlmavad mitte ainult CPU-d, mälu ja IPC-d, vaid sisaldavad ka selliseid asju nagu seadmehaldurid, failisüsteemi haldurid ja süsteemiserverite kõned. Monoliitsed tuumad kipuvad olema paremini riistvara ja multitegumtöötluse kasutamisel, sest kui programm vajab teavet mälust või mõnda muud protsessi, siis on sellel rohkem juurdepääs otseülekandele ja see ei pea ootama järjekorras asju. See aga võib põhjustada probleeme, sest rohkem asju, mis töötavad juhendaja režiimis, seda enam, mis võib teie süsteemi vähendada, kui see ei tööta korralikult.
Pros
- Programmide otsesem juurdepääs riistvarale
- Lihtsam omavahel suhelda seotud protsesside vahel
- Kui teie seade on toetatud, ei tohiks see töötada ilma täiendavate installatsioonideta
- Protsessid reageerivad kiiremini, kuna protsessori ajast pole järjekorda
Cons
- Suurpaigaldage jalajälg
- Suuremälu jalajälg
- Vähem turvaline, sest kõik töötab juhendaja režiimis
Pilt läbi schoschie kohta Flickr
Hybrid Kernel
hübriidkernelil on võime valida ja valida, mida nad soovivad kasutaja režiimis käitada ja mida nad soovivad juhtidarežiimSageli käivad asjad, nagu seadme draiverid ja failisüsteemi I / O, kasutaja režiimis, kui IPC ja serverikõnesid hoitakse juhendaja režiimis. See annab mõlemale maailmale parima, kuid sageli vajab see riistvaratootja rohkem tööd, sest kõik juhtide vastutus on nende eest. Sellel võib olla ka mõningaid latentsusprobleeme, mis on omane mikrokernelidele.
Pros
- Arendaja saab valida ja valida, mis toimib kasutaja režiimis ja mis juhatab järelevaataja režiimis
- Väiksem paigaldamine jalajälg kui monoliitne tuum
- Paindlikum kui teiste mudelite
miinused
- Võib kannatada sama protsessi viivitusega kui mikrokernel
- Seadme draivereid peab haldama kasutaja( tavaliselt)
Kus on Linuxi kerneli failid?
Ubuntu kerneli fail on salvestatud teie / boot kausta ja seda nimetatakse vmlinuz- versiooniks .Nimi vmlinuz pärineb UNIX-ilt, kus nad kutsusid oma tuumad lihtsalt "unix" tagasi 60ndatel aastatel, nii et Linux käivitas 90-ndate aastate esimest korda välja töötada oma tuumal "linux".
Kui virtuaalmälu oli välja töötatud lihtsamaks multitegumtöötluse võimete jaoks, pannakse faili esikülg "vm", et näidata, et kernel toetab virtuaalset mälu. Mõnda aega oli Linuxi tuum kutsutud vmlinuxiks, kuid kernel kasvas liiga suureks, et see sobiks saadaval käivitusmällu, nii et kerneli kujutis oli kokkusurutud ja lõppu x muudetud z-le, et näidata, et see on tihendatud zlib-kompressiooniga. Seda tihendust ei kasutata alati, sageli asendatakse see LZMA-ga või BZIP2-ga ning mõned tuumad lihtsalt nimetatakse zImageiks.
Versiooni nummerdamine toimub vormingus A.B.C.D, kus A.B arvatavasti on 2,6, teie versioon on C ja D tähistab teie plaastreid või parandusi.
/ boot kaustas on ka teisi väga olulisi faile, mida nimetatakse initrd.img-versiooni, system.map-versiooni ja config-versiooni. Initrd-faili kasutatakse väikese RAM-kettana, mis eraldab ja käivitab tegeliku kerneli faili. System.map-faili kasutatakse mälu haldamiseks enne, kui kernel täielikult koormab, ja konfiguratsioonifail ütleb kernelile, milliseid valikuid ja mooduleid laadida kerneli pildile, kui see on koostamisel.
Linuxi kerneli arhitektuur
Kuna Linuxi tuum on monoliitne, on see suurim jalajälg ja kõige keerukam muud tüüpi tuumad. See oli disainifunktsioon, mis Linuxi alguses oli mõnevõrra arutelul ja millel on ikka veel mõningad disainilahendused, mida monoliitsed tuumad omavad.
Üks asi, mida Linuxi kerneli arendajad selle vea kõrvaldamiseks tegid, olid kerneli moodulite loomine, mida saab käitusajal laadida ja tühjendada, mis tähendab, et saate oma kerneli funktsioone lisada või eemaldada. See võib ulatuda kerneli riistvara funktsionaalsuse lisamisest, lisades serveriprotsesse käitatavaid mooduleid, nagu näiteks väikese virtualiseerimine, kuid see võimaldab ka kogu kerneli asendada ilma, et mõnel juhul oleks vaja arvutit taaskäivitada.
Kujutage ette, kas saaksite Windowsi hoolduspaketiga üle minna, ilma et oleks kunagi vaja uuesti käivitada. ..
kerneli moodulid
Mis juhtub, kui Windows oleks kõik draiverid juba installitud ja peate lihtsalt vajalike draiverite sisse lülitama? Põhimõtteliselt on see Linuxi jaoks tuuma moodulid. Kerneli moodulid, mida nimetatakse ka koormatavate kernelimooduliks( LKM), on olulised, et hoida tuumal toimida kogu teie riistvaraga, ilma et kasutaksite kogu oma olemasolevat mälu.
Moodul lisab tavaliselt baaskernelile funktsioone selliste asjade jaoks nagu seadmed, failisüsteemid ja süsteemikõned. LKM-id sisaldavad faililaiendit. ko ja neid tavaliselt säilitatakse /lib/ moodulite kataloogis. Modulaarse olemuse tõttu saate oma kerneli kergesti kohandada, seadistades mooduleid koormusse laadimiseks või mitte, käivitades käsuga menuconfig või redigeerides oma /boot/ konfiguratsiooni faili või laadides ja vabastades mooduleid lennukiga modprobe käsuga.
Kolmanda osapoole ja suletud lähtekoodide moodulid on saadaval mõnes distributsioonis, näiteks Ubuntu, ja seda ei pruugi vaikimisi installida, kuna moodulite lähtekood pole saadaval. Tarkvara arendaja( nt nVidia, ATI jne) ei paku lähteteksti, vaid nad loovad oma mooduleid ja kompileerivad levitamiseks vajalikud. ko failid. Kuigi need moodulid on vabad nagu õlut, ei ole need kõnes vabad ja seetõttu ei kuulu mõned distributsioonid, sest hooldajad tunnevad seda, et nad vabastavad kerneli mittetarkvara abil.
Kernel ei ole maagiline, kuid see on täiesti hädavajalik, et iga arvuti korralikult töötaks. Linuxi kernel on teistsugune kui OS X ja Windows, kuna see sisaldab kerneli tasemel draivereid ja muudab paljusid asju "karbist välja".Loodetavasti teate veidi rohkem sellest, kuidas teie tarkvara ja riistvara koos töötavad ja milliseid faile on vaja arvuti käivitamiseks.
Kernel.org
Pilt ingridtaylar