Eigenes Betriebssystem



  • Die vom C++ Forum haben gesagt ich soll euch fragen weil ihr euch gut auskennen würdet. 😮 So meine Frage: Wie kann ich ein OS in C++ prgrammieren und ⚠ möglichst wenig assmbler beutzen. 😮 😮 Was das Os können muss steht in dem Thread im C++ Forum. Danke! 😮 Es wäre Nett wenn ihr mir helft! 😮



  • C einzubinden ist glaub ich sehr sehr schwer, man muss ja die ganzen Befehle wie cout usw. selbst neu programmieren!man kann nicht einfach die Standardbibliotheken verwenden. Meiner Meinung nach ist es besser, es gleich in Assembler zu machen(was ich im Moment auch versuche)! (Siehe Thread Assembler und C OS)



  • und wenn ich das Os auf meinem pc in eine binär Datei umwandle kann ich doch die Header benutzen oder?



  • weiß ich ehrlich gesagt nicht, glaube es aber nicht. 😕



  • dipsi schrieb:

    und wenn ich das Os auf meinem pc in eine binär Datei umwandle kann ich doch die Header benutzen oder?

    Die Header kannst du wohl benutzen.
    Du musst allerdings die Libs dazu komplett neu schreiben.
    Ansonsten ist es an sich kein Problem, C/C++-Programme in deinem OS-Projekt zu verwenden.
    Wenn du deinen c-code zB. als .com/Binaerdatei - 16Bit compilierst, sollte sich das leicht mit einem Bootloader laden lassen.
    Aber wie bereits gesagt wurde: Die Standardlibs kannst du so nicht benutzen.



  • Was sind die standart Libs? (libc.so oder?) [Bin mir nicht ganz sicher] Aber wenn ich sie auf meinem Rechner in Objekt dateien also Binär code der noch gelinkt werden muss umwanfle sie dann in eine img Datei umwandle und sie dann auf CD brenne oder auf Diskette speichere und meinen Compiler so einstelle (gxx -c Kernel.cpp -ffreestanding -nostdlib -fno-builtin -fno-rtti -fno-exceptions) dann funktionierts doch oder? 😕



  • Ich mach sowas auch grade. Man kann manche standardbibliotheken schon benutzen, wie z.B. math.h Nur die standartbibliotheken die in irgendeiner Weise auf das System zurückgreifen (wie z.B. iostream.h, oder z.B. fprint) kann man nicht benutzen. Auch WinAPI/Linux syscalls kann man nicht benutzen(logischer weise).
    Und von CDs würd ich dir abraten. fang mal mit gunten alten Disketten an. Das geht am einfachsten und besten ;). Aber wenn du einen Bootloader schreibst kommst du nicht um ein bisschen Assembler rum. Das is aber wirklich nicht so schlimm.

    hier kann man ein bisschen assembler lernen (deutsch):
    http://andremueller.gmxhome.de/
    hier kann man ein bisschen was über bootloader und kernel lesen:
    http://www.geocities.com/groovydbphp/assembler.htm
    oder
    http://www.nondot.org/sabre/os/articles (hier gibs alles rund ums beriebssystem)
    Hier noch eine Seite über protected mode (falls du dazu lust hast)(deutsch):
    http://www.fh-zwickau.de/doc/prmo/pmtutor/text/

    Und auf die Diskette würd ich das alles mit Hex Workshop oder so schreiben, da das das einzige mir bekannte programm für Windows ist, mit dem man in alle Sektoren einer Diskette schreiben kann. Unter Linux gibts eine Fülle von tools die das machen. Da musst du einfach mal suchen.



  • Den Bootloader bekomm schon zusammen geklaut. Aber Danke!
    welche Bibliotheken kann ich benutzen welche nicht?



  • Es geht eingentlich weniger um Bibliotheken als um Funktionen und Datenstrukturen, die du nicht benutzen darftst. Also du kannst Funktionen !NICHT! benutzen die irgendwie ein das Betriebssystem brauchen. Dazu zählen: Ein-, Ausgaberutienen aller Art (cin,cout,printf familie). Rutienen die auf hartware zugreifen (wie FILE *,put,get,usw.). OLE kann nicht benutzt werden, keine Sockets, keine Funktionen die auf Drucker zugreifen,...



  • Beim Microsoft-Compiler sind Exceptions AFAIK über WinAPI-Aufrufe und "Structured Exception Handling" implementiert.
    Wie regelt der g++ Exceptions?



  • Als ich glaub man kann beim g++ wenn man diese optionen macht (g++ -c Kernel.cpp -ffreestanding -nostdlib -fno-builtin -fno-rtti -fno-exceptions) die Sandart lib und alles andere ausschalten.



  • Das Zauberwort heißt: "OSKIT" <- OS-programmierung leicht gemacht!

    Infos & Download: http://www.cs.utah.edu/flux/oskit/



  • Jo danke! Guck mir das mal an! Hoffe es funktioniert!!!



  • Und? Kannst du's compilieren? Ich kanns nämlich nicht, obwohl ich es auf verschiedenen Systemem (Cygwin mit GCC 3.2 (auf WinXPH), DJGPP mit GCC 2.95 (auf Win98), MinGW mit GCC 3.2 (auf WinXPH), MinGW mit GCC 2.95 (auf WinXPH), SuSE 8.0 mit GCC 2.95, SuSE 8.1 mit GCC 3.2) versucht habe.



  • Nein auf ner Seite sagen die man soll den OSKit Ordner erst compilen



  • Genau das habe ich in meinem letztem Beitrag ja gemeint. Ich kann den oskit-Ordner nicht compilieren. Kannst du's?
    Berichte uns mal wie weit du bist.
    Oder bist du nocht beim downloaden?



  • Hat jemand ne funktionierende und compilierte Version für SuSE vom OSKIT? Wäre mega toll schickst sie mir doch per mail matthias.christian@tiscali.de oder sag mir bescheid!
    Danke!


Anmelden zum Antworten