5Aug
Ar vairāk nekā 13 miljoniem koda rindiņu Linux kodols ir viens no lielākajiem atvērtā koda projektiem pasaulē, bet kas ir kodols un kāds tas ir paredzēts?
Tātad, kas ir kodols?
Kodols ir zemākais viegli maināmās programmatūras līmenis, kas saskaras ar datora aparatūru. Tā ir atbildīga par visu jūsu lietojumprogrammu sasaisti, kas darbojas "lietotāja režīmā" līdz fiziskajai aparatūrai, un ļaujot procesiem, kas pazīstami kā serveri, iegūt informāciju no cita, izmantojot starpprocesu komunikāciju( IPC).
Dažāda veida kodoli
. Protams, veidojot kodolu un arhitektūras apsvērumus, pastāv dažādi veidi, kā veidot vienu no nulles. Parasti lielākā daļa kodolu iedala vienā no trim veidiem: monolīts, mikro kodols un hibrīds. Linux ir monolīts kodols, bet OS X( XNU) un Windows 7 izmanto hibrīdus kodus. Apskatīsim trīs kategorijas, lai varētu sīkāk aplūkot vēlāk.
Attēls pēc upcīta popkorna
Mikrokodola
Mikrokodols ņem pieeju tikai tam, kā pārvaldīt to: CPU, atmiņu un IPC.Diezgan daudz visu citu datoru var uzskatīt par piederumu, un to var apstrādāt lietotāja režīmā.Mikrokodiem ir pārnesamības priekšrocība, jo tiem nav jāuztraucas, ja maināt savu videokarti vai pat operētājsistēmu tik ilgi, kamēr operētājsistēma joprojām mēģina piekļūt aparatūrai tādā pašā veidā.Mikrokodiem ir arī ļoti mazs nospiedums gan atmiņai, gan vietu instalēšanai, un tie parasti ir drošāki, jo lietotāja režīmā darbojas tikai specifiski procesi, kuriem nav lielu atļauju kā uzraudzītāja režīmam.
Pros
- Pārnēsājamība
- Mazie instalēšanas pēdas
- Mazie atmiņas nospiedumi
- Drošība
Mīnusi
- Aparatūra ir vairāk absorbēta, izmantojot vadītājus
- Aparatūra var reaģēt lēnāk, jo draiveri atrodas lietotāja režīmā
- Procesiem jāgaida rindā, lai iegūtu informāciju
- Procesi nevarpiekļūstiet citiem procesiem, negaidot
monolītās kodola
monolītus kodus, ir pretēji mikrokodiem, jo tie ietver ne tikai CPU, atmiņu un IPC, bet arī tādas lietas kā ierīces draiveri, failu sistēmu pārvaldība un sistēmas serveru zvani. Monolītu kodoli parasti labāk piekļūst aparatūras un daudzuzdevumu veikšanai, jo, ja programmai ir jāsaņem informācija no atmiņas vai cita procesa gaitā, tai ir vairāk tiešas līnijas, lai piekļūtu tai, un tam nav jāgaida rindā, lai veiktu lietas. Tomēr tas var radīt problēmas, jo vairāk lietas, kas darbojas vadītāja režīmā, jo vairāk lietas var samazināt jūsu sistēmu, ja tā nedarbojas pareizi.
Pros
- Tiešāka pieeja aparatūrai programmām
- Vieglāk procesiem, lai sazinātos starp viena otrai
- Ja jūsu ierīce ir atbalstīta, tam jādarbojas bez papildu instalācijām
- Procesi reaģē ātrāk, jo nav procesora laika rindas
Cons
- Largeinstalēt pēdas
- Liels atmiņas nospiedums
- Mazāk drošs, jo viss darbojas vadītāja režīmā
Attēls, izmantojot schoschie par Flickr
Hybrid kodolu
hibrīda kodoliem ir iespēja izvēlēties un izvēlēties, ko viņi vēlas palaist lietotāja režīmā un ko viņi vēlas palaist vadītājamrežīmsBieži vien lietas, piemēram, ierīces draiveri un failu sistēmu I / O, darbosies lietotāja režīmā, kamēr IPC un servera zvani tiks saglabāti uzrauga režīmā.Tas dod labāko no abām pasaulēm, bet bieži vien būs nepieciešams vairāk aparatūras ražotāja darbu, jo visi vadītāja pienākumi ir viņu labā.Tam var būt arī dažas latency problēmas, kas ir raksturīgas mikro kodoliem.
Pros
- Izstrādātājs var izvēlēties un izvēlēties to, kas darbojas lietotāja režīmā un kas darbojas vadītāja režīmā
- Mazāka instalēšanas pēdas nekā monolīta kodola
- elastīgāka nekā citiem modeļiem
Cons:
- Var ciest no tā paša procesa novecošanās, jo mikrokernelis
- Ierīces draiveri jāpārvalda lietotājam( parasti)
Kur ir Linux kodola faili?
Kodola fails Ubuntu tiek saglabāts jūsu / boot mapē un tiek saukts par vmlinuz- versiju .Nosaukums vmlinuz nāk no Unix pasaules, kur 60. gados tās sauca par kodolu tikai "unix", lai Linux sāktu izsaukt savu kodolu "linux", kad tā pirmo reizi tika izstrādāta 90. gados.
Kad virtuālā atmiņa tika izstrādāta, lai atvieglotu vairākuzdevumu veiktspēju, faila priekšpusē tika novietota vm, lai parādītu, ka kodols atbalsta virtuālo atmiņu. Uz laiku Linux kodolu sauca par vmlinux, bet kodols pieauga, lai ietilptu pieejamā sāknēšanas atmiņā, tādējādi kodola attēls tika saspiests, bet beigu x tika mainīts uz z, lai parādītu, ka tas ir saspiests ar zlib saspiešanu.Šo pašu saspiešanu ne vienmēr izmanto, bieži aizstāj ar LZMA vai BZIP2, un dažus kodus vienkārši sauc par zImage.
Versijas numerācija būs formātā A.B.C.D, kur A.B, iespējams, būs 2.6, C būs jūsu versija, un D norāda jūsu plāksterus vai labojumus.
mapē / boot būs arī citi ļoti svarīgi faili, kurus sauc par initrd.img-version, system.map-version un config-version. Initrd fails tiek izmantots kā neliels RAM disks, kas ekstrakts un izpilda faktisko kodola failu. System.map fails tiek izmantots atmiņas pārvaldībai pirms kodola pilnīgas ielādes, un konfigurācijas fails norāda kodolam, kādas iespējas un moduļus ielādēt kodola attēlā, kad tā tiek apkopota.
Linux kodola arhitektūra
Tā kā Linux kodols ir monolīts, tam ir vislielākā nospieduma daļa un sarežģītība salīdzinājumā ar citiem kodola tipiem.Šī bija dizaina iezīme, kas bija diezgan daudz diskusiju Linux sākuma dienās un joprojām rada tādas pašas dizaina kļūdas, kuras ir saistītas ar monolītiem kodoliem.
Viena lieta, ko Linux kodolu izstrādātāji izdarīja, lai novērstu šīs kļūdas, bija izveidot kodola moduļus, kurus varētu ielādēt un iztukšot runtime, tādējādi jūs varat pievienot vai noņemt jūsu kodola funkcijas lidojumā.Tas var ietvert ne tikai aparatūras funkcionalitātes pievienošanu kodolam, to iekļaujot arī tādos moduļos, kuri darbina servera procesus, piemēram, zema līmeņa virtualizācijas, bet tā var arī ļaut mainīt visu kodolu, dažos gadījumos nevajadzējot no jauna restartēt datoru.
Iedomājieties, vai jūs varētu uzlabot uz Windows servisa pakotni, nekad vairs neesat nepieciešams restartēt. ..
kodola moduļi
Ko darīt, ja Windows būtu pieejams viss draiveris jau ir instalēts, un jums vienkārši vajadzēja ieslēgt nepieciešamos draiverus? Tas ir būtībā tas, ko kodola moduļi dara Linux. Kernel moduļi, kas pazīstams arī kā ielādes kodola modulis( LKM), ir būtiski svarīgi, lai kodols darbotos ar visu jūsu aparatūru, neizmantojot visu pieejamo atmiņu.
Modulis parasti papildina pamata kodola funkcionalitāti tādām lietām kā ierīces, failu sistēmas un sistēmas zvani. LKM faila paplašinājums ir. ko un parasti tiek saglabāts /lib/ moduļu direktorijā.Modulārā rakstura dēļ jūs varat viegli pielāgot savu kodolu, iestatot moduļus, lai ielādētu vai neielādētu, startējot ar komandu menuconfig vai rediģējot /boot/ konfigurācijas failu, vai arī jūs varat ielādēt un izlaist moduļus lidojumā ar modprobe komandu.
Trešo personu un slēgto avotu moduļi ir pieejami dažās izplatēs, piemēram, Ubuntu, un tos nevar instalēt pēc noklusējuma, jo moduļu avota kods nav pieejams. Programmatūras izstrādātājs( t.i., nVidia, ATI uc) nesniedz pirmkodu, bet gan izveido savus moduļus un apkopo nepieciešamos. ko failus izplatīšanai. Lai gan šie moduļi ir brīvi kā alum, tie nav brīvi kā runā, un tādēļ tie netiek iekļauti dažās izplatībās, jo uzturētāji uzskata, ka tas kodola "attīra", nodrošinot nebrīvo programmatūru.
Kodols nav burvju, bet tas ir pilnīgi svarīgi, lai jebkurš dators darbojas pareizi. Linux kodols atšķiras no operētājsistēmas OS X un Windows, jo tas ietver draiverus kodola līmenī un padara daudzas lietas atbalstītas "ārpus kastes".Cerams, ka jūs mazliet uzzināsit par to, kā jūsu programmatūra un aparatūra darbojas kopā un kādi faili ir nepieciešami, lai palaistu datoru.
Kernel.org
Image by ingridtaylar