Mis on Linuxi tuum ja mida see teeb?

Sisukord:

Mis on Linuxi tuum ja mida see teeb?
Mis on Linuxi tuum ja mida see teeb?
Anonim
 Linuxi kernel on üle 13 miljoni koodiliini, mis on üks maailma suurimaid avatud lähtekoodiga projekte, kuid mis on kernel ja mis seda kasutatakse?
Linuxi kernel on üle 13 miljoni koodiliini, mis on üks maailma suurimaid 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

Erinevalt kerneli ehitamisest ja arhitektuurilisest kaalutlusest on neli korda ehitamisel muidugi muid võimalusi. Ü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.

Image
Image

Pilt poolt uptown popcorn

Mikrokernel Mikrokernel võtab kasutusele ainult selle, kuidas 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 nii kaua, kuni operatsioonisüsteem püüab 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.

Plussid

  • Teisaldatavus
  • Väike paigaldamine jalajälg
  • Väike mälu jalajälg
  • Turvalisus

Miinused

  • Riistvara on autojuhtide kaudu rohkem abstraktne
  • Riistvara võib reageerida aeglasemalt, kuna draiverid on kasutaja režiimis
  • Protsessid peavad informatsiooni saamiseks ootama järjekorda
  • Protsessid ei saa teistesse protsessidesse juurdepääsu ootamata

Monoliit kernel Monoliitsed tuumad on mikrokernelite vastand, sest need hõlmavad mitte ainult CPU-d, mälu ja IPC-d, vaid sisaldavad ka selliseid asju nagu seadmehaldurid, failisüsteemide haldamine 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.

Plussid

  • Otsene juurdepääs programmidele mõeldud riistvarale
  • Lihtsam üksteisega suhtlemise protsesside jaoks
  • Kui teie seade on toetatud, ei tohiks see töötada täiendavate installatsioonidega
  • Protsessid reageerivad kiiremini, kuna protsessori ajast pole järjekorda

Miinused

  • Suur paigaldusjälg
  • Suur mälu jalajälg
  • Vähem turvaline, sest kõik töötab juhendaja režiimis
 Pilt läbi schoschie kohta Flickr
Pilt läbi schoschie kohta Flickr

Hübriid kernel Hübriidkernelil on võimalus valida ja valida, mida nad soovivad kasutaja režiimis käitada ja mida nad tahavad käituda juhendaja režiimis. Sageli 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.

Plussid

  • Arendaja saab valida ja valida, mis töörežiimis ja mis toimub juhendaja režiimis
  • Väiksem paigaldamine jalajälg kui monoliitne kernel
  • Paindlikum kui teised mudelid

Miinused

  • Võib kannatada sama protsessi lag kui mikrokernel
  • Seadme draivereid peab haldama kasutaja (tavaliselt)

Kus on Linuxi kerneli failid?

Image
Image

Ubuntu kerneli fail on salvestatud teie / boot-kausta ja seda kutsutakse vmlinuz-versioon. 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 mitmekülgsete võimete lihtsamaks saamiseks, 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.

Versioonide nummerdamine toimub vormingus A.B.C.D, kus A.B arvatavasti on 2.6, C on teie versioon 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 on täielikult koormatud, ja konfiguratsioonifail ütleb kernelile, milliseid valikuid ja mooduleid laadida kerneli pildile, kui see koostatakse.
/ 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 on täielikult koormatud, ja konfiguratsioonifail ütleb kernelile, milliseid valikuid ja mooduleid laadida kerneli pildile, kui see koostatakse.

Linuxi kerneli arhitektuur

Kuna Linuxi kernel 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 kerneliprojektid nende piiride ületamiseks tegi, olid kerneli moodulite loomine, mida saab käivitamisel 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, kui saaksite Windowsi hoolduspaketiga üle minna, ilma et oleks vaja taaskäivitada …

Kerneli moodulid

Mis siis, kui Windows oleks kõik draiverid juba installitud ja peate just 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.
Mis siis, kui Windows oleks kõik draiverid juba installitud ja peate just 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-idel on faililaiend.ko ja neid tavaliselt hoitakse kataloogis / lib / modules. Modulaarse olemuse tõttu saate kerneli hõlpsasti kohandada, seadistades mooduleid koormusse laadimiseks või mitte, käivitamisel käsuga menuconfig või redigeerides oma / boot / config-faili või saate mooduleid lennukile laadida ja vabastada modprobe abil käsk

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 oluline, et ükski arvuti töötab õigesti. 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 poolt ingridtaylar

Soovitan: