If-Koubou

Kas ir Linux kodols un ko tas dara?

Kas ir Linux kodols un ko tas dara? (Kā)


Izmantojot vairāk nekā 13 miljonus 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žādi kodolu veidi

Protams, veidojot vienu no nulles, protams, ir dažādi veidi, kā veidot kodolu un arhitektūras apsvērumus. 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 ar upes popkorns

Mikrokernelis
Mikrokodolu pieeja ir tikai tas, kā pārvaldīt: 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 lielas atļaujas kā uzraudzītāja režīmā.

Plusi

  • Pārvietojamība
  • Mazais instalēšanas rādītājs
  • Neliels atmiņas nospiedums
  • Drošība

Cons

  • Aparatūra ir vairāk izvilkta, izmantojot draiverus
  • Aparatūra var reaģēt lēnāk, jo draiveri atrodas lietotāja režīmā
  • Lai iegūtu informāciju, procesiem jāgaida rinda
  • Procesi nevar gūt piekļuvi citiem procesiem, negaidot

Monolīta kodols
Monolīti kodi 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.

Plusi

  • Plašāka tieša piekļuve aparatūras programmām
  • Vieglāk procesu savstarpējai saziņai
  • Ja jūsu ierīce ir atbalstīta, tai vajadzētu strādāt bez papildu instalēšanas
  • Procesi reaģē ātrāk, jo procesora laikā nav rindas

Cons

  • Liels uzstādīšanas nospiedums
  • Liels atmiņas nospiedums
  • Mazāk drošs, jo viss darbojas vadītāja režīmā


Attēls, izmantojot schoschie par Flickr

Hibrīda kodols
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āja režīmā. Biež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.

Plusi

  • Izstrādātājs var izvēlēties un izvēlēties, kas darbojas lietotāja režīmā un kas darbojas vadītāja režīmā
  • Mazāks uzstādīšanas spiediens nekā monolītā kodola
  • Elastīgāki nekā citi modeļi

Cons

  • Var ciest no tā paša procesa kavējuma kā mikro kodols
  • Ierīces draiveri jāpārvalda lietotājam (parasti)

Kur ir Linux kodola faili?

Kernelis, Ubuntu, tiek saglabāts jūsu / boot mapē un tiek saukts par vmlinuz-versija. 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 ar nosaukumu 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ākais noslogojums un vislielākā sarežģītība salīdzinājumā ar citiem kodola veidiem. Šī 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 vada servera procesus, piemēram, zemu virtualizācijas līmeni, bet arī var mainīt visu kodolu, dažos gadījumos nevajadzējot no jauna restartēt datoru.

Iedomājieties, ja jūs varētu pāriet uz Windows servisa pakotni, nekad vairs nav jāpārstartē ...

Kodola moduļi

Ko darīt, ja Windows jau būtu instalējis visus draiverus, un jums bija jāieslēdz vajadzīgie draiveri? 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 direktorijā / lib / modules. 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 / config failu, vai arī jūs varat ielādēt un izlaist moduļus lidojumā ar modprobe komandu

Trešās puses un slēgtā koda moduļi ir pieejami dažos izplatījumos, 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. Kaut arī šie moduļi ir brīvi kā alum, tie nav brīvi kā runā, un tādēļ tie netiek iekļauti dažās izplatīšanas jomā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
Attēls ar ingridtaylar