Autor Thema: OS schon wieder  (Gelesen 28663 mal)

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« am: 15. October 2006, 15:36 »
Ich würde gern mal ein kleines Os programmieren aber in C. Ich hab schon ein paar Tutorials dazu gelsen wegen Bootloader etc. nur ich versteh des mit C nicht ganz. Kann ich einfach ein C Programm schreiben und da drauf des OS aufbauen oder wie?? Und habt ihr so ne Oberfläche ala Linux bzw. Windows oda "nur" Textmodus???

Ich bräuchte hierzu ein paar Tipps.

Vielen Dank de-big-boss

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 15. October 2006, 16:20 »
Nein, du kannst nicht einfach ein C-Programm schreiben. Wenn du mit deinem OS beginnst hast du erstmal _garkeine_ c-library. Also keine der C-Standardfunktionen (zB printf, scanf, memcpy, strlen, fopen, ...). Das musst du dir früher oder später alles selbst schreiben (oder eine vorhandene clibrary portieren, zB pdclib, glibc, newlib, dietlibc, ....), indem du im kernel die Hardware richtig ansprichst (zB liegt der textmode bildschirm an der Adresse 0xB8000 als array vor). Aber bevor du deinen C-Kernel überhaupt beginnen kannst musst du noch einiges in Assembler implementieren:zB in den Protected-Mode, Paging aktivieren und den kernel woanders hin mappen, ... Dann kannst du mit einfacheren Funktionen wie einer simplen Textausgabe weitermachen (Wobei man das eigentlich auch wieder zum debuggen des codes brauchen könnte :-P ).
Ich habe momentan nur eine kleine Textmode-Shell, aber ich könnte (wenn ich das wollte) mit einer gui beginnen, aber ich feile lieber noch ein bisschen an dem Rest meines Systems.

Am besten liest du dir so viele tutorials wie möglich durch und diesen FAQ (engl.)
edit2: Wie taljeth unten schon sagt, ist es sehr empfehlenswert Grub zu nehmen.
« Letzte Änderung: 15. October 2006, 16:38 von bluecode »
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 15. October 2006, 16:21 »
Erstmal: Willkommen im Forum.

Ja, im Prinzip schreibst du einfach ein C-Programm. Du kannst logischerweise nur nicht auf Funktionen zurückgreifen, die das Betriebssystem benutzen, da du eben dieses Betriebssystem ja erst schreibst. Also als Faustregel: Nichts einbinden, was du nicht selbst geschrieben hast.

Der Bootloader müßte dann eben den Kernel (also dieses C-Programm) laden und an den Anfang von main() springen. Ich würde übrigens empfehlen, GRUB zu benutzen - spart Zeit für den Bootloader, die man besser in das OS investieren kann.

Und noch was: An eine grafische Oberfläche solltest du nicht einmal denken. Bis du so weit bist, wird es eine Weile dauern.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. October 2006, 18:31 »
also muss ich mir dann einen ganze sprache eigentlich selber programmieren??? also die ganzen Befehle?? Oder kann man da nicht einfach die dateien laden die C braucht(bzw. mein kernel)?? Also wenn ich jetz über Diskette booten will dann muss auf die Diskette mein Bootloader und mien Kernel(mindestens,oder) und wenn ich mit C was mache dann doch auch noch die C Dateien,oder?? Gibts auch Tutorials auf Deutsch zu dem Thema?? würd ich halt besser verstehn weil ich ncoht nicht so lang englisch in der schule habe und mir dass einiges an Zeit sparen würde oder sind die englischen einfach so viel besser?

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #4 am: 15. October 2006, 18:37 »
Lies dir mal die Lowlevel Ausgaben durch, da steht schon sehr viel Information diesbezueglich drinnen. Auch, wie du einen einfachen Bootsektor schreibst um damit deinen Kernel zu laden (sowohl in Assembler, als auch in C, IIRC).

Lg, Alex
\\o
o//
\o/

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 15. October 2006, 18:52 »
ja gut dann les ich die mal. Du meinst die unter Tutorials und dann die Ausgaben 1-8 odeR?

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #6 am: 15. October 2006, 19:01 »
ja gut dann les ich die mal. Du meinst die unter Tutorials und dann die Ausgaben 1-8 odeR?

Genau die! :)
\\o
o//
\o/

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 15. October 2006, 22:22 »
also ich bin jetz grad bei ausgabe 1 und da hab ich schon die ersten fragen. Ich hab nämlich nicht verstanden wie man jetzt und wann man wann wie viel bit sind und so weiter man die Regsiter benutzt.

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #8 am: 15. October 2006, 23:36 »
also ich bin jetz grad bei ausgabe 1 und da hab ich schon die ersten fragen. Ich hab nämlich nicht verstanden wie man jetzt und wann man wann wie viel bit sind und so weiter man die Regsiter benutzt.

