Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Käyttöjärjestelmän tekeminen

Sivun loppuun

Tehy [05.01.2005 13:14:41]

#

On ollut jo pitemmän aikaa haaveena tehdä pikkuinen oma käyttöjärjestelmä. Olen pyörinyt monilla eri foorumille, joissa asioista keskustellaan, mutta kun enkun taito ei ole 10, niin kaikesta ei pääse aina jyvälle. Aatelin kysäistä josko joku täällä tietäsi asiasta jotain, kaikki tieto on tervetullutta.

Itse olen sen verran päässyt jyvälle, että ensin tehdään bootti systeemi tai käytetään valmista, kuten GRUB. Sitten tehdään pikku kernel, joka hoitaa suurimman osan jutusta, kuten muistin käsittelyn ym.

Olen myös ymmärtänyt, että tarvitsen joitain ohjelmia, kuten Cygwin, bochs...
Cygwinin käyttö onnistuu jotenkin, mutta bochsin käyttöä en ole vielä oppinut. Löytyyköhän mistään suomalaita ohjetta sen käyttöön?

Kuten mainitsin kaikki tieto on tervetullutta, joten kertokaa vaan kaikki mitä aiheesta tiedätte, kuten miten kannattaa aloittaa? Mitä kieltä/kieliä kannattaa käyttää (c,c++,asm)?

remontti-reiska [05.01.2005 13:25:20]

#

Olet aika hyvin vauhdissa noissa boot ja kerneli systeemeissä. Mielestäni käyttöjärjestelmän tekoon ei tarvitse kuin sopivan/sopivat kääntäjät. Jos olet tekemässä pikku käyttistä omaan ei niin nopeaan käyttöön, niin pitkälti pelkkä C riittää. Asm tulee kysymykseen vasta nopeutta tarvittaessa.

Tehy [05.01.2005 15:23:04]

#

Joo kyllä jotenkin nuo ymmärrän :) Minun pitää viissiin myös tehdä C:hen omat kirjastot?

Olisi myös mukava oppia käyttämään tuota bochsia, jotta ei tarttis koko ajan bootata konetta.

Onkohan yhtään suomalaista käyttöjärjestelmä teko/ohje sivua?

renni [06.01.2005 18:09:04]

#

Kannattaa ehkä tutustua sellaisiin projekteihin kuin Minix ja MenuetOS vaikkapa.

Olli Vanhoja [06.01.2005 18:26:56]

#

http://www.mega-tokyo.com/forum/
http://www.osdever.net/

Tehy [06.01.2005 19:25:02]

#

Kiitos, jos jotakuta kiinostaa autaa enemmän niin voin lisätä minut meseen, osoite on teemu.hynninen@mail.suomi.net

Tehy [07.01.2005 14:59:05]

#

Olenko siis ymmärtänyt oikein, että en voi käyttää valmiita C kirjastoja?

Heikki [07.01.2005 15:14:45]

#

En ole varma, mutta olettaisin niin.

Eli käyttöjärjestelmässäsi ei voi olla mitään printf("Ladataan"); rivejä.

ZcMander [07.01.2005 17:26:43]

#

Mutta printf Kuuluu Standarti C kielen funktio?

Tehy [07.01.2005 17:27:20]

#

Näin minäkin olen asian ymmärtänyt. Ei täällä foorumilla sattus oleen yhtään asiasta kiinnostunutta kehittelyyn mukaan ;)

Koipio-ohjelma [07.01.2005 18:49:18]

#

Eikös printf:ää voi käyttää vasta kun on includannut stdio.h:n? Tai näin minä asian ymmärrän...
tai voisihan sitä copy-pastettaa kyseisen funktion lähdekoodiin, jolloin kyseistä funktiota voisi käyttää(kai).

KeKimmo [07.01.2005 19:36:16]

#

Koipio-ohjelma kirjoitti:

Eikös printf:ää voi käyttää vasta kun on includannut stdio.h:n? Tai näin minä asian ymmärrän...
tai voisihan sitä copy-pastettaa kyseisen funktion lähdekoodiin, jolloin kyseistä funktiota voisi käyttää(kai).

Se include-komento nimenomaan lisää sen funktion lähdekoodiin, joten copy-pastetus ei tekisi mitään eroa.
Ja tuskinpa mikään oma käyttis osaa suorittaa vaikkapa DOSille tai Linuxille käännettyjä C-ohjelmia, joten omat kirjastot ovat pakollisia.

