5Aug

Mikä on Linux-ydin ja mitä se tekee?


Linux-ytimellä on yli 13 miljoonaa koodia, yksi maailman suurimmista avoimen lähdekoodin hankkeista, mutta mikä on ydin ja mihin sitä käytetään?

Joten Mikä on ydin?

Ydin on helposti vaihdettavan ohjelmiston alhaisin taso, joka liittää tietokoneesi laitteistoon. Sen tehtävänä on liittää kaikki sovellustekniikka, joka toimii "käyttäjäkäytössä" fyysiselle laitteistolle ja antaa prosesseille, joita kutsutaan palvelimiksi, saada tietoja toisiltaan prosessin välityksellä( IPC).

Erilaiset ytimet

Ydin ja arkkitehtoniset näkökohdat ovat tietysti erilaisia, kun rakennat yhden tyhjästä.Yleensä useimmat ytimet kuuluvat yhteen kolmesta tyypistä: monoliitti, mikrokerneli ja hybridi. Linux on monoliittinen ydin, kun taas OS X( XNU) ja Windows 7 käyttävät hybridisydämiä.Otetaan nopea kiertue kolmesta luokasta, jotta voimme mennä tarkemmin myöhemmin.


Kuva uptown popcorn

Microkernel
Microkernel ottaa lähestymistavan hallitsemalla vain sitä, mitä sillä on: CPU, muisti ja IPC.Liian paljon kaikkea muuta tietokoneessa voidaan nähdä lisävarusteena ja sitä voidaan käsitellä käyttäjäkäytössä.Microkerneleillä on siirrettävyyden etu, koska niiden ei tarvitse huolehtia, jos muutat videokorttisi tai jopa käyttöjärjestelmääsi niin kauan kuin käyttöjärjestelmä yrittää edelleen käyttää laitteistoa samalla tavalla. Mikrokeskeleillä on myös hyvin pieni jalanjälki sekä muistille että asennuspaikalle, ja ne ovat yleensä turvallisempia, koska vain tiettyjä prosesseja käytetään käyttäjäkäytössä, jolla ei ole suuria käyttöoikeuksia esimiehenä.

Hyödyt

  • Siirrettävyys
  • Pieni asennus jalanjälki
  • Pieni muistin jalanjälki
  • Turvallisuus

Miinukset

  • Laitteisto on entistä enemmän abstrakti ohjainten kautta
  • Laitteisto saattaa reagoida hitaammin, koska ohjaimet ovat käyttäjätilassa
  • Prosessien on odotettava jonoon saadakseen tietoja
  • Prosessit eivät voipäästä muihin prosesseihin odottamatta

Monoliittinen ydin
Monoliittiset ytimet ovat mikrokerneleiden vastakohta, koska ne käsittävät paitsi prosessorin, muistin ja IPC: n, mutta ne sisältävät myös asioita kuten laiteohjaimet, tiedostojärjestelmän hallinta ja järjestelmäpalvelimen puhelut. Monoliittiset ytimet pyrkivät paremmin käyttämään laitteistoja ja monitoimityötä, koska jos ohjelma tarvitsee tietoja muistista tai muusta prosessista, sillä on suora linja päästäkseen siihen, eikä sen tarvitse odottaa jonoa saadakseen asiat päätökseen. Tämä voi kuitenkin aiheuttaa ongelmia, koska enemmän asioita, jotka toimivat valvojan tilassa, sitä enemmän asioita, jotka voivat heikentää järjestelmääsi, jos ei toimi oikein.

Hyödyt

  • Suorat pääsy laitteistoihin ohjelmille
  • Helppo prosessi kommunikoida toistensa välillä
  • Jos laitteesi on tuettu, sen pitäisi toimia ilman muita asennuksia
  • Prosessit reagoivat nopeammin, koska prosessorin aika ei ole jono

Suoja

  • Suuriasenna jalanjälki
  • Suuri muistin jalanjälki
  • Vähemmän varmaa, koska kaikki toimii valvontatilassa


Kuva Foskelin schoschien kautta

Hybrid-ytimen
Hybridien ytimillä on kyky valita ja valita, mitä he haluavat käyttää käyttäjäkäytössä ja mitä he haluavat käyttää ohjaajassatilassa. Usein ajankohtaiset asiat, kuten laiteajurit ja tiedostojärjestelmän I / O, suoritetaan käyttäjätilassa, kun IPC ja palvelinkutsut säilytetään ohjaustilassa. Tämä antaa molempien maailmojen parhaat puolet, mutta vaatii usein laitteiston valmistajan enemmän työtä, koska kaikki kuljettajien vastuu riippuu niistä.Se voi myös olla joitakin latentio-ongelmia, jotka liittyvät mikrokerneleihin.

Ammattilaiset

  • Kehittäjä voi valita, mitä toimii käyttäjäkäytössä ja mikä toimii valvontatilassa
  • Pienempi asennustalko kuin monoliittinen ydin
  • Joustavampi kuin muut mallit

Häiriöt

  • Voi kärsiä samasta prosessin viivästyksestä kuin mikroskoopilla
  • Laiteohjaimia täytyy hallita käyttäjän( tyypillisesti)

Missä ovat Linux-ytimen tiedostot?

