Kun tyhjän koneen laittaa käyntiin, niin kone kyselee käyttöjärjestelmälevyä tai jotain vastaavaa. Homma ei kuitenkaan edisty siitä eteenpäin.
No jos laittaa pelkän kernelin sisältävän levyn koneeseen, niin edelleenkään ei edistytä juuri mihinkään, koska kernel ei ole käyttöjärjestelmä.
Kysymys kuuluukin että, missä vaiheessa tapahtuu siirtymä kernelistä käyttöjärjestelmäksi, siis järjestelmäksi jota voi käyttää?
No jos laittaa pelkän kernelin sisältävän levyn koneeseen, niin edelleenkään ei edistytä juuri mihinkään, koska kernel ei ole käyttöjärjestelmä.
Kysymys kuuluukin että, missä vaiheessa tapahtuu siirtymä kernelistä käyttöjärjestelmäksi, siis järjestelmäksi jota voi käyttää?
Vastaukset 7
Vanhimmat
Kernel on käyttöjärjestelmän ydin.
Koska esim. Linux ja Windows NT kerneleissä ei kuitenkaan suoraan ole mitään ihmisen käytettävää käyttöliittymää, niihin tarvitsee muita ohjelmia siihen kernelin päälle, jotta saadaan kokonainen käyttöjärjestelmä.
Ohjelmia voi sanoa ajettavan prosessorilla karkeasti kahdella eri asetuksella.
Yksi on kernel moodissa, ja toinen on user moodissa. Siis tietokoneen suorittimen raudassa on eri moodeja, joihin prosessori voidaan asettaa.
Ero kernel ja user moodien välillä prosessorissa on esim. siinä, että user moodissa vain tietyt käskyt ovat sallittuja. Tällä saadaan suojattua järjestelmä siten, että eri ohjelmat eivät sotke toisiaan, ja, että tietyt asiat voidaan ohjata tapahtumaan aina kernelin kautta. Saadaan myös suojattua mm. muistiin pääsy siten, että user moodissa ajettava ohjelma ei pääse käsiksi muistialueisiin, mihin sillä ei ole oikeutta. Kernel moodissa ajettavalla koodilla on pääsy kaikkeen koneen rautaan ja muistiin.
Moniajo toimii nykyaikaisissa käyttöjärjestelmissä siten, että kernel laittaa ajamisten ajan X päästä aiheuttamaan keskeytys, sitten se laittaa jonkun käyttäjän ohjelman ajoon. Nyt jos käyttäjän ohjelma aiheuttaa keskeytyksen, kernel pääsee taas ajoon, palvelee keskeytyksen, ja saattaa tässä vaiheessa vaihtaa toisen käyttäjän ohjelman ajoon. Jos käyttäjän ohjelmassa ei tule keskeytystä tarpeeksi pitkään aikaan, kernelin asettama ajastin aiheuttaa sen ja kernel saa taas hallinan koneesta ja voi vaihtaa jonkun toisen ohjelman väissä ajoon.
Esimerkiksi jos käyttäjän ohjelma haluaa lukea tiedoston levyltä, se voi tehdä sen järjestelmä kutsun vaulla. Järjestelmä kutsut ovat kernelin "käyttöliittymä" ohjelmille. Käyttäjän ohjelma tekee järjestelmäkutsun, joka päästää kernelin ajoon, joka laittaa tiedoston siirtymään levyltä muistiin. Koska levyltä lukeminen on koneen muun elektroniikan näkökulmasta helvetillisen hidas operaatio, tässä vaiheessa jokin muu ohjelma voidaan laittaa ajoon.
No tällainen aivopieru tänään.
Vielä vastaus tuohon kysymykseen, eli pelkällä Linux tai Win NT kernelillä ei tee käytännössä mitään, koska siitä puuttuu käyttöliittymä ihmiselle, ja jopa käyttöliittymä monille ohjelmille.
Kokonaisessa käyttöjärjestelmässä vain matalimman tason osat ovat kernelissä. Muut osat, kuten vaikka tulostuspalvelin, työpöytäympäristö, komentotulkki, jne. ovat yleensä käyttäjätason ohjelmia.
Monet ohjelmat ja etenkin ihminen kuitenkin tarvitsevat näitä edellä mainittuja toimiakseen.
Kernelin ja muun käyttöjärjestelmän raja sinäänsä on erittäin selvä, johtuen tuosta edellä mainitusta prosessorin rautaan liittyvästä asiasta. Se, missä prosessorin tilassa koodia ajetaan, määrittää suoraan onko koodi kernel koodia vai jotakin muuta, koska käytännössä mikään muu kuin kernel ei suoriudu kernel moodissa.
Käyttöjärjestelmä on olemassa muita ajettavia ohjelmia varten. Yksistään siitä ei ole mitään hyötyä. ;)
Vielä 1980-luvulla puhuttiin levykäyttöjärjestelmistä (DOS). Ilmeisesti tiedostonkäsittely oli silloin käyttöjärjestelmän pääasiallinen erikoistehtävä, ja varsinaisen laitehallinnan (näppis, näyttö yms.) suoritti BIOS (tai vastaava).
Ensimmäinen joka ajetaan on käynistyslataaja eli bootloader.
tämä lataaja käynistää sitten käyttöjärjestelmän.
Dossiin riitti muistaakseni kolme tiedostoa ja se nuosi ylös.
Amigassa käyttöjärjestelmä oli puolittain ROM-piirillä, jos unohdetaan kaikkein ensimmäinen Amiga 1000. Exec oli se varsinainen kernel. https://en.wikipedia.org/wiki/Exec_(Amiga)
Omat ongelmansa oli Amigassakin, koska siinä väärin toimivat sovellukset kaatoivat koko systeemin. Amigaan verrattuna nämä nykyiset Linuxit ja Windowsit ovat vakaita kuin kivi.
init siis 1 tiedosto tekee käyttöjärjestelmän (tai on käyttöjärjestelmä) kernel on niin "tyhmä" ettei muuta tee kun etsii "init" nimistä tiedostoo... jatko riipuu init:in asetuksista.
Sitten kun siinä on muutkin palikat mitä käyttöjärjestelmä tarvitsee. Jonkinlainen käynnistyslataaja, sovellusrajapinta ja käyttöliittymä. Nämä nyt vähintäänkin.