Tehy [07.01.2005 19:46:31]

#

Mitenhän noita kirjastoja sitten koodataan?

rndprogy [07.01.2005 21:01:05]

#

Laittamalla .h filun täyteen funktioita.
Kai tiedät:

void funktio()
{
   tekee_jotain();
}

Ja sitten sen voi normaaliin tapaan includettaa

#include "funktiot.h"

mutta lib-tiedostoista en tiedä :(

Metabolix [07.01.2005 21:28:49]

#

http://www.mega-tokyo.com/osfaq2/
Aloita lukemalla tuolta järjestyksessä kaikki kohdat otsikon "Basic Information" alta (jos pysyt jyvällä).
Muutamia pääkohtia suomeksi:

  1. Se ei ole helppoa.
  2. Linus käytti vuoden verran hyvin aktiivista työskentelyä saadakseen aikaan kunnollisen, käyttökelpoisen systeemin, ja se ei todellakaan ollut suuri systeemi.
  3. GUI eli graafinen ympäristö on viimeisiä asioita, joita kannattaa miettiä. Siihen asti on pitkä matka.
  4. Tarvitset UNIXin, Linuxin tai jotakin muuta, jonka alla GNU-työkalut toimivat. Windowsiin on saatavilla Cygwin, jonkinlainen Linux-DLL-tiedostossa.
  5. Joudut kääntämään uudestaan kääntäjän.
  6. Assembly on pakollista joihinkin aivan matalan tason asioihin. Esimerkiksi levyasemat ja muistinvaraus varmaankin näitä tarvitsevat. Tätä varten on kuitenkin saatavilla valmiita kirjastoja, jotka on suhteellisen helppo muokata omaan käyttöön.

Ja paljon muuta.

Tehy [08.01.2005 09:11:18]

#

Jaa-a pitäsköhän se mennä sitten hommaan linux tuohon hommaan...

Pitääpä yrittää lueskella tuota :)

p-p [09.01.2005 21:44:43]

#

Tuli vaan mieleen, että MikroBitissä ollaan käsitelty käyttöjärjestelmän ohjelmoimista. Nettisivuilta löytyy lehden numero ja sen jälkeen kirjastoon ettimään :D

Olli Vanhoja [10.01.2005 05:57:04]

#

Itse olen kyllä käyttänyt ihan Windowssia silloin ku kehitimme AceOS:ia, että ei sillä käyttiksellä mitään väliä ole. Eikä sitä kääntäjää nyt tarvitse ihan heti omalle käyttikselle olla kunhan saa ensin kernelin ja shellin/guin toimimaan.

Metabolix [10.01.2005 06:52:35]

#

No kerropa sitten, miten se käännetään? Kiinnostaisi tietää, kuinka tuo tehdään pelkällä MinGW:llä. (Vai tarvittiinko sitä DJGPP:tä?)

Olli Vanhoja [10.01.2005 11:57:38]

#

Lataa vaikka AceOS ja kato siitä. En muista suoraa linkkiä, mutta katso www.modifyit.netin lataa sivulta.

Masfonos [10.01.2005 15:29:04]

#

MenuetOS on myös hyvä vaihtoehto. http://www.menuetos.org/

KimmoKM [10.01.2005 15:50:21]

#

Minulla ei ole paljoakaan tietoa (eikä yhtään kokemusta) käyttöjärjestelmän tekemisestä, mutta parasta olisi varmaan tutustua aluksi Minixin kaltaisiin yksinkertaisiin käyttöjärjestelmiin ja tehdä niihin pieniä muutoksia (Minix muistaakseni tehtiin tätä varten).

Metabolix [10.01.2005 16:37:17]

#

Muuten hyvä tuo Minix, mutta 1. version lähdekoodia ei vain löydy millään ja 2. versio on paljon laajempi. Se tosiaan tehtiin juuri tuota harjoittelua varten. (UNIX 7:n kanssa yhteensopivaksi, mutta ilman valmista koodia, koska UNIXista tuli maksullinen)

Tehy [10.01.2005 17:53:48]

#

