Das eigene Betriebssystem



  • Ja erstmal Hallo, das ist hier mein erster Post/Beitrag und wen ihr schon die überschrift gelesen habt, dann habt ihr Recht ich möchte mein eigenes (kleines) Betriebssystem erstellen. Bitte schreibt jetzt nicht unten hin "Was für´n Witz" oder " Wie willst du das schaffen?" Das habe ich schon sehr oft erlebt und ich hoffe ihr könnt mir ein bisschen helfen. Da habe ich auch schon zwei FRagen:

    1. Was brauche ich für Programme, die man verwenden muss um ein Betriebssystem zu erstellen?

    2.Welche Programmiersprachen sind nötig, um ein Betriebssystem zu erstellen?

    3.Wie muss ich beginnen, um ein Betriebssystem zu erstellen, was muss ich als erstes und was muss ich als Letztes machen?

    Mein Betriebssystem soll nicht viel enthalten, sondern ein fach nur (erstmal) wo auf dem Bildschirm steht "Herzlich Willkommen" oder etwas ähnliches.
    ich bedanke mich bei euren hilfreichen Antworten. 🙂







  • Hier sind auch zwei interessante Seiten:

    http://wiki.osdev.org/Expanded_Main_Page
    http://www.lowlevel.eu/wiki/Hauptseite

    Ich denke, so ein kleines "Betriebssytem" haben schon sehr viele Informatiker geschrieben. Ich hab sowas als Schüüler in Assembler geschrieben. Würde ich heutzutage aber nicht mehr als Betriebssystem bezeichnen. Das war ein Programm, das man von Diskette booten konnte und das kein anderes Betriebssystem gebraucht hat, sondern nur BIOS Interrupts benutzt hat. Nicht das, was man unter einem Betriebssytem versteht, aber das, was du jetzt auch angesprochen hast. Man hätt auch deutlich weiter gehen können, aber ich hatte dann andere Interessen, und nachdem mir eh schon klar war, was man hätte machen müssen um sowas wie DOS nachzubauen, hatte ich dann keine Lust mehr, das auch tatsächlich zu implementieren. So eine Phase machen aber sehr viele durch.



  • Hallo 🙂

    Ich würde mir mal "X86 Opcodes" und "POSIX" angucken.

    So merkwürdig das klingen mag,
    aber im Prinzip "baut" sich jeder Windows/Linux Benutzer
    bei der Installation ein eigenes Betriebsystem,
    denn ein Grossteil eines Betriebsystemes sind tatsächlich
    Gerätetreiber und der Zugriff auf eben jene.

    Solltest Du nach alledem immer noch voller Tatendrang stecken,
    empfehle ich eine Virtuelle Maschine.
    (muss nicht Qemu sein, der VMware Player ist performancemaessig meiner Erfahrung nach der Beste)

    In dieser VM kannstu nach Herzenslust rumprobieren
    und es kostet kaum Zeit/Nerven wenn Du die "abschiesst".

    Viel Spass 🙂



  • Ich weis nicht ob das hier zu gebrauchen ist da ich mich selber noch nicht damit beschaffe aber es scheint ganz OK zu sein...

    http://www.tutorials.de/content/357-ein-betriebssystem-mit-c-entwickeln.html



  • Nun, wenn du dich nicht einfach nur auf das Abschreiben irgendwelcher Tutorials beschränken willst, empfehle ich dir ein gutes Buch.

    Das einzige mir bekannte, das dich dabei an die Hand nimmt und dir von vorn bis hinten erklärt wie ein Betriebssystem funktioniert und wie es implementiert werden kann, ist Andrew S. Tanenbaums "Operating Systems: Design and Implementation". Am Beispiel von Minix wird die Implementierung eines kleinen, aber dennoch nützlichen Betriebssystems gezeigt.

    Guck unbedingt, dass du die aktuelle Auflage bekommst, die Minix3 beschreibt. C solltest du jedoch halbwegs können.

    Arbeite das Buch durch und führe deine eigenen Experimente am Minix-Code durch. Vergiss diese komischen Tutorials, wenn du wirklich was lernen möchtest.

    Alternative: mach dich über die zugrundeliegende Theorie schlau und schnapp dir den Code eines bestehenden Betriebssystems. Versuche ihn zu verstehen. Nicht unbedingt mit Linux anfangen, da fällt der Einstieg nicht gerade leicht. Nimm lieber was kleines wie Plan9 oder eben Minix. Musst du wissen, welcher Ansatz dir besser gefällt.



  • Sejin schrieb:

    Mein Betriebssystem soll nicht viel enthalten, sondern ein fach nur (erstmal) wo auf dem Bildschirm steht "Herzlich Willkommen" oder etwas ähnliches.

    Nach meiner Definition ist so etwas dann nur eine bootbare Anwendung, wobei ein Betriebssystem zusätlich auch noch verschiedene externe Anwendungen starten und zur Ausführung bringen können sollte.

    Dafür ist es hilfreich es zu lernen wie die verwendete CPU einen Operationscode verarbeitet und mit welchen Befehlen und Adressierungmöglichkeiten wir auf den Speicher and deren Adressen und Werte zugreifen können.
    Daneben ist es auch wichtig die Steuerung und Bedienung der Ein- und Ausgabe-Geräte(wie z.B. Mouse, Tastatur und Bildschirm) für den Anwender und verschiedenen externen Anwendungen nach deren Starten zur Verfügung zu stellen bzw. verfügbar zu machen. Für diese Aufgabe gibt es etwas Unterstützung von Bios und dessen Routinen die man mit einem Software-interrupt-Aufruf verwenden kann und womit eine minimale Funktionalität einer Ein- und Ausgabe über eine Mouse, eine Tastatur und einen Bildschirm ermöglicht wird, ohne das man dafür spezielle Gerätetreiber am Anfang benötigt.

    Dirk



  • User "Mechanic" hat wohl Recht. Ich gehöre auch zu diesen Informatikern, die mal ein "eigenes OS" programmiert haben.

    Es war auf einer Diskette und verwendete den X86 Real Mode, damit das Bios verwendet werden konnte.
    Man muss klar sehen, dass dann das Bios 99% der Betriebssystem-Aufgaben übernimmt.
    Aber es hat Spass gemacht. Ich hatte sogar ein simples Filesystem und ein rudimentäres Multitasking implementiert.

    Der Real Mode macht das Erstellen eines eigenen kleinen OS extrem einfach,
    aber auf Dauer ist er eine arge Einschränkung. Schaltest du den Prozessor
    in den Protected Mode, hast du die volle Funktionalität moderner Prozessoren
    inklusive der ganzen MMU-Sachen, nur funktioniert dann das Bios nicht mehr.
    Das wäre dann die "richtige" Welt der OS, wo du alle externe Hardware selber ansteuern musst...

    Damals benötigte ich für mein OS nur
    - den Microsoft Macro Assembler (oder irgendeinen anderen Assembler, der .COM Dateien erstellen kann)
    - einen Hex-Editor wie Winhex, der auf eine unformattierte Diskette schreiben kann.
    - eine Diskette.
    - Viel Zeit und Liebe 🙂

    Die COM-Dateien eignen sich extrem gut, weil sie einfach ein Maschinensprach-Image sind. Eine Exe-Datei enthält einen Header und der gesamte Aufbau ist viel komplizierter. COM-Dateien kannst du 1:1 auf eine unformattierte Diskette spielen. Sie haben eine Grössenbeschränkung, die ich jetzt nicht mehr auswendig weiss, doch diese ist für den Anfang unwichtig.



  • Sejin schrieb:

    Ja erstmal Hallo, das ist hier mein erster Post/Beitrag und wen ihr schon die überschrift gelesen habt, dann habt ihr Recht ich möchte mein eigenes (kleines) Betriebssystem erstellen. Bitte schreibt jetzt nicht unten hin "Was für´n Witz" oder " Wie willst du das schaffen?" Das habe ich schon sehr oft erlebt und ich hoffe ihr könnt mir ein bisschen helfen. Da habe ich auch schon zwei FRagen:

    1. Was brauche ich für Programme, die man verwenden muss um ein Betriebssystem zu erstellen?

    2.Welche Programmiersprachen sind nötig, um ein Betriebssystem zu erstellen?

    3.Wie muss ich beginnen, um ein Betriebssystem zu erstellen, was muss ich als erstes und was muss ich als Letztes machen?

    Mein Betriebssystem soll nicht viel enthalten, sondern ein fach nur (erstmal) wo auf dem Bildschirm steht "Herzlich Willkommen" oder etwas ähnliches.
    ich bedanke mich bei euren hilfreichen Antworten. 🙂

    ich hoffe mal, du erwartest nichts allzu bombastisches.

    manche leute denken, wenn sie "betriebssystem" hören, an irgendwelche bunten fensterchen und buttons.

    Antworten:
    1. Eigentlich nur das, was man zum Programmieren braucht. Also: Compiler, Linker, Assembler
    2. Assembler und C
    3. Naja, du solltest halt ein bisschen planen am anfang. dann losprogrammieren.

    Mein Tipp wäre, dass du erstmal C lernst, und zwar erstmal ohne betriebssystem-programmierungsspezifisches. danach vielleicht assembler. danach kannst du dir die tutorials auf wiki.osdev.org anschauen.

    nichts überstürzen.



  • maze77 schrieb:

    Damals benötigte ich für mein OS nur
    - den Microsoft Macro Assembler (oder irgendeinen anderen Assembler, der .COM Dateien erstellen kann)
    - einen Hex-Editor wie Winhex, der auf eine unformattierte Diskette schreiben kann.
    - eine Diskette.
    - Viel Zeit und Liebe 🙂

    Die COM-Dateien eignen sich extrem gut, weil sie einfach ein Maschinensprach-Image sind. Eine Exe-Datei enthält einen Header und der gesamte Aufbau ist viel komplizierter. COM-Dateien kannst du 1:1 auf eine unformattierte Diskette spielen. Sie haben eine Grössenbeschränkung, die ich jetzt nicht mehr auswendig weiss, doch diese ist für den Anfang unwichtig.

    😃 👍

    COM-Dateien sind normalerweise auf 64KB bzw. ein Segment beschränkt. Das reicht normalerweise auch, denn Assemblerprogramme, vor allem ausgeklügelte, sind oft nicht sehr groß...und small is... 😉 Wenn man aber weiß, wie der RealMode funktioniert, und wie man die Addition von Hand programmiert, dann kann man auch beliebig große COM-Proggies erstellen.
    Ein kleines Schweizertaschenmessertool mit vielen (auch fiesen) Möglichkeiten ist (naja, war in der 64Bitwelt) das Dos/Windowsprogramm debug.
    -----
    Ergänzung zum Thread:
    Was man außerdem für ein sinnvolles Betriebsystem braucht, ist ein gutes Grundlagenwissen über die zur Verfügung stehenden Schnittstellen bzw. Anschlüsse und die Technik selbst, mindestens Tastaturcodes, ASCII-Code, Kommunikationsregister/Funktionen, Prozessoren, VGA-Routinen, Dllhell.

    Das schöne an den Intelprozessoren ist ja, dass sie kompatibel sind und noch immer Dosdisketten booten bzw. 16Bit Programme ausführen.

    Es wäre nicht der schlechteste Weg, mit C-Programmierung einzusteigen (z.B. Erlenkötter) dann mit einem Entwicklungskit für Mikrocontroller weiterzumachen, und für diesen erstmal ein kleines Betriebssystem zu schreiben.



  • Ich habe anno 1989 einen kleinen Computer auf 6502 Basis aufgebaut (2Mhz) und dafür ein Betriebssystem in Assembler geschrieben. Der hatte 16 IO Ports, eine Rs232 Schnittstelle und ein LCD Display verwaltet mit 256x64 Punkten.

    Dem folgte später gegen 1992 ein 10 Mhz 68000er System mit 7 Midi Schnittstellen, auch dafür hatte ich ein eigenes Betriebssystem in Assembler geschrieben, habs allerdings nie ganz fertig bekommen. Der "unterhielt" sich dann mit den 6502 System.

    Später wurde daraus dann meine Diplomarbeit, musste dann aber "leider" das 68000er System gegen ein 486er motherboard auswechseln, was aber aus inzwischen ja auch sehr viel schneller war. Das Programm dort lief dann unter DOS.

    Ist damals echt ein tolles Abenteuer gewesen.


Log in to reply