Autor Thema: Mal wieder am reinarbeiten, wo weitermachen?  (Gelesen 10682 mal)

Moritz31

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« am: 23. November 2016, 09:01 »
Hey Leutz,

nachdem ich momentan wieder ein bisschen Lust hab an meinem OS weiterzubasteln, bin ich nun am überlegen wo ich weitermachen soll.
Implementiert sind momentan die Grundlangen wie GDT,Memory Management, Multithreading mit einem simplen Scheduler, ein kleiner Keyboard Treiber.
Hab das ganze zeug jetzt mal angefangen aufzuräumen und mir Gedanken gemacht über was man noch so implementieren könnte als nächstes. Da wäre zum einen eine Shell, allerdings habe ich da noch so gar keine Vorstellung was die Shell eigentlich genau macht und wie ich die implementieren könnte. Dann wäre da noch das Thema Festplatten / CD's und andere Geräte. Mein aktuelles Os ist noch nicht in der Lage irgendwas davon zu erkennen. Daher wäre es aus meiner Sicht vllt sinnvoller daran erstmal weiterzuarbeiten.
Allerdings hab ich den überblick noch nicht so ganz. Also die Liste die ich mir jetzt eigentlich überlegt habe ist:
*Festplatten erkennen
*Festplatten lesen/schreiben
*Dateisystem(Fat12 oder irgendwas kleines)

Allerdings wo fange ich an ? ATA benötige ich ja für die Kommunikation das heißt ich brauche auf jedenfall ein ATA Treiber. Allerdings brauche ich dann noch andere Sachen denke ich ? PCI/ACPI ? ist irgendwas noch nötig für mein vorhaben ?

Wäre cool wenn mir jemand helfen kann.

Mit freundlichen Grüßen
Moritz

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 23. November 2016, 10:32 »
Die meisten bauen als erstes eine Shell, die halt Eingaben entgegennimmt und dann nutzlose Befehle ausführt (weil nützliche beim aktuellen Stand ja noch nicht gehen). So Sachen wie "echo", "version", "help" und "exit". Kann man machen, wenn man will.

Deinen Ansatz finde ich aber auch gut. Wenn du dann einen Plattentreiber und einen Dateisystemtreiber hast (read-only reicht ja für den Anfang und das geht recht zügig), kannst du immer noch eine Shell anfangen und dann gleich Sachen wie "ls" oder "cd" einbauen. Das lohnt sich dann auch halbwegs.

Für IDE brauchst du nicht zwingend PCI, IDE an sich ist nämlich älter und damals noch mit ISA benutzt worden. Für dich heißt das in erster Linie, dass du den Controller an festen I/O-Ports ansprechen kannst und die Daten dann auch über diese Ports übertragen kannst (also PIO-Modus). Später ist DMA dazugekommen und das geht dann nur über ein PCI-Gerät, aber zum einen kannst du das vorerst ignorieren, und zum anderen ist es auch nicht schwer, PCI-Geräte zu erkennen, d.h. das kannst du ohne weiteres gleich als nächsten Schritt machen, wenn dir danach ist. ACPI brauchst du schon gar nicht. Du kannst dich also direkt auf IDE stürzen.

Ich würde dir empfehlen, für den Anfang eine der älteren Spezifikationen zu benutzen, wo noch alles in einem Dokument steht, und ich es teilweise übersichtlicher finde. Du kannst dir zum Beispiel ATA/ATAPI-5 hernehmen.

Wenn du für das Dateisystem FAT nimmst, kommt es auf deine Imagegröße an, was für eine Variante du bekommst (genauer gesagt auf die Anzahl der Cluster, und weil man die Clustergröße in einem gewissen Bereich selber festlegen kannst, hast du etwas Spielraum). Für ein Plattenimage in der für ein Hobby-OS typischen Größe (mehr als 32 MB, aber nicht mehrere GB) dürfte das auf FAT16 rauslaufen. Das erspart dir FAT12, was ein bisschen eklig ist (weil 12 halt bedeutet, dass man mit halben Bytes arbeiten muss).
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

Moritz31

  • Beiträge: 4
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 23. November 2016, 11:05 »
Vielen Dank für die Antwort, werde mir dann mal IDE und ATA-PIO anschauen, allerdings ist mir aufgefallen das mein Paging immer noch nicht funktioniert  :-D daher werd ich da wohl erstmal noch ein wenige Arbeit reinstecken müssen :P

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 23. November 2016, 12:59 »
Aha, das Standardproblem. :-D

Ja, dann flick vielleicht lieber erst mal dein Paging.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen