Betriebsystem Beispiele



  • Danke für die Links Leute.

    Wenn ich das mal Richtig verstehe.
    ASM muss man können, allein wegen den funktion, wenn ich das richtig verstanden habe. Den Kern muss ich in C Aufbauen kann ihn jedoch mit Klassen strukturieren.
    Danach muss ich den C++ STD auf das System portieren und den Rest kann ich mit C++ Aufbauen.

    Hab ich des so Richtig verstanden?

    Paar Fragen bleiben noch^^
    1.) Was heißt das "portiert"?
    2.) Wie komplettt auf die std verzichten muss ich dan die c bibliotheken benutzen oder wie? Z.b anstat fstream die C Variante FILE?
    3.) Warum kann man denn std da nicht benutzen?

    Mfg Wikinger75!



  • 1. Portieren heisst soviel, wie für eine Plattform implementieren, respektive die notwendigen Änderungen anzubringen.

    2/3. Die Standardbibliothek benutzt schlussendlich meist ebenfalls Betriebssystemabhängige Funktionen. new fordert irgendwo den Speicher bei dem OS an und wenn du nun man dein eigenes Betriebssystem schreibst, dann gibt es da kein OS, wo du den Speicher anfordern kannst.



  • Die Standardbibliothek benutzt schlussendlich meist ebenfalls Betriebssystemabhängige Funktionen. new fordert irgendwo den Speicher bei dem OS an und wenn du nun man dein eigenes Betriebssystem schreibst, dann gibt es da kein OS, wo du den Speicher anfordern kannst.

    Ah, also kann ich hier nur C++ im sinne von C mit Klassen benutzen, den new operator kann ich ja so überladen das er malloc bzw. freeloc benutzt, also die C funktionen.

    Was machen die C Bibliotheken, wie bauen die auf? Direkt auf die Maschiene oder wie?

    Also muss man aufjedenfall ASM und C können C++ ist da nur nebensache oder wie?

    Eine weitere Frage die sich mir jetzt stellt, ich denke das der C++ Standard auf C aufbaut, warum verwendet er hier aufeinmal systemabhängige methoden? Das kapier ich einfach nicht...

    Mfg Wikinger75!



  • Vielleicht interessiert dich der Link, was man auch immer davon halten mag.

    http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918



  • auch gewisse C Funktionen bauen auf Betriebsystemabhängige Funktionen auf. Malloc und Free musst du auch in C zuerst implementieren, bevor du sie verwenden kannst.
    Prinzipiell gilt: Alles was irgendwie mit dem Betriebsystem zu tun hat/haben könnte (files, bildschirmausgabe, memory allocation, treiber...) musst du selbst machen. Du musst auch zuerst die C Bibliothek auf dein System portieren, bevor du etwas aus ihr verwenden kannst.



  • blitzmaster schrieb:

    Malloc und Free musst du auch in C zuerst implementieren, bevor du sie verwenden kannst.

    😕
    Wozu soll das gut sein? Der gesamte Speicher gehört einem doch schon.



  • Ich spiele auch mit dem Gedanken, ein Betriebssystem zu entwickeln. (Nur so aus Interesse, wie bei Linus übrigens 🙂 ).
    Meine Ziel ist vor allem ein OS mit unheimlich viel Kontrolle des Benutzers und natürlich Sicherheit.
    Auf Grafik kommt es mir dann erst mal nicht so an, ich muss mir allerdings noch überlegen, ob ich es DOSmäßig mache,
    oder eher so wie Win3.1 (95 oder gar XP bzw. Vista wären dann wahrscheinlich doch zu hoch, Linux equivalente habe ich nicht im Kopf).
    Ich habe mir absichtlich eher weniger Beispiele angeschaut,
    um mit meinen Gedanken nicht so an andere Betriebssysteme gebunden zu sein (jaja, erfolreiche, geprüfte Konzepte ignorieren, ich weiß...).
    Anfangen müsst' ma' halt mal :D.
    Ach ja: Auf Realmode, wie er irgendwo als "Einstieg" empfohlen wird (hier?),
    werde ich verzichten, dort werde ich nur das nötigste machen (GDTR, LDTR und IDTR aufsetzen seien als Beispiele genannt).
    Literaturempfehlungen: Das habe ich erst gestern studiert:
    Ziemlich schwere Kost beim ersten mal lesen (war ja auch schon nach Mitternacht),
    aber wenn es dann (mit einer kurzen Denkpause dazwischen) noch mal liest und
    auch alles unbekannte beispielsweise bei Wikipedia nachschaut, dann ist es schon zu verstehen: http://www.tecchannel.de/server/prozessoren/402223/x86_programmierung_und_betriebsarten_teil_4/index1.html
    (Das "402223" durch "402220" bis "402225" ersetzen und die Zahl vor ".html" korrigieren (1 entspricht erster Seite),
    wenn man den Teil wechseln möchte, die Links gingen (zumindest bei mir) nicht.)

    Dem Threadersteller viel Glück wünschend
    Fast2

    Edit: Mich würde auch mal interessieren, wie viel Aufwand die Portierung ist, könnte man dem Compiler nicht einfach sagen,
    dass er (z.B. bei "new" eine andere Aufrufadresse) reinschreiben soll? (Nämlich die des Speicherverwalters,
    welcher dann allerdings u.U. doch in ASM geschrieben werden sollte).
    @hm: Ich würde auch nicht davon ausgehen, das einem "alles" gehört,
    denn es wäre doch nett, eine zentrale Stelle zu haben,
    die weiß was frei ist, anstatt vllt. sogar ein bestimmtes Muster
    zur Erkennung freien Speichers nutzen zu müssen.



  • @Fast2: Das "dem Compiler sagen" ist im Prinzip auch das portiern. Du musst im Falle von new/delete die beiden operatoren einfach überladen, mit dienen eigenen Funktionen.
    Achja, und noch ein Tip am Rande: Nimm lieber einen fix fertigen Bootloader wie GRUB, das erspart dir am Anfang schon viel Ärger. Der wechselt dir in den PM und setzt dir die GDT und so auf...



  • Hmm ja gut alle eigentlich fragen währen dann jetzt eig. geklärt.
    Gut ich muss sowieso noch anständig C++ lernen und dan hau ich noch C drauf, damit ich C/C++ Perfekt behersche und erst dan lern ich Assembler.
    Hab noch was zu tun diese Thread war nur aus neugier eig.
    Naja die links heb ich mir aufjedenfall auf 😃 .

    Jetzt bleibt nur noch eine Frage^^
    Wie müsste ich vorgehen, wenn ich das OS auf einem UNIX Standard bauen will?
    Wo finde ich infos dazu, usw.?

    Mfg Wikinger75!



  • Wikinger75 schrieb:

    Wie müsste ich vorgehen, wenn ich das OS auf einem UNIX Standard bauen will?
    Wo finde ich infos dazu, usw.?

    http://en.wikipedia.org/wiki/POSIX könnte interessant sein.


Anmelden zum Antworten