Kas ir Linux kodols un ko tas dara?
Ar vairāk nekā 13 miljoniem kodu kodu Linux kodols ir viens no lielākajiem atklātā pirmkoda projektiem pasaulē, bet kas ir kodols un kāds tas tiek izmantots?
Tātad, kas ir kodols?
Kodols ir zemākais līmenis viegli nomaināmai programmatūrai, kas saskaras ar datora aparatūru. Tā ir atbildīga par visu lietojumprogrammu saskarni, kas darbojas “lietotāja režīmā”, līdz fiziskajai aparatūrai, un ļauj procesiem, kas pazīstami kā serveri, iegūt informāciju no otra, izmantojot starpprocesuālo komunikāciju (IPC).
Dažādu veidu kodoli
Protams, ir dažādi veidi, kā veidot kodolu un arhitektūras apsvērumus, veidojot to no nulles. Kopumā vairums kodolu ietilpst vienā no trim veidiem: monolīts, mikrokernels un hibrīds. Linux ir monolīta kodols, kamēr OS X (XNU) un Windows 7 izmanto hibrīdos kodolus. Ņemsim ātru ekskursiju pa trim kategorijām, lai vēlāk varētu sīkāk iepazīties.
Attēls pēc popkorns
Microkernel
Mikroelements izmanto pieeju, kas tikai pārvalda to, kas ir: CPU, atmiņa un IPC. Diezgan daudz viss pārējais datorā var tikt uzskatīts par piederumu, un to var apstrādāt lietotāja režīmā. Microkerneliem ir pārnesamības priekšrocība, jo viņiem nav jāuztraucas, ja maināt video karti vai pat savu operētājsistēmu, kamēr operētājsistēma joprojām mēģina piekļūt aparatūrai tādā pašā veidā. Microkerneliem ir arī ļoti mazs nospiedums gan atmiņai, gan instalācijas vietai, un tie parasti ir drošāki, jo lietotāja režīmā darbojas tikai konkrēti procesi, kuriem nav augstākas atļaujas kā uzraudzības režīmā.
Pros
- Pārnesamība
- Mazs instalācijas nospiedums
- Neliels atmiņas nospiedums
- Drošība
Mīnusi
- Aparatūra ir vairāk izmantota, izmantojot draiverus
- Aparatūra var reaģēt lēnāk, jo draiveri ir lietotāja režīmā
- Procesiem jāgaida rindā, lai iegūtu informāciju
- Procesi nevar piekļūt citiem procesiem, negaidot
Monolītais kodols
Monolītie kodoli ir pretēji mikrokamerām, jo tie ietver ne tikai CPU, atmiņu un IPC, bet arī tādas lietas kā ierīces draiveri, failu sistēmas pārvaldība un sistēmas servera zvani. Monolītie kodoli parasti ir labāki piekļuvei aparatūrai un vairāku uzdevumu veikšanai, jo, ja programmai ir jāsaņem informācija no atmiņas vai cita procesa, tai ir tiešāka līnija, lai piekļūtu tai, un tai nav jāgaida rindā, lai iegūtu lietas. Tomēr tas var radīt problēmas, jo vairāk lietas, kas darbojas vadītāja režīmā, jo vairāk var samazināt jūsu sistēmu, ja tā nedarbojas pareizi.
Pros
- Vairāk tieša piekļuve aparatūrai programmām
- Vienkāršāk procesus savstarpēji sazināties
- Ja ierīce ir atbalstīta, tai jādarbojas bez papildu instalācijām
- Procesi ātrāk reaģē, jo procesora laikam nav rindas
Mīnusi
- Liels instalācijas nospiedums
- Liels atmiņas nospiedums
- Mazāk droša, jo viss darbojas supervizora režīmā
Image caur schoschie uz Flickr
Hibrīdais kodols
Hibrīda kodoliem ir iespēja izvēlēties un izvēlēties to, ko viņi vēlas darboties lietotāja režīmā, un to, ko viņi vēlas palaist vadītāja režīmā. Bieži vien lietām, piemēram, ierīces draiveri un failu sistēmas I / O, darbosies lietotāja režīmā, kamēr IPC un servera zvani tiks saglabāti vadītāja režīmā. Tas dod vislabāko no abām pasaulēm, taču bieži vien būs nepieciešams vairāk aparatūras ražotāja darba, jo visas vadītāja atbildības ir tās. Tajā var būt arī dažas no latentuma problēmām, kas ir raksturīgas mikrokamerām.
Pros
- 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 instalācijas nospiedums nekā monolītajam kodolam
- Elastīgāka nekā citi modeļi
Mīnusi
- Var ciest no viena un tā paša procesa atpalicības kā mikrokernelis
- Ierīces draiveri ir jāpārvalda lietotājam (parasti)
Kur ir Linux kodola faili?
Ubuntu kodola fails tiek saglabāts jūsu / boot mapē, un to sauc par vmlinuz-versija. Nosaukums vmlinuz nāk no unix pasaules, kur viņi izmantoja, lai izsauktu savus kodolus, vienkārši “unix” atpakaļ 60. gados, tāpēc Linux sāka izsaukt savu kodolu “linux”, kad tas pirmo reizi tika izstrādāts 90. gados.
Kad virtuālā atmiņa tika izstrādāta vieglākiem uzdevumiem, “vm” tika ievietots faila priekšpusē, lai parādītu, ka kodols atbalsta virtuālo atmiņu. Kādu laiku Linux kodolu sauca par vmlinux, bet kodols kļuva pārāk liels, lai ietilptu pieejamā sāknēšanas atmiņā, lai kodola attēls tiktu saspiests un beigas x tiktu nomainītas uz z, lai parādītu, ka tas tika saspiests ar zlib kompresiju. Šo pašu saspiešanu ne vienmēr izmanto, bieži to aizstāj ar LZMA vai BZIP2, un daži kodoli tiek vienkārši saukti 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 ielāpus vai labojumus.
/ Boot mapē būs arī citi ļoti svarīgi faili, ko sauc par initrd.img-version, system.map-version un config-version. Initrd fails tiek izmantots kā mazs RAM disks, kas izraksta un izpilda faktisko kodola failu. Failu system.map izmanto atmiņas pārvaldībai, pirms kodols pilnībā ielādējas, un konfigurācijas fails paziņo kodolam, kādas iespējas un moduļi ielādējas kodola attēlā, kad tas tiek apkopots.
Linux kodola arhitektūra
Tā kā Linux kodols ir monolīts, tam ir vislielākais nospiedums un vissarežģītākais pārējo kodolu veidiem. Šī bija dizaina iezīme, kas Linux sākumposmā bija mazliet diskutējama un joprojām aizņem dažus no tiem pašiem dizaina trūkumiem, kas piemīt monolītajiem kodoliem..
Viena lieta, ko Linux kodola izstrādātāji darīja, lai apietu šos trūkumus, bija izveidot kodola moduļus, kas varētu tikt ielādēti un izkrauti runtime, kas nozīmē, ka jūs varat pievienot vai noņemt savas kodola funkcijas. Tas var pārsniegt tikai aparatūras funkcionalitātes pievienošanu kodolam, iekļaujot moduļus, kas vada servera procesus, piemēram, zemu virtualizācijas līmeni, taču tas var arī ļaut aizstāt visu kodolu, atsāknējot datoru dažos gadījumos.
Iedomājieties, ja jūs varētu jaunināt uz Windows servisa pakotni, nekad neprasot atsāknēt ...
Kodola moduļi
Ko darīt, ja sistēma Windows būtu jau instalējusi katru draiveri un jums vienkārši bija jāieslēdz nepieciešamie draiveri? Būtībā tas ir kodola moduļiem Linux. Kodola moduļi, kas pazīstami arī kā ielādējamais kodola modulis (LKM), ir būtiski, lai kodols darbotos ar visu aparatūru, neizmantojot visu pieejamo atmiņu.
Modulis parasti pievieno bāzes kodola funkcionalitāti tādām lietām kā ierīces, failu sistēmas un sistēmas zvani. LKM ir faila paplašinājums .ko un parasti tiek glabāti direktorijā / lib / modules. Moduļu rakstura dēļ jūs varat viegli pielāgot savu kodolu, uzstādot moduļus, lai ielādētu vai netiktu ielādēti, izmantojot menuconfig komandu vai rediģējot / boot / config failu, vai arī varat ielādēt un izņemt moduļus lidojumā ar modprobe komandu.
Trešās puses un slēgto avotu moduļi ir pieejami dažos sadalī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) nesniedz pirmkodu, bet gan izstrādā savus moduļus un apkopo nepieciešamos .ko failus izplatīšanai. Lai gan šie moduļi ir brīvi kā alus, tie nav brīvi kā runā, un tāpēc tie nav iekļauti dažos sadalījumos, jo uzturētāji uzskata, ka tas „kodē” kodolu, sniedzot bezmaksas programmatūru.
Kodols nav maģija, bet tas ir pilnīgi svarīgi, lai jebkurš dators darbotos pareizi. Linux kodols atšķiras no OS X un Windows, jo tas ietver draiverus kodola līmenī un padara daudzas lietas atbalstītas “no kastes”. Cerams, ka mazliet vairāk uzzināsiet, kā jūsu programmatūra un aparatūra darbojas kopā un kādi faili ir nepieciešami datora startēšanai.
Kernel.org
Attēls pēc ingridtaylar