5Aug

Što je Linux kernel i što to radi?


S više od 13 milijuna linija koda, Linux kernel je jedan od najvećih open source projekata na svijetu, ali ono što je kernel i za što se koristi?

Dakle, što je kernel?

Kernel je najniža razina lako zamjenjivog softvera koji se povezuje s hardverom na vašem računalu. Odgovorno je za povezivanje svih vaših aplikacija koje se pokreću u "korisničkom načinu" do fizičkog hardvera i omogućuju procesima poznatim kao poslužitelji da međusobno one međusobno komuniciraju putem komunikacijskih procesa( IPC).

Različiti tipovi jezgri

Postoje, naravno, različiti načini za izgradnju jezgri i arhitektonskih razmatranja pri izgradnji jedne od nule. Općenito, većina zrna spadaju u jednu od tri vrste: monolitni, mikrokernel i hibridni. Linux je monolitni kernel, dok OS X( XNU) i Windows 7 koriste hibridne kernele. Krenimo na kratko razgledavanje tri kategorije kako bismo mogli kasnije proći detaljnije.


Slika od strane popcorn kokice

Microkernel
Microkernel pristupa samo upravljanju onim što ima: CPU, memorija i IPC.Mnogo se drugo na računalu može vidjeti kao dodatak i može se rukovati u korisničkom načinu rada. Microkerneli imaju prednost od prenosivosti jer se ne moraju brinuti ako promijenite grafičku karticu ili čak vaš operativni sustav sve dok operacijski sustav i dalje pokušava pristupiti hardveru na isti način. Microkerneli također imaju vrlo mali trag za memoriju i instalaciju prostora, a oni imaju tendenciju da budu sigurniji jer se u korisničkom načinu izvode samo određeni procesi koji nemaju visoke dozvole kao način supervizora.

Pros

  • Prenosivost
  • Mali instalirati otisak
  • Mala memorija otisak
  • Sigurnost

Cons

  • Hardver je više apstraktno putem vozača
  • Hardver može reagirati sporije, jer su vozači u korisničkom načinu rada
  • Procesi moraju čekati u redu da biste dobili informacije
  • Procesi ne mogudobiti pristup drugim procesima bez čekanja

Monolitni kernel
Monolitne jezgre su suprotno od mikrokernela jer obuhvaćaju ne samo CPU, memoriju i IPC, već uključuju i stvari poput upravljačkih programa uređaja, upravljanja datotečnim sustavom i poziva poslužitelja sustava. Monolitne jezgre imaju tendenciju da budu bolji u pristupu hardveru i višezadaćnosti, jer ako program treba dobiti informacije iz memorije ili drugog procesa, ima više izravne linije da mu pristupi i ne mora čekati u redu kako bi se stvari učinile. To, međutim, može uzrokovati probleme jer više stvari koje se pokreću u načinu nadzora, više stvari koje mogu dovesti vaš sustav ako se ne ponaša ispravno.

Pros

  • Veći izravni pristup hardveru za programe
  • Lakše je za procese komuniciranja međusobno
  • Ako je vaš uređaj podržan, treba raditi bez dodatnih instalacija
  • Procesi reagiraju brže jer nema vremena za procesor

Cons

  • Velikiinstalirajte otisak
  • Veliki memorijski otisak
  • Manje siguran jer sve radi u nadzornom načinu rada


Slika putem schoschie na Flickr

Hibridni kernel
Hibridne jezgre imaju mogućnost odabira onoga što žele pokrenuti u korisničkom načinu i onoga što žele pokrenuti u supervizorunačin.Često se stvari poput upravljačkih programa uređaja i datotečnog sustava I / O pokreću u korisničkom načinu dok se IPC i pozivi poslužitelja zadržavaju u nadređenom načinu rada. To daje najbolje od oba svijeta, ali često će zahtijevati više posla proizvođača hardvera jer je sve odgovornosti vozača na njih. Također može imati neke od latentnih problema koji su svojstveni mikrokernelima.

Pros

  • Razvojni programer može odabrati što radi u korisničkom modu i što radi u nadređenom načinu rada
  • Manji instalirani trag od monolitnog kernela
  • Savitljiviji od ostalih modela

Cons

  • Može patiti od istog procesnog kašnjenja kao i mikrokernel
  • Upravljački programi uređaja moraju biti upravljani od strane korisnika( obično)

Gdje su Linux kernel datoteke?