Sorry, wenn ich jetzt so ganz boes frage, aber hast du schon mal programmiert? So richtig, meine ich?
\\o
o//
\o/

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 16. October 2006, 08:35 »
Kauf dir am besten mal ein Asm Buch....Oder such dir zuerst da ein paar gute Tuts....Sonst geht das sowiso nich....

Nooooooooooooos

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 16. October 2006, 14:56 »
ja ich hab schon programmiert aber da hab ich diese sachen nicht gebrauchst. Ich habs chon mit BlitzBasic3D und Viusal Basic programmiert ud mir kurz PHP angeschaut.

Coffee

  • Beiträge: 470
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 16. October 2006, 15:31 »
ja ich hab schon programmiert aber da hab ich diese sachen nicht gebrauchst. Ich habs chon mit BlitzBasic3D und Viusal Basic programmiert ud mir kurz PHP angeschaut.

ok bis auf viasual basic habe ich mit den beiden sprachen auch schon etwas größere sachen gemacht 3d-ego-shooter und ein o-game, aber das ist was GAAAAAANZZZ anderes du solltest dir wirklich ein asm buch holen

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 16. October 2006, 15:35 »
So richtig, meine ich?
Damit hat hannibal sicher nicht ein bißchen VB-Zusammenklicken oder PHP-Gebastel gemeint. Ein OS ist ein ganz klein wenig maschinennäher anzusiedeln. Bei VB bin ich mir nicht ganz sicher, aber zumindest PHP kennt beispielsweise nichteinmal Pointer - es ist halt eine Skriptsprache, keine Sprache für Lowleveliges.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 16. October 2006, 17:15 »
VB mit ziemlicher Sicherheit auch^^

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 16. October 2006, 19:52 »
dass ein OS maschinennäher ist hab ich mir schon gedacht :-D
nur wie nah wusste ich halt nicht. Aber jetzt weiß ich immer noch nicht wie das mit den Bit und so geht und ist. Also man muss ja Daten in den Arbeitsspeicher ladne und wieder ausgeben und so, oder? Also um zum Beispiel nen Text auszueben muss man den doch erst in ner Varibale "speichern" und dann über nen befehl(weiß ich jetz nicht mehr auswendig) ausgeben oder??? Und des wird doch im Arbeitsspecher gespecihert oda hab ich da was falsch verstanden??  :?
Was kostet so ein ASM buch und bekomm ich des in einem Hugendubel oda einem normalen Buchgeschäft??

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 16. October 2006, 20:17 »
Die Befehle, die du auf dieser Ebene zur Verfügung hast, sind nicht mehr sowas wie "Text ausgeben", sondern eher "Daten im Arbeitsspeicher an Adresse xyz schreiben" (was dann der Grafikspeicher sein kann) oder "Byte x an Hardware y schicken".
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 16. October 2006, 20:21 »
Hehe....ja weil du diesen Befehl ohne Treiber nicht benutzen kannst.

Bits undsoweita werden in nem Asm-Buch sicher erwähnt. In einer grösseren Bücherei mit Computerbuch-Abteilung findest du sicher solche Bücher. Sonst kannst du sie auch einfach bestellen.

Mein Tipp:
  • Assembler - Grundlage der Programmierung, Roming und Rohde, mitp (Aufbau von Asm, Erklärung zum Computer + wichtigste Befehle der Sprache)
  • Assembler Ge-Packt, Rohde, mitp (Referenz)


Nooooooooooooos
« Letzte Änderung: 16. October 2006, 20:24 von nooooooooos »

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 17. October 2006, 19:28 »
sind die beiden bücher gleich gut oda is des Assembler - Grundlagen der Programmierung besser?
oder gibts sozusagen ein königsbuch?

Biehler Productions2

  • Beiträge: 47
    • Profil anzeigen
    • http://biehlos.biehler-josef.de
Gespeichert
« Antwort #18 am: 17. October 2006, 19:55 »
Kauf dir beide.
Das eine Buch gibt dir den Einstieg, also Grundlagen etc.. und das andere Buch ist nur eine ziemlich umfassende referenz.
Die wirst du früher oder später auch brauchen.
Kostet 15 Euro (die Referenz) und du hast ne MENGE Inhalt.

Achso, und such mal im Internet nach der "Ralph Brown Interrupt List".
Doie wirt du später sicher auch mal brauchen.
Hab grad den Link nicht zur Hand.
« Letzte Änderung: 17. October 2006, 19:58 von Biehler Productions2 »

de-big-boss

  • Beiträge: 29
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 17. October 2006, 21:13 »
aber am anfang reicht des grundlagen buch erstmal oder?? Und wenn ich des durch hab kann ich mir ja erst des andere kaufen, des reicht doch oder? Hab nämlich nicht so viel Geld

 

Einloggen