Onko kellään tietoa miten tehdään boottaava cd? disketille kyllä (luultavasti) osaisin tehdä, mutta uudessa koneessa ei enää disketti asemaa ole :(

Bochsilla tai millään emulaattorilla ei nähtävästi voi omaa käyttistä testata kiintolevyltä, vaan pitää olla cd tai disketti?

FrozenFire [10.01.2005 18:08:21]

#

CDeeltä bootatessa pitää ainaski säätää tuolta biossista niin että CD menee boottaus järjestyksessä kiintolevyn ohi...

Kaikissa käsittelemissäni biosseissa jotka kykenevät boottaamaan CDeeltä on jär jestys ollut aina (näitä ei oo ollu hirveesti mutta...)

1. diketti
2. kiintolevy
3. CD

Kait se muuten on ihan samanlaista ku tehä bootti disketti... (en oo varma)

AdeRide [11.01.2005 12:03:42]

#

Eikö nuo stdio.h yms. otsikko tiedostot ole microsoftin tekemiä ja jos sinä teet julkiseen levitykseen käyttiksen, jossa nuo ovat niin uskoisin, että microsoft ei tykkää hyvää. En ole sitten varma onko ne Microsoftin tekemiä, mtuta varmuuden saat asiasta avaamalla kyseisen .h -tiedoston ja sitten luet sieltä alusta ne kommentit, joissa lukee tekijän oikeuksista, jos niitä on.

Mutta onko kellään tietoa siitä miltä näyttäisi otsikkotiedosto, jossa on jonkin lainen tulostus funktio tyyliin printf("olen palikka") tai jotain tuohon suuntaan? Elikkä, jos haluaisin tehdä oman finktion ilman minkäänlaisia valmiita .h -teidostoja, joka tulostaisi kyseisen tekstin tuohon näytölle ihan konsoliohjelmaan.

Olli Vanhoja [11.01.2005 13:48:29]

#

No eiköhän ne kaikki otsikkotiedostot tehdä itse ;)
nuo tulostus funktiot saat aikanopeasti luotua assembler koodin pätkällä.
Eli BIOS pohjainen funktio olisi varmaan helpoin.
Tietenkin jos teet pelkästään graaffisen käyttiksen niin olisi parempi tehdä koko fonttisysteemi jo valmiiksi.
Pistin muuten listalleni sun messenger osoitteen, että ota yhteyttä kun olen online niin voin vähän helpommin neuvoa ja auttaa ;)

Tehy [11.01.2005 16:24:48]

#

Olli Vanhoja kirjoitti:

Pistin muuten listalleni sun messenger osoitteen, että ota yhteyttä kun olen online niin voin vähän helpommin neuvoa ja auttaa ;)

Hmm... Nyt oon online, mutta ei tullu mitään ilmoitusta, että oot lisänny nut meseen. Voitko yrittää uudelleen teemu.hynninen@mail.suomi.net

EDIT: Nyt toimii!

Tehy [30.01.2005 17:55:26]

#

Niin noista C:n kirjastoista. katoin Dev c++ kirjastoja ja siellä luki näin:

* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.

Eikö tuo nyt tarkoita, että niitä voi käyttää?

Metabolix [30.01.2005 18:01:36]

#

Kyllä. Onhan koko GCC-kääntäjä (eli myös MinGW) vapaan lähdekoodin ohjelma, ja siinä on takuulla käytetty noita.

Krisu [31.01.2005 00:01:31]

#

Tehy kirjoitti:

Eikö tuo nyt tarkoita, että niitä voi käyttää?

Saat kyllä käyttää... Mutta mutkia matkassa silti...
Uskoakseni nuo kirjastot käyttävät käyttöjärjestelmän keskeytyksiä (varmasti en voi sanoa. Mutta hyvin varma olen asiasta).

Käyttöjärjestelmän ohjelmointi edellyttää tietämystä
1) Prosessorin toiminnasta
2) Muun laitteiston toiminnasta

Loppu on ohjelmoijan käsissä.

Tehy [28.02.2005 16:49:00]

#

Noniin nyt on saatu jo jotain aikaiseksi tosin hyvin vähän. Olen saanut tehtyä tutoriaaleja lukemalla todella yksinkertaisen bootloaderin, joka tulostaa ruutuun NegOS. Tulinkin tänne kyselemään mikä olis seuraava askel, kun en ole päässyt siitä vielä ihan jyvälle. Pitääkö nyt alkaa tekemään kerneliä vai jotain ihan muuta :) ?

aWW [28.02.2005 17:03:53]

#

miksi teet omat käyttiksen, eikö linux sovi sinulle?

Tehy [28.02.2005 17:21:17]

#

Kunhan leikin :) Linux ei tosiaan sovi minulle. Itse pidän Windowsista.


Sivun alkuun

Vastaus

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

Tietoa sivustosta