Kernel datoteka, u Ubuntu, pohranjena je u mapi / boot i zove se vmlinuz- verzija .Ime vmlinuz dolazi iz unix svijeta u kojem su svoje 60-tog stoljeća nazvali "unix" jezgra pa je Linux počeo zvati njihovu jezgru "linux" kada se prvi put razvio u 90-ima.

Kad je razvijena virtualna memorija za lakše višezadaćne sposobnosti, "vm" je stavljen ispred datoteke kako bi pokazalo da kernel podržava virtualnu memoriju. Neko vrijeme Linux kernel nazvan je vmlinux, ali kernel je postao prevelik da bi se uklopio u raspoloživu boot memorije pa je slika kernela komprimirana i završetak x promijenjen u z kako bi se pokazalo da je komprimiran sa zlib komprimiranjem. Ta se kompresija ne koristi uvijek, često se zamjenjuju LZMA ili BZIP2, a neke su jezgre jednostavno zove zImage.

Brojčana inačica bit će u obliku A.B.C.D gdje A.B vjerojatno će biti 2.6, C će biti vaša verzija, a D označava vaše zakrpe ili popravke.

U mapi / boot će biti i druge vrlo važne datoteke zvane initrd.img-verzija, system.map-verzija i config-verzija. Initrd datoteka se koristi kao mali RAM disk koji ekstrahira i izvršava stvarni kernel datoteku. File system.map koristi se za upravljanje memorijom prije no što se jezgra u potpunosti učita, a konfiguracijska datoteka govori kernelu o opcijama i modulima za učitavanje u sliku kernela kada se ona sastavlja.

Linux kernel arhitektura

Budući da je Linux kernel monolitno, ima najveći trag i najkompleksniju nad drugim vrstama jezgri. To je bila značajka dizajna koja je bila prilično debata u ranim danima Linuxa i još uvijek nosi neke iste dizajnerske nedostatke koje su monolitne jezgre inherentne.

Jedna stvar koju su programeri Linux kernela napravili da bi se zaobišli tih nedostataka bio je napraviti modula kernela koji se mogu učitati i učitati tijekom izvođenja, što znači da možete dodavati ili ukloniti značajke svog kernela na letu. To može ići dalje od dodavanja hardverske funkcionalnosti na kernel, uključivanjem modula koji pokreću poslužiteljske procese, kao što je virtualizacija niske razine, ali može dopustiti i da se cijeli kernel zamijeni bez potrebe za ponovno pokretanje računala u nekim slučajevima.

Zamislite ako biste mogli nadograditi na Windows servisni paket bez potrebe za ponovnim pokretanjem. ..

kernel moduli

Što ako je Windows imao svaki dostupan upravljački program već instaliran i samo ste morali uključiti vozače koji su vam potrebni? To je u biti ono što moduli kernela rade za Linux. Kernel moduli, također poznati kao učitani kernel modul( LKM), bitni su za održavanje kernela koji funkcionira sa svim vašim hardverom bez konzumiranja sve raspoložive memorije.

Modul obično dodaje funkcionalnost baznom kernelu za stvari poput uređaja, datotečnih sustava i poziva sustava. LKM-ovi imaju ekstenziju datoteke. ko i obično se pohranjuju u /lib/ moduli. Zbog svoje modularne prirode možete jednostavno prilagoditi vašu jezgru postavljanjem modula za učitavanje ili ne učitavanje tijekom pokretanja s naredbom menuconfig ili uređivanjem /boot/ konfiguracijske datoteke, ili možete učitati i iskrcati module u letu pomoću modprobe naredbe.

Third-party i zatvoreni izvorni moduli dostupni su u nekim distribucijama, kao što je Ubuntu, i možda ih ne mogu instalirati prema zadanim postavkama jer izvorni kod za module nije dostupan. Razvojni programer softvera( npr. NVidia, ATI, među ostalima) ne daje izvorni kod, već oni grade svoje module i sastavljaju potrebne. ko datoteke za distribuciju. Iako su ovi moduli besplatni kao u pivu, oni nisu besplatni kao u govoru i stoga nisu dio nekih distribucija, jer održavatelji smatraju da "kvarlja" jezgru pružajući ne-slobodan softver.

Kernel nije čarobna, ali je potpuno neophodno za bilo koji računalo koji radi ispravno. Linux kernel je drugačiji od OS X i Windows, jer uključuje upravljačke programe na razini kernela i podržava mnoge stvari "iz kutije".Nadamo se da ćete znati malo više o tome kako vaš softver i hardver zajedno rade i koje datoteke morate pokrenuti vaše računalo.

Kernel.org
Slika tvrtke ingridtaylar