Miten käyttöjärjestelmät siis tehdään? Ihan mielenkiinnosta olen jo pitkään miettinyt, että mikä esimerkiksi mahdollistaa Windowsin toiminallisuuden. Tätä on vähän vaikea selittää, mutta haluaisin tietää, että mistä kaikki saa alkunsa kun esim. tietokone käynnistetään.
Sen sain wikipediasta ja goolettamalla selville, että ensin käynnistetään firmware (bios?), jonka jälkeen sitten yritetään käynnistää toinen käyttöjärjestelmä (windows). Mutta millä kielellä nämä käyttikset on sitten tehty, C ei taida ihan suorilta toimia, koska eihän sinulla ole käyttöjärjestelmää alla! Oman käsitykseni mukaan taas Assemblyllä koodaaminen on erityisen työlästä, joten eikö esim. Windowsin tai Linuxin kokoisen systeemin koodaamiseen menisi ikuisuus?
C:llähän nuo, ja pienen pätkän tarvitsee Assemblyä.
Se käynnistys menee niin että bios käynnistää MBRrällä(Master Boot Record) olevan koodin joka käynnistää jonkun homma joka on osion alussa(windows) ja se käynnis tää widowsin. Linuxissa taas käynnistylataaja lataa kernelin muistiin ja siirtyy suorittamaan sitä. Ja käyttöjärjestelmät tehdään Ceellä ja assemblyllä.
punppis kirjoitti:
C ei taida ihan suorilta toimia, koska eihän sinulla ole käyttöjärjestelmää alla! Oman käsitykseni mukaan taas Assemblyllä koodaaminen on erityisen työlästä
C:llä koodattu ohjelma ei vaadi alleen valmista käyttöjärjestelmää sen enempää kuin Assemblylläkään koodattu. Molemmat käännetään lopuksi ihan samalle prosessorin konekielelle.
...sokerista, meiramista, niistä on käyttöjärjestelmät tehty.
Lebe80 kirjoitti:
...sokerista, meiramista, niistä on käyttöjärjestelmät tehty.
En tiennytkään :o kiitos tästä informaatiosta :D
http://bellard.org/qemu/
http://www.cs.utah.edu/flux/oskit/
Onkohan muuten totta, että kaikki käyttöjärjestelmät tehdään C-kielellä?
Tuossa jotain juttua siitä mitä tapahtuu kun virtanäppäintä hakataan niin että taikalaatikkoon syttyy valo :)
http://www.mossywell.com/boot-sequence/
Ja jos nälkä kasvaa lukiessa, niin lisää asiaa yleisestä käyttiksen koodaamisesta löytyy vielä täältä:
Lebe80 kirjoitti:
...sokerista, meiramista, niistä on käyttöjärjestelmät tehty.
Windowsiin on kyllä käytetty suolaa ja chilipippuria >_<
Pekka Karjalainen kirjoitti:
Onkohan muuten totta, että kaikki käyttöjärjestelmät tehdään C-kielellä?
Suurin osa ainakin
Tosiaan, kuten täällä on jo todettu, niin C:tä käytetään eniten käyttöjärjestelmien ydinten ohjelmointiin. Jos käyttisten koodaaminen/toiminta kiinnostaa niin tuo Turatzuron osoittama osdev -linkki on ihan hyvä lähde. Kannattaa myös tutusta Intel Developer Manuaalien osaan 3, jos nyt oikein muistan.
Ja tosiaan C:llä ei tarvitse sitä käyttistä, mutta käyttöjärjestelmää kun aloittaa koodailemaan, niin eivät ne standardikirjastojen tarjoamat hyödykkeet ole tietenkään käytössä.
Mainitsempa tähän vielä MenuetOS:n (http://www.menuetos.net), joka on melko nuori assemblyllä kirjoitettu käyttöjärjestelmä. Taitaa jo ihan mukavasti olla ominaisuuksia siinä. Jokainen voi tietysti pohtia, että miten järkevää se nyt on ollut kirjoittaa koko käyttis assemblyllä.
aegis kirjoitti:
Pekka Karjalainen kirjoitti:
Onkohan muuten totta, että kaikki käyttöjärjestelmät tehdään C-kielellä?
Suurin osa ainakin
Kiinnostavaa. Mistä olet laskenut tämän tiedon?
Veikkaisin, että kyseinen tilasto on saatu käyttäen Stetson-Harrisonin menetelmää.
Google löytää Stetson-Harrison menetelmästä hämmästyttävän paljon tekstiä. JVM
C-kieli sisältää voimakkaita kohtauksia, eikä sitä suositella Stetson-Harrison-menetelmää käyttäville.
punppis kirjoitti:
...koska eihän sinulla ole käyttöjärjestelmää alla!
Pyydän kaikilta nyt anteeksi, että valitan kielestä, mutta sinä-passiivi on sanalla sanoen hyytävä.
punppis kirjoitti:
eikö esim. Windowsin tai Linuxin kokoisen systeemin koodaamiseen menisi ikuisuus?
Kyllä. Sen takia tekijöitä on katsos monta :)
käytetäänkö c++ käyttiksissä?
Vähän korkeammalla tasolla. Muistetaanhan myös, että Haskell on ainoa oikea kieli käyttiksen koodaamiseen asmin rinnalla. http://programatica.cs.pdx.edu/House/ :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.