Mikä on Linux-ydin ja mitä se tekee?
Yli 13 miljoonalla koodirivillä Linux-ydin on yksi maailman suurimmista avoimen lähdekoodin projekteista, mutta mikä on ydin ja mitä sitä käytetään?
Joten mikä on ydin?
Ydin on pienin taso helposti vaihdettavissa olevasta ohjelmistosta, joka on yhteydessä tietokoneen laitteistoon. Sen tehtävänä on liittää kaikki "käyttäjämoodissa" käytettävät sovellukset fyysiseen laitteistoon ja mahdollistavat prosessit, joita kutsutaan palvelimiksi, saada tietoja toisistaan prosessien välisen viestinnän avulla (IPC).
Erilaisia ytimiä
On tietysti erilaisia tapoja rakentaa ytimen ja arkkitehtuurin näkökohdat, kun niitä rakennetaan tyhjästä. Yleensä useimmat ytimet kuuluvat johonkin kolmesta tyypistä: monoliittinen, mikrokerneli ja hybridi. Linux on monoliittinen ydin, kun taas OS X (XNU) ja Windows 7 käyttävät hybridiytimiä. Otetaan nopea kierros kolmeen ryhmään, jotta voimme myöhemmin mennä yksityiskohtaisemmin.
Kuva käyttäjältä uppoporno
mikroytimen
Mikrolähde ottaa lähestymistavan, jossa hallitaan vain sitä, mitä sillä on: CPU, muisti ja IPC. Melko paljon kaikkea muuta tietokoneessa voidaan pitää lisävarusteena, ja sitä voidaan käsitellä käyttäjän tilassa. Microkernelillä on kannettavuuden etu, koska niiden ei tarvitse huolehtia, jos vaihdat videokorttiasi tai jopa käyttöjärjestelmääsi niin kauan kuin käyttöjärjestelmä yrittää edelleen käyttää laitteistoa samalla tavalla. Microkernelillä on myös hyvin pieni jalanjälki sekä muistia että asennustilaa varten, ja niillä on taipumus olla turvallisempia, koska vain tietyt prosessit kulkevat käyttäjän tilassa, jossa ei ole korkeita käyttöoikeuksia valvojana.
Plussat
- siirrettävyys
- Pieni asennustapa
- Pieni muistin jalanjälki
- turvallisuus
Haittoja
- Laitteita käytetään enemmän kuljettajien kautta
- Laitteisto saattaa reagoida hitaammin, koska ohjaimet ovat käyttäjätilassa
- Prosessien on odotettava jonossa saadakseen tietoa
- Prosessit eivät pääse käyttämään muita prosesseja odottamatta
Monoliittinen ydin
Monoliittiset ytimet ovat mikrolähetysten vastakohtia, koska ne eivät sisällä vain CPU: ta, muistia ja IPC: tä, vaan ne sisältävät myös esimerkiksi laiteohjaimet, tiedostojärjestelmän hallinta ja järjestelmäpalvelimen puhelut. Monoliittiset ytimet ovat yleensä parempia laitteistoon ja monitehtävään pääsyssä, koska jos ohjelmassa täytyy saada tietoa muistista tai muusta käynnissä olevasta prosessista, sillä on suorempi linja sen käyttämiseen ja sen ei tarvitse odottaa jonossa saadakseen asioita. Tämä voi kuitenkin aiheuttaa ongelmia, koska mitä enemmän asioita valvoja-tilassa käytetään, sitä enemmän asioita voi alentaa järjestelmääsi, jos sitä ei käytetä oikein.
Plussat
- Ohjelmien suorempi pääsy laitteistoon
- Helpompi prosessien kommunikoida toistensa välillä
- Jos laite on tuettu, sen pitäisi toimia ilman lisäasennuksia
- Prosessit reagoivat nopeammin, koska prosessorin aikaa ei ole jonossa
Haittoja
- Suuri asennusjalanjälki
- Suuri muistin jalanjälki
- Vähemmän turvallinen, koska kaikki toimii valvojan tilassa
Kuva kautta schoschie Flickr
Hybridi-ydin
Hybridiytimillä on kyky valita ja valita, mitä he haluavat käyttää käyttäjätilassa ja mitä he haluavat suorittaa valvoja-tilassa. Usein ajurit ja tiedostojärjestelmän I / O-toiminnot ajetaan usein käyttäjätilassa, kun taas IPC- ja palvelinpuhelut pidetään valvojan tilassa. Tämä antaa molempien maailmojen parhaat puolet, mutta usein vaativat enemmän valmistajan työtä, koska kaikki kuljettajan vastuu on niiden vastuulla. Siinä voi olla myös joitakin latenssiongelmia, jotka ovat luonteeltaan mikrokäyttöisiä.
Plussat
- Kehittäjä voi valita ja valita, mitä käyttäjä-tilassa ja valvontatilassa toimii
- Pienempi asennus kuin monoliittinen ydin
- Joustavampi kuin muut mallit
Haittoja
- Voi kärsiä saman prosessin viiveestä kuin mikrokernel
- Käyttäjän on hallittava laiteajureita (tyypillisesti)
Missä ovat Linux-ytimen tiedostot?
Ubuntuissa oleva ytimen tiedosto tallennetaan / boot-kansioon ja sitä kutsutaan vmlinuziksi-versio. Nimi vmlinuz tulee unix-maailmasta, jossa he kutsuivat heidän ytimensä yksinkertaisesti ”unixiksi” takaisin 60-luvulla, joten Linux alkoi kutsua ytimensä ”linux”, kun se kehitettiin ensimmäisen kerran 90-luvulla.
Kun virtuaalimuistia kehitettiin helpottamaan monitehtävyysominaisuuksia, "vm" laitettiin tiedoston etuosaan osoittamaan, että ydin tukee virtuaalimuistia. Jonkin aikaa Linux-ydin kutsuttiin vmlinuxiksi, mutta ydin kasvoi liian suureksi, jotta se mahtui käytettävissä olevaan käynnistysmuistiin, joten ytimen kuva pakattiin ja loppu x muutettiin z: ksi, jolloin se oli pakattu zlib-pakkauksella. Tätä samaa pakkausta ei aina käytetä, usein korvattu LZMA: lla tai BZIP2: lla, ja jotkut ytimet ovat yksinkertaisesti nimeltään zImage.
Versioiden numerointi on muodossa A.B.C.D, jossa A.B on todennäköisesti 2,6, C on sinun versio, ja D ilmaisee korjaustiedostosi tai korjauksesi.
/ Boot-kansiossa on myös muita erittäin tärkeitä tiedostoja nimeltä initrd.img-version, system.map-version ja config-version. Initrd-tiedostoa käytetään pienenä RAM-levynä, joka poimii ja suorittaa todellisen ytimen tiedoston. System.map-tiedostoa käytetään muistin hallintaan, ennen kuin ydin täyteen ladataan, ja konfiguraatiotiedosto kertoo ytimelle, mitä vaihtoehtoja ja moduuleja ladataan ytimen kuvaan, kun sitä kootaan.
Linux-ytimen arkkitehtuuri
Koska Linux-ydin on monoliittinen, sillä on suurin jalanjälki ja kaikkein monimutkaisin muille ytimille. Tämä oli muotoilun piirre, joka oli hieman keskustelun alla Linuxin alkupäivinä ja jossa on edelleen samoja suunnitteluvirheitä, että monoliittiset ytimet ovat luontaisia..
Yksi asia, jonka Linux-ytimen kehittäjät tekivät näiden virheiden ympärille, oli tehdä ytimen moduuleja, jotka voidaan ladata ja purkaa ajonaikaisesti, jolloin voit lisätä tai poistaa ytimen ominaisuuksia lennolla. Tämä voi ylittää pelkästään laitteiston toiminnallisuuden lisäämisen ytimeen sisällyttämällä palvelinprosesseja käyttäviä moduuleja, kuten matalan tason virtualisointia, mutta se voi myös sallia koko ytimen vaihtamisen tarvitsematta käynnistää tietokonetta uudelleen joissakin tapauksissa.
Kuvittele, jos voisit päivittää Windows-huoltopakettiin ilman, että tarvitset uudelleen käynnistystä…
Kernel-moduulit
Entä jos Windows olisi asentanut jokaisen ohjaimen jo valmiiksi ja sinun tarvitsi vain käynnistää tarvitsemasi ohjaimet? Tämä on pohjimmiltaan mitä ytimen moduulit tekevät Linuxille. Kernel-moduulit, joita kutsutaan myös ladattaviksi ytimen moduuleiksi (LKM), ovat välttämättömiä ytimen toiminnan ylläpitämiseksi koko laitteellasi ilman, että käytät kaikkea käytettävissä olevaa muistiasi.
Moduuli lisää tyypillisesti toiminnallisuutta tukiasemaan, kuten laitteisiin, tiedostojärjestelmiin ja järjestelmäkutsuihin. LKM: illä on tiedostopääte .ko ja ne tallennetaan tyypillisesti / lib / modules-hakemistoon. Modulaarisen luonteensa ansiosta voit helposti muokata ytimensi asettamalla moduulit lataamaan tai lataamatta käynnistyksen aikana menuconfig-komennolla tai muokkaamalla / boot / config-tiedostoa, tai voit ladata ja purkaa moduuleja modprobeen avulla komento.
Kolmannen osapuolen ja suljettujen lähteiden moduulit ovat saatavilla joissakin jakeluissa, kuten Ubuntu, ja niitä ei välttämättä asenneta oletusarvoisesti, koska moduulien lähdekoodi ei ole käytettävissä. Ohjelmiston kehittäjä (ts. NVidia, ATI) ei tarjoa lähdekoodia vaan rakentaa omia moduulejaan ja koota tarvittavat .ko-tiedostot jaettavaksi. Vaikka nämä moduulit ovat ilmaisia kuin oluen, ne eivät ole vapaita kuin puheessa, eivätkä ne siksi ole mukana joissakin jakeluissa, koska ylläpitäjät kokevat, että se "yllättää" ytimen tarjoamalla vapaita ohjelmistoja.
Ydin ei ole maaginen, mutta se on täysin välttämätöntä kaikille tietokoneille, jotka toimivat oikein. Linux-ydin on erilainen kuin OS X ja Windows, koska se sisältää ajurit ytimen tasolla ja tekee monista asioista tuettuja "pois laatikosta". Toivottavasti tiedät vähän enemmän siitä, miten ohjelmisto ja laitteisto toimivat yhdessä ja mitä tiedostoja tietokoneesi käynnistämiseen tarvitaan.
Kernel.org
Kuva käyttäjältä ingridtaylar