Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Liam

Seiten: [1]
1
OS-Design / Re: Konzeption und Anfang
« am: 19. October 2009, 13:48 »
Momentan ist es so, dass ich beispielsweise IConsole nur einmal habe (Stichwort Singleton) und das so mache. Wenn ich nen neues Interface Objekt erstelle muss ich eigentlich nur die InitI<Name>( I<Name> *Pointer ) aufrufen.

Ich persönlich finde INTERFACE besser, aber du hast schon Recht, wenn andere es sehen...nja. Deinen zweiten Punkt mit den redundaten Pointern werde ich beachten! Danke sehr!

Noch irgendwelche Hinweise?
2
OS-Design / Re: Konzeption und Anfang
« am: 19. October 2009, 13:32 »
Also ich habe mal hard-coded Interfaces eingebaut à la:

#define INTERFACE typedef struct

INTERFACE _IConsole
{

  VOID ( *ClearScreen )( VOID );
  UINT ( *PutS )( /* ... */ );
  /* ... */

} IConsole;

// I-wo im Code
VOID InitIConsole( IConsole *pIConsole )
{

  ( *pIConsole ).ClearScreen = RealClearScreenFunction; // =)
  /* ... */
  // Ich habe für Trieiber besondere Funktionen __init() und __kill definiert.

}

/* ... */
InitIConsole( &AnyNewIConsoleObject );

Was Vererbung angeht geht das hard-coded so:

INTERFACE _IAbstractDriver
{

  BOOL ( *__init )();
  BOOL ( *__kill ) ();
  /* ... */

} IAbstractDriver;

/* ... */

INTERFACE _IMyDriver
{

  IAbstractDriver Device; // habe nen #define DRIVER IAbstractDriver Device i-wo

} IMyDriver;

Ist zwar etwas Anfänger-Style, aber es tut was es soll. Ich überlege imo in der IAbstractDriver dann Daten über die Treiber, wie z.B. Namen und so, zu speichern. Dann kann man die Daten in verketteten Listen speichern.

Mir ist dieses modulare und dynamische Design sehr wichtig, da dann die Wartung relativ einfach fallen könnte.

Wie findet ihr meinen ersten Ansatz? Was lässt sich noch ausbauen?
3
OS-Design / Re: Konzeption und Anfang
« am: 16. October 2009, 13:01 »
Wie würde dann eine solche Funktions-Pointer-Struct aussehen? (Jetzt mit meinem Beispiel Video::ClearScreen())

(Habe dich bei ICQ geadded. Kannst ja mal annehmen xD)
4
OS-Design / Re: Konzeption und Anfang
« am: 16. October 2009, 12:41 »
Halte ich für keine gute Idee. Du wirst zwar am Ende irgendwas haben, das irgendwie funktioniert, aber es wird vermutlich nicht optimal sein. Implementier lieber ein, zwei andere Dateisysteme (FAT und ext2 bieten sich an), damit du die Konzepte lernst, die andere verwenden. Wenn du dann immer noch nicht genug hast, kannst du immer noch dein eigenes FS anfangen, aber eben mit etwas mehr Hintergrundwissen.

Ok. Ich würde dann doch irgendwie mehr zu ext2 als FAT tendieren, aber für ne initrd oder ein VFS reicht es ja, wenn ich selber was mixe oder beispielsweise das von James Molloy nehme, oder?

Das mit dem Hybrid-Kernel werde ich mir eh einmal durch den Kopf gehen lassen müssen.

Eine Frage habe ich schon wieder: Wenn ich keine C++-Klassen benutzen will, wie kann ich beispielsweise Video-Funktionen in C in einer "Klasse", "Schnittstelle" oder einem "Namespace" verpacken? Was gibt es da so für Möglichkeiten? (Dachte mir jetzt ne kleine Map zu machen mit eindeutigen Identifiern und dann so bestimmte Funktionen aufrufen zu können per CALL( VideoDriver, ClearTTYScreen ) (<= Pseudo Code) oder so ähnlich.
5
OS-Design / Re: Konzeption und Anfang
« am: 16. October 2009, 11:47 »
Ich habe schon ein bisschen mit git und doxygen rumprobiert.
Bei git finde ich es momentan etwas umständlich andauernd nach einigen Änderungen einen commit zu veranlassen, aber ich denke mal, dass ich später froh darüber sein werde, wenn ich mal zurück in die Vergangenheit schauen kann.
Meine cygwin-git Version funktioniert einwandfrei und ich bin froh =)

Außerdem ist es etwas umständlich gewesen, die besonderen doxygen Kommentare, die nicht mein Coding-Stil sind einzufügen.
Ich hätte mal eine Frage: Ich möchte in doxygen auch meine (unkommentierten) Assembler Files in der File List haben. Gibt es einen Befehl auch deren Content da einzufügen? (Sorry für mein Denglisch. Ja, Denglisch xD)

