Olet ehkä kuullut sovelluksista, jotka toimivat”ydin”tai”käyttäjä”tilassa. Kaikki riippuu siitä, kuinka käyttöjärjestelmät toimivat tehdessään työtään. Kun ymmärrät tämän, on helppo ymmärtää ero käyttäjätilan ja ydintilan välillä.
Käyttöjärjestelmän toiminnan ymmärtäminen
Tietokone koostuu laitteistosta, elektronisista komponenteista ja ohjelmistoista, ja tietokonekoodin suorittaa tuo laitteisto. Mutta mikä saattaa olla epäselvämpää, on se, kuinka ne toimivat yhdessä.
Sisällysluettelo
Tietokoneen tärkein elementti on bitti tai”binäärinumero”. Kaikki mitä tietokone tekee, esitetään ykkösinä ja nolliksina. Tietokoneen eri komponentit edustavat bittejä eri tavoin. CPU:ssa mikroskooppiset transistorit edustavat ykkösiä ja nollia joko päällä tai pois päältä. Nämä transistorit on järjestetty loogisiksi rakenteiksi, joita kutsutaan logiikkaporteiksi.
Elektronisessa tietokoneen muistissa bittejä edustavat muistisolut, joiden varaus on joko tietyn kynnyksen ylä-tai alapuolella. Mekaanisella kiintolevyllä bitit esitetään magneettisina vaihteluina, jotka mitataan pyörivällä lautasella. Optisilla levyillä kuopat ja maat, jotka heijastavat tai eivät heijasta laservaloa, tekevät saman työn.
Riippumatta siitä, kuinka binäärikoodin fyysinen esitys saavutetaan, voit lopulta vähentää kaikki kuluttajatietokoneiden komponentit tähän raakakoodiin.
Joten kuinka siirryt tietokoneen ihmisystävällisestä käyttöliittymästä raakaan, matalaan-tason prosessit itse tietokoneessa? Siellä käyttöjärjestelmä tulee mukaan. Se ohjaa suoraan tietokoneen laitteistoa.
Tämä ohjelmisto kääntää kaiken, mitä sovellukset (ja siten myös käyttäjä) haluavat konekoodiohjeiksi, jotka CPU ja muut komponentit ymmärtävät. Kriittisin ohjelmisto tässä prosessissa on ydin.
Mikä on ydin?
Ydin on, kuten nimestä voi päätellä, käyttöjärjestelmän ydin. Ydin on ohjelmisto, joka sijaitsee RAM-muistissa ja ohjaa kaikkea mitä tietokone tekee. Kun jotain kirjoitetaan muistiin, ydin ohjaa suoritusta.
Ydin osaa liittää laitteistot, kuten GPU:t ja verkkokortit, mutta se ei välttämättä osaa käyttää niitä täysillä. , joka perustuu tietokoneteollisuuden yleisiin standardeihin.
Laitteisto-ohjaimet tulevat käyttöön tässä. Ajurit kertovat käyttöjärjestelmällesi, kuinka tiettyjen komponenttien kanssa toimitaan, minkä vuoksi tarvitset erilaisia ajureita esimerkiksi Nvidia-ja AMD-grafiikkasuorittimiin.
Oikeilla ohjaimilla varustettu ydin on tietokoneen ylin auktoriteetti. , mukaan lukien sellaisten asioiden tekeminen, jotka voivat tuhota dataa katastrofaalisesti.
Sovellusohjelmointirajapintojen rooli
MS-DOS:n aikoina ohjelmistokehittäjien täytyi kirjoittaa ohjelmistonsa erityisesti käyttäjän laitteisto. Tunnetuin esimerkki tästä MS-DOS-järjestelmissä olivat äänikorttiohjaimet.
Jokaisen videopelin tulee tukea suosituimpia kortteja (Sound Blaster, Ad-lib, Gravis Ultrasound jne.) ja toivoa, että useimmat pelaajat ovat suojattuja. Nykyään asiat toimivat hyvin eri tavalla sovellusliittymien ansiosta.
äänikortin valintanäyttö Wolf3D:stä
Microsoft DirectX on hyvä esimerkki. Jos haluat perusteellisen selityksen, katso Mikä on DirectX ja miksi se on tärkeää? Tärkeintä on kuitenkin tietää, että API tarjoaa ohjelmistokehittäjille vakiotavan pyytää laitteistoresursseja GPU:n kaltaisista komponenteista. Lisäksi laitteistovalmistajien on vain varmistettava, että heidän tuotteensa ovat DirectX:n mukaisia, jotta ne ovat täysin yhteensopivia kaikkien vastaavien ohjelmistojen kanssa.
API:t tarjoavat käännöskerroksen ohjelmistosovellusten ja matalan tason ytimen ja sen laitteisto-ohjaimien välillä. Kyllä, tästä seuraa pieni suoritusrangaistus. Silti nykyaikaisissa tietokoneissa tämä on merkityksetöntä, ja sillä on monia etuja, jolloin pääsemme lopulta käyttäjätilaan ja ydintilaan.
Käyttäjätila vs. ydintila
Nykyaikaiset käyttöjärjestelmät suorittavat satoja tai tuhansia”prosesseja”samanaikaisesti, mikä antaa niille dynaamisesti CPU-aikaa tarpeen mukaan niiden prioriteettien ja laskentatehotarpeiden mukaan.
Kun käynnistät sovelluksen, se luo prosesseja ja CPU voi suorittaa ne joko käyttäjätilassa tai ydintilassa.
Käyttäjätilassa toimivalla Windows-prosessilla on pääsy vain omaan yksityiseen virtuaalimuistiin osoiteavaruuteen ja kahvataulukkoon. Ohjelmisto käyttää näitä taulukoita tietojen tallentamiseen RAM-muistiin ja resurssien pyytämiseen. Muistiin tai muihin laitteisiin ei ole suoraa pääsyä, ja käyttöjärjestelmän tehtävänä on kartoittaa nämä virtuaaliset tilat tietokoneen varsinaiseen laitteistoon.
Tämä on hyvä monesta syystä, mutta tärkein etu on, että sovellus ei voi ylikirjoittaa tai muuttaa tietoja sen virtuaalisen muistin osoiteavaruuden ulkopuolella. Lisäksi tietyt toiminnot eivät ole rajoitettuja käyttäjätilan prosesseille, pääasiassa sellaiset, jotka voivat kaataa järjestelmän tai tuhota tietoja.
Kun prosessi käynnistyy tai se nostetaan ydintilaan, sillä on täysi pääsy järjestelmään resurssit, jopa käyttöjärjestelmälle varatut. Joten teoriassa se voi korvata tärkeitä tietoja, jotka käyttöjärjestelmä tarvitsee toimiakseen kunnolla.
Trapsit ja poikkeukset
On tärkeää ymmärtää, että suoritin itse pakottaa nämä kaksi tilaa laitteistotasolla. Jos käyttäjätilassa toimiva sovellus yrittää tehdä jotain, joka vaatii ydintilan käyttöoikeuden, se luo”ansan”tai”poikkeuksen”. Käyttöjärjestelmä käsittelee sitten sovellusta, yleensä sulkemalla sen ja luomalla kaatumislokin, jotta kehittäjät voivat nähdä, mitä tapahtui muistissa, kun asiat menivät raiteille.
Ydintilan vaarat: The Blue Screen of Death
Jos olet joskus kokenut Blue Screen of Death-tilan (kuka ei ole?), joka pakotti tietokoneesi sammumaan tai käynnistymään uudelleen, se on todennäköisesti ollut ydintila. prosessi syyllinen.
Kun ydintilassa oleva prosessi tekee jotain, mitä sen ei pitäisi tehdä, käyttöjärjestelmä ei voi toipua siitä ja koko tietokone pysähtyy. Kun käyttäjätilan prosessi menee pieleen, vain sovellus kaatuu, ja muu ohjelmisto ja käyttöjärjestelmä voivat toimia ilman ongelmia.
Tämä on alue, jolla API:illa on olennainen rooli, koska se on sovellusliittymä, joka pyytää kernel-tilan oikeuksia. Käyttäjätilan sovellukset delegoivat olennaisesti pyynnöt, jotka olisivat vaatineet ydintilan oikeuksia API:lle.
Tästä syystä ydintila myönnetään yleensä vain matalan tason järjestelmäprosesseille, joiden on päästävä suoraan tietokoneen laitteistoon. Yleensä tämä etuoikeus laajennetaan prosessiin, koska se tarvitsee enemmän suorituskykyä kuin käyttäjätila voi tarjota. Jotkut suorittimen ohjeet toimivat vain ydintilassa, joten jos prosessin on käytettävä näitä toimintoja, se on nostettava.
Jos sinulla on ongelmia Blue Screen of Deathin kanssa, muista lukea meidän Blue Screen of Death-vianmääritysopas Windows 10:lle!