Ubuntun ytimen tiedosto tallennetaan / boot-kansioosi ja sitä kutsutaan vmlinuz--versioksi .Nimi vmlinuz tulee Unix-maailmasta, jossa he käyttivät puheenvuoronsa yksinkertaisesti "unixiksi" 60-luvulla, joten Linux alkoi soittaa ydinään "linux", kun se kehitettiin 90-luvulla.

Kun virtuaalimuistia kehitettiin helpottamaan monitoimityökykyä, "vm" asetettiin tiedoston etupuolelle näyttämään, että ydin tukee virtuaalimuistia. Jonkin aikaa Linux-ydintä kutsuttiin vmlinuxiksi, mutta ydin kasvoi liian suureksi, jotta se sopisi käytettävissä olevaan käynnistysmuistiin, joten ytimen kuva pakattiin ja loppu x muutettiin z: ksi, jotta se osoittaisi sen pakattuiksi zlib-pakkauksella. Tätä samaa pakkausta ei aina käytetä, usein korvattu LZMA: lla tai BZIP2: lla ja joitakin ytimiä yksinkertaisesti kutsutaan zImageksi.

Versioiden numerointi on muotoa A.B.C.D, missä A.B todennäköisesti on 2.6, C on versio, ja D ilmaisee korjaustiedostoja tai korjauksia.

/ boot-kansiossa on myös muita erittäin tärkeitä tiedostoja, joita kutsutaan initrd.img -versio, system.map-versio ja config-versio. Initrd-tiedostoa käytetään pienenä RAM-levynä, joka poistaa ja suorittaa varsinaisen ytimen tiedoston. System.map-tiedostoa käytetään muistihallinnassa ennen ytimen lataamista kokonaan ja konfigurointitiedosto kertoo ytimelle, mitä vaihtoehtoja ja moduuleita ladataan ytimen kuvaan, kun sitä kootaan.

Linux-ytimen arkkitehtuuri

Koska Linux-ytimessä on monoliittinen, sillä on suurin jalanjälki ja monimutkaisuus verrattuna muihin ytimen tyyppeihin. Tämä oli design-ominaisuus, joka oli melko vähän keskustelua Linuxin alkuajoista ja sisältää edelleen joitain samankaltaisia ​​suunnitteluvirheitä, joita monoliittiset ytimet ovat luontaisia.

Yksi Linux-ytimen kehittäjien tekemä näistä puutteista oli tehdä ytimen moduulit, jotka voidaan ladata ja purkaa ajon aikana, joten voit lisätä tai poistaa ytimen ominaisuuksia lennossa. Tämä voi mennä pidemmälle kuin vain lisäämällä laitteiston toiminnallisuutta ytimeen sisällyttämällä moduulit, jotka suorittavat palvelinprosesseja, kuten alhaisen tason virtualisoinnin, mutta se voi myös sallia koko ytimen korvaamisen tarvitsematta käynnistää tietokonetta joissakin tapauksissa.

Kuvittele, voisitteko päivittää Windows-huoltopakettia tarvitsematta koskaan käynnistää uudelleen. ..

-ytimen moduulit

Mitä jos Windowsissa oli jo kaikki ajurit saatavilla jo asennettuna ja sinun tarvitsee vain käynnistää tarvittavat ohjaimet? Tämä on olennaisesti mitä ytimen moduulit tekevät Linuxille. Kernel-moduulit, jotka tunnetaan myös kuormitettavalle ytimen moduulina( LKM), ovat välttämättömiä, jotta ydin toimisi kaikkien laitteidesi kanssa käyttämättä kaikkia käytettävissä olevaa muistia.

Moduuli lisää tyypillisesti peruskornin toiminnallisuutta esimerkiksi laitteisiin, tiedostojärjestelmiin ja järjestelmäpuheluihin. LKM: issä on tiedostopääte. ko ja ne tallennetaan tyypillisesti /lib/-moduulien hakemistoon. Modulaarisen luonteensa ansiosta voit helposti mukauttaa ydintäsi asettamalla moduuleita ladattaessa tai lataamatta käynnistyksen aikana menuconfig-komennolla tai muokkaamalla /boot/-konfigurointitiedostoa tai voit ladata ja purkaa modfile-komentoa lennossa.

Kolmannen osapuolen ja suljetun lähdemoduulit ovat käytettävissä joissakin jakeluissa, kuten Ubuntu, eikä niitä voi asentaa oletusarvoisesti, koska moduulien lähdekoodi ei ole käytettävissä.Ohjelmiston kehittäjä( muun muassa nVidia, ATI) ei tarjoa lähdekoodia vaan rakentaa omat moduulit ja koota tarvittavat. ko-tiedostot jakelulle. Vaikka nämä moduulit ovat vapaita, kuten olut, ne eivät ole ilmaisia ​​kuten puheissa, joten jotkin jakelut eivät sisälly niihin, koska ylläpitäjät kokevat ytimen "rikkomatta" tarjoamalla ei-vapaita ohjelmistoja.

Kernel ei ole taikuutta, mutta se on täysin välttämätöntä sille, että jokin tietokone toimii oikein. Linux-ytimessä on erilainen kuin OS X ja Windows, koska se sisältää ohjaimia ytimen tasolla ja tekee monia asioita tuettuna "ulos laatikosta".Toivottavasti tiedät hieman enemmän siitä, miten ohjelmisto ja laitteisto toimivat yhdessä ja mitä tiedostoja tietokoneen käynnistämiseen tarvitaan.

Kernel.org
Kuva: ingridtaylar