Außerdem würde ich gerne für den Anfang an UNIX nah daranbleiben und ich habe mir gedacht (in meinen ersten Brainstormings), dass ich am besten einen Hybridkernel schreibe. Natürlich gibt es Vor- und Nachteile von monolithischen und Microkerneln, aber ich denke mal, dass man bei einem Hybriden die Vor- und Nachteile "intelligent" verpacken kann. Was denkt ihr darüber? (Besonders, die die schon an einem Projekt arbeiten: Wieso habt ihr euch für DEN Type eures Kernels entschieden?)

Was gibt es noch so an E-Paper/E-Book-Literatur, die sich mit OSDev beschäftigt? Einige Dinge, wie zum Beispiel A20 oder PM habe ich noch nicht zu 100% verstanden und ich will mich davor komplett informieren. Zwar habe ich schon einige Tutorials und dokumentative "Vade Mecum"s o.ä., aber mehr kann ja nicht schaden =)
Ansonsten werde ich mich hier durchs Wiki lernen.


@EDIT: Eine Frage habe ich noch. Ich würde gerne zu lerntechnischen Zwecken das Rad neu erfinden und würde gerne ein eigenes Dateisystem (mit Format) erfinden und nicht vorhandene Dateitypen, wie z.B. PDF, unterstützen. Dies ist zwar nicht effektiv und nicht unbedingt intelligent, aber ich will es gerne lernen, wie es ist ALLES selber zu machen. Was denkt ihr darüber?
6
OS-Design / Re: Konzeption und Anfang
« am: 15. October 2009, 13:26 »
Kann ich git auch unter meinem cygwin nutzen, oder was gibt es da so?
Muss eine aktive Internetverbindung bestehen oder kann ich lokal an meinem vom Internet getrennten PC arbeiten?
7
OS-Design / Konzeption und Anfang
« am: 14. October 2009, 12:12 »
Hallo,

ich habe bisher einiges durch das "Henkes"-Tutorial gelernt und habe auch schon selber etwas experimentiert.
Jetzt möchte ich die nötigen Tools sammeln und die "Prerequisites" zusammenstellen.
Bisher kam ich auf ein UML-Modellierungsprogramm und ein Dokumentationsprogramm. (Doxygen vielleicht?)

Was brauche ich noch?
Wie soll ich da anfangen? Jetzt auch bezüglich Kernel-Design?
Was ist so der beste Einstieg?

Gruß
Liam
8
Ich wollte mitteilen, dass alles prima klappt! Danke für die Hilfe!
@Tobiking: Ich arbeite wegen vielen Sachen unter cygwin. Das mit den normalen Windows-Apps ist mir klar.
9
Ich probiere das nachher aus!
Vielen Dank! Ich werde mich melden, wenn es Probleme gibt!
10
Heißt das nur unter ~/bin entpacken und ich habe alle Probleme gelöst?
11
Ich will einfach nur nen Compiler, der mir einfach nen normales 32-bit Sys compilieren kann. Ich habe mein Vista ja nur auf 32.
Ich arbeite momentan, wie schon erwähnt mit dem "Henkes"-Tutorial und war zufrieden. Seitdem ich versuche mit dem cygwin-GCC und LD zu arbeiten habe ich Probleme, weil das LD keine Kernel-"binary" erstellen kann...
Dann habe ich einfach DJGPP genommen. Is zwar etwas drumrum gehen, aber nja...ich kann leider keinen C++-Kernel schreiben weil ich das DJGPP-nocpp installiert habe =)
Ich habe auch versucht mit ELF zu compilieren, nur mochte LD meinen mit NASM generierten Kernel16 (Sprung in PM und Call von C-Kernel [Kernel32]) nicht. Per nasm -felf ... compiliert, aber als Error: File type not recognized oder so.
12
Dieser Wiki-Eintrag ist ja 64-bit betreffend. Ich steh jetzt auf dem Schlauch!
Wieso 64? Sind die Cross-Compiler genau dafür?
Ich wollte eigentlich nen 32-er machen, wenn man das so ausdrücken kann. Bin halt dabei die Tutorials von ehenkes und James Molloy um dann weiter selber zu experimentieren.
13
Ich habe i-wie Probleme mit vi. Selbst mit gvim. Ich bin einfach zu doof  :roll:
Ich hatte Probleme mit den *ix-Binaries von cygwin, das ich bei ld kein Binary-Output hatte, wie es bei der DJGPP-Version möglich ist. Und das mit MinGW und Cross-Compiler ist mir um ehrlich zu sein, etwas zu viel Arbeit...
14
Ich habe zwar ein Windoof VIsta bei mir laufen, aber trotzdem die cygwin-Umgebung installiert. nano rocks!

Habe anfangs mit der *ix-Variante von GCC und Co. zu compilieren, habe aber feststellen müssen, dass es Probleme gab.

Jetzt arbeite ich in der cygwin-Konsole (MinTTY) mit den DJGPP-Binaries.
Ist halt Gewohnheitssache.

Als Emulatoren habe ich VMware Workstation, QEMU und virtualBox.
Seiten: [1]

Einloggen