Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Oman käyttöjärjestelmän tekeminen

Sivun loppuun

pake10 [01.05.2010 13:05:50]

#

Tässä nyt olisi tarkoitus tehdä käyttöjärjestelmä C++:lla. Tähän asti olen saanut tehtyä sellaisen Assembly -koodin, mikä tulostaa näytölle "Ladataan..." ja olen saanutkin sen käännettyä NASMilla ja laitettua muistitikulle. Mutta, pitääkös tuosta Assembly -koodista jotenkin "hypätä" C++ -koodiin? Ja mitenkäs sitten C++:lla esim. tekstin tulostus? Pitääkö C++:lla jollain funktiolla syöttää Assembly koodi, mikä tulostaa tekstin?

Mikä olisi seuraava vaihe? Linuxin sorsaa muuttamallakaan en tätä haluaisi tehdä, se on kuitenkin niin iso kokonaisuus, että koodista on vaikea saada selvää. Ja tiedän, että se ei ole helppoa (ja siis ihan Shell -pohjainen järjestelmä olisi tarkoitus ainakin ensiksi tehdä, ei ainakaan vielä GUIta.)

vehkis91 [01.05.2010 14:15:58]

#

Sun pitää koodata assemblylla funktio, joka tulostaa tekstiä ja sitten käyttää tuota funktiota c++ koodissa.


Edit: Eka pitää tehdä loaderi, mitä ilmeisesti jo väsäsit, mikä käynnistää käyttiksen kernelin. Mutta ota huomioon se, että et voi käyttää mitään c++ kirjastoja, vaan kaikki pitää tehdä itse.. :D

pake10 [01.05.2010 17:31:10]

#

Kiitoksia ohjeista.

Pitää nyt vielä vaikka googletella, että miten se kerneli käynnistetään Assemblyllä loaderissa ja muutenkin katsoa.

pake10 [01.05.2010 19:35:53]

#

En ole saanut vieläkään mitään tehtyä.. Olisiko kenelläkään linkkiä johonkin suomenkieliseen / englanninkieliseen ohjeeseen?

Metabolix [01.05.2010 21:31:06]

#

Jos haluat näperrellä jotain pientä, voit toki jatkaa valitsemallasi tiellä. Jos kuitenkin haluat päästä kiinni varsinaiseen käyttöjärjestelmän tekoon, kannattaa käyttää valmista bootloaderia (GRUB on hyvä) ja kääntää käyttöjärjestelmästä tietyn standardin mukainen binaari, jonka GRUB osaa helposti ladata.

Voit ottaa mallia PutkaOS:n lähdekoodista (linkki WebSVN). Tärkeitä asioita ovat start.asm, joka sisältää hieman otsikkotietoja ja käyttöjärjestelmän aloituskohdan, ja linkkeriskripti, joka linkittää ELF-objekteiksi käännetyt osaset järkeväksi paketiksi. Muut tiedostot sinun kannattaa tyhjentää (ellet halua yrittää parannella huonosti dokumentoitua ja monin paikoin epämääräisesti kesken jäänyttä koodia).

fronty [01.05.2010 21:44:07]

#

Ensin kannattaa todellakin opiskella kunnolla teoriaa käyttöjärjestelmien takana. Käyttöjärjestelmän kirjoittaminen ei todellakaan ole helppoa, ja hyvää jälkeä saa vain, kun tietää todellakin, mitä tekee ja on kunnon suunnitelmat pohjalla.

Ohjelmointitaito täytyy olla todellakin /erittäin/ hyvää tasoa. Kieli, jolla meinaat järjestelmän kirjoittaa, täytyy tuntea todellakin kunnolla. Mitä enemmän tietää, miten käytetty kääntäjä toteuttaa jonkin ominaisuuden kohdearkkitehtuurilla, sen parempi. Kohdearkkitehtuurin assemblyllä täytyy osata ohjelmoida erinomaisesti, vaikka sitä ei pääkielenä käyttäisikään, koska
1. Tietyt osat on /pakko/ tehdä assemblyllä.
2. Jos ei osaa ohjelmoida arkkitehtuurin assemblyllä, ei tiedä miten homma toimii sillä arkkitehtuurilla.

Dokkareista ja specseistä tietojen tiedon omaksuminen täytyy onnistua helposti. Esimerkiksi USB:n toteuttaminen ei tule olemaan helppoa, jos yli 500 sivun kuivaa tekstiä tonkiminen ei tykkää maistua.

Kirjoista Tanenbaumin kirjat olen kokenut ihan hyviksi, Abraham Silberschatzin sun muiden Operating System Concepts on kuulemma myös erinomainen.

Kun kunnolla on teoria hallussa ja tuntee alustansa, se käyttöjärjestelmän kirjoittaminen kyllä lähtee aika vaivattomasti liikkeelle.

walkout_ [02.05.2010 00:01:30]

#

Onko hommassa mitään järkeä? Näitä nyt on jo tarpeeksi.. Linux, Windows, Solaris jne..

tgunner [02.05.2010 00:27:02]

#

walkout_ kirjoitti:

Onko hommassa mitään järkeä? Näitä nyt on jo tarpeeksi.. Linux, Windows, Solaris jne..

Ah, mikä kommentti. Mitä järkeä on ylipäätänsä tehdä yhtään mitään, kun suurella todennäköisyydellä sellaisia asioita on jo ennestään?

pake10 [02.05.2010 09:21:25]

#

Metabolix kirjoitti:

*tekstiä*

PutkaOS:n lähdekoodia olen joskus katsellutkin, ei vain nyt tullut mieleen, kun aloin tekemään sitä käyttöjärjestelmää. Pitää vielä vaikka sitä katsella.

walkout_ kirjoitti:

Onko hommassa mitään järkeä? Näitä nyt on jo tarpeeksi.. Linux, Windows, Solaris jne..

Ideana on kylläkin näperrellä jotain pientä, ja ehkä sitten jos tämä homma lähtee onnistumaan niin katsella jos tästä teksisi isomman systeemin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta