Archiv für die Kategorie „OS Dev Blog“

kmalloc, mmap, vmalloc, pdg…

Sonntag, 29. März 2009

Soeben habe ich ein schöne Online-Version eines Buches und einen weiteren tollen Artikel zur Treiberentwichklung unter Linux gefunden. Ich dachte, da kann ich mir mal einiges abschauen, wenn ich das Xairro OS entwicklen möchte. Während der eine Artikel wirklich relativ Praxisorientiert war und leicht verständlich, sah es bei dem Buch im Bereich Speicherverwaltung schon ganz anders aus. Hier den Überblick zwischen den ganzen Tatsachen und Begriffen zu behalten, ist alles andere als einfach. Dabei behandelt das Buch größtenteils das Thema nur im Bereich der Anwendung für (Treiber)Entwickler, aber soetwas zu implementieren muss die Hölle sein. Heute kommt mir mal wieder das Grauen, wenn ich daran denke, dass ich sowas basteln müsste.

Vielleicht wäre es doch am aller einfachsten, zuerst einmal den Linuxkernel zu nehmen und den Klotz mehr oder weniger spielerisch zu erweitern.

Ich vermute, dass Problem ist einfach die Zeit. Während man früher unter DOS direkt am System gearbeitet hat, war Linux schon relativ weit abstrahiert. Und in der heutigen Welt der grafischen Oberflächen verliert das Wissen über die Computergrundlagen für den Heimanwender immer mehr an Bedeutung. Das macht es für den Neueinsteiger wirklich schwer, sich zu orientieren. Da hat wirklich der den Vorteil, der mit den Abstraktionsebenen zusammen aufgewachsen ist und nicht aufeinmal mit dem gesammten Stoff konfrontiert wurde. Ich möchte nicht wissen, wie die Zukunft aussieht. Bzw., vielleicht bringt ein Informatikstudium einem das alles bei, aber für den Hobbycomputerinteressierten ist es nicht ganz einfach.

Literatur

http://www.linuxjournal.com/article/2476

http://www.oreilly.de/german/freebooks/linuxdrive2ger/

Xairro OS: Die Bundeskanzlerin verkauft Würstchen

Donnerstag, 2. Oktober 2008

Hey!

Ich habe ein bisschen am Betriebssystem Xairro OS gearbeitet. Ich bin gerade dabei, die IRQs abzufangen. Dabei ist mir etwas ziemlich komisches untergekommen.

Erstmal für die Laien: Im PC steckt ein Chip namens PIC, der (im Prinzip) 16 Kanäle hat. Wenn ein Signal auf ein Kanal kommt, wird eine Unterbrechungsroutine beim Prozessor eingereicht. Die Signale werden von bestimmter Hardware gesendet. So sitzt am Ende des Kanal 0 ein Timerchip (PIT) und der Kanal 1 wird vom Tastaturcontroller (KBC) (der übrigens auch viel mehr macht, z.B. kann man über den den PC resetten) angesteuert wird.

Nun habe ich angefangen die Tastatursignale auszuwerten. Dabei habe ich die ganze Zeit an Kanal 0 gelauscht. Der aufmerksame Leser wird feststellen: Kanal 0 ist garnicht mit dem KBC verbunden. Zu erwarten wäre theoretisch, das dann nix ankommt, aber so war es nicht! Der Code hat wahrhaftig funktioniert! Aber das kann nicht sein, das ist ungefähr krank wie wenn die Bundeskanzlerin im Bundestag plötzlich aufsteht und Currywurst verkauft. Es ist einfach unlogisch.

Okay, wollen wir nun mal auf die rationale Ebene zurückkommen. Es muss dazu ja eine Erklärung geben. Die ist so unspektakulär, dass es sich eigentlich nicht lohnt, die Begründung aufzuschreiben. Die Routine an Kanal 0 wurde alle 18,222 mal in der Sekunde aufgerufen. Und zufällig war dann zwischenzeitlich mal der Tastaturpuffer voll. Der wurde dann ganz regulär ausgelesen. Aber nicht auf Anweisung des KBC.

Wer mitgedacht hat und sich auskennt, wird bemerken, dass es sich hier um ein Polling mit Pausen zur Prozessorschonung handelt ;)

Vielleicht hat der Würstchenverkauf im deutschen Bundestag ja auch eine logische Erklärung…

Ausgrabungsfund: Der alte OS Dev Blog

Dienstag, 17. Juni 2008

Hallo allerseits!

Die alten Hasen von euch kennen vielleicht noch den Vorgänger diese Blogs: Den OS Dev Blog. Ich habe zu Testzwecken das alte Xairro wieder zum Laufen gebracht und den alten Blog wiedergefunden. Die wenigen Beiträge sollen nicht verschütt gehen, deshalb liste ich sie hier nocheinmal chronologisch auf:

GRUB und C, es klappt vom 07.06.2007

GRUB und C, diese Kombination aus dem beliebten Multi-Boot-Loader und der mächtigen Programmiersprache sollten eigentlich einen komfortablen und einfachen Einstieg in die Welt der Betriebssystemprogrammierung bieten. Eigentlich. Theoretisch könnte man nahezu ohne Assembler auskommen (für den Anfang)…

Leider hat sich das alles als nicht ganz so einfach herausgestellt, es war ein Kampf gegen die Maschine. Bis ich von den kleinen Syntaxfehlern bis zu den größeren Logikfehlern alles zusammengebastelt hatte, viel mir ein Stein vom Herzen, jetzt konnte es los gehen.

Seit dem ist noch nicht viel Zeit vergangen, aber ich konnte komfortabel Funktionen für die Textausgabe auf dem Bildschirm, eine Kopierfunktion für den Arbeitsspeicher etc. schreiben. Das ist nicht viel, Eingabegeräte werden bis jetzt noch vollkommen ignoriert und auch die Protected-Mode-Dinge sind noch nicht vorhanden, nicht mal eine GDT. Es gibt noch viel zu tun, ich habe Unmengen an Plänen…

Mein jetziger Kernel heißt einen momentan nur mit einem lila Text im VGA-Text-Modus willkommen;)

printf und va_list’s vom 12.06.2007

Jetzt hat mich der Teufel gepackt! Der printf-Befehl und va_list’s. Ich wollte gerne soetwas wie printf programmieren. Also musste ich erstmal erfahren, wie man eine beliebige Anzahl von Parametern an eine Funktion übergibt. Nach langem befragen von teilweise unhöflichen Besserwissern habe ich in einem deutschen Channel die Antwort bekommen: va_list’s. Die muss ich jetzt erstmal implementieren, dann geht es an die printf-Funktion. Im Moment geht es leider nicht ganz so flott voran:(

Hilfe vom 21.06.2007

Uff, im Moment schaffe ich nichts. Das will alles nicht so, wie ich will. Aber es gibt einiges zu tun.

Ich muss nun Keyboardfunktionen schreiben, das will nicht wirklich, im Moment. Dies ist mal wieder eine Situation, wo man sich eine Fehlermeldung wünscht.

Aber wenigstens heute morgen habe ich etwas geschafft: Ich habe in unserem Forum OS-Development-Kategorien angelegt. Und das aller Beste ist: http://www.xairro.de/content/view/83/7/, das ist ein Artikel zum Thema Betriebssystementwickelung mit vielen Infos, schaut selber.

Ferien vom 05.07.2008

Im Moment sind Ferien, ich komme zu nichts, will alles nicht so recht gelingen. Ich habe nichts geschafft, seit dem letzten Posting. Hoffentlich bekomme ich iwann mal Hilfe von jemandem, der das drauf hat. Für mich ist das ziemlich schwer, ohne Hilfe, ich bin nicht mal erwachsen. Aber kommt Zeit kommt Mitstreiter. Genießt eure Ferien auch!

Interrupts, Interrupts und noch mehr Interrupts vom 02.08.2008

Trotz der Ferien habe ich mich jetzt schon wieder an das OS gewagt und habe mich nun ein bisschen weiter mit dem Protected Mode auseinandergesetzt. Genaugenommen waren es bloß Interrupts mit denen ich mich auseinandergesetzt habe… Ich habe nun verstanden, wie Interrupts im Protected Mode funktionieren, aber das Umsetzen war ein Problem. Wie immer habe ich per Textoberfläche von Ubuntu (Linux) mit dem Editor “nano” gearbeitet. Ich hätte aber soooo gut Copy & Paste gebrauchen können, ich habe schließlich die 32 Exception-Interrupts des Prozessors + die 16 PIC-Interrupts eintragen müssen, der Code dabei ist nahezu immer gleich, das war ziemlich anstrengend^^ Aber jetzt bin ich soweit. Die Softwareinterrupts funktionieren, das habe ich getestet. Dann wollte ich aber die Hardwareinterrupts testen, das wollte ich mit dem Timer des PITs realisieren, hab schön ne Routine für IRQ 0 geschrieben - aber es funktionierte nicht. Nichts passierte. Ich weiß nicht, ob es an meiner PIT-Programmierung oder an meiner PIC-Programmierung liegt :P Was solls, ich habe einen Fortschritt gemacht, den Fehler finde ich wann anders. Ich freu mich schon total auf später, wenn alles immer abstrakter wird, dann wird das programmieren wohl einfacher, ich komme in bekanntes Gebiet und weiß, was zu tun ist. Bis bald, PowerProgrammer

Die IRQs… vom 06.09.2007

Nach einer kleinen Programmierpause habe ich wieder damit angefangen, womit ich das letzte mal aufgehört hatte: Mit den IRQs. Und, ja, ich habe mehr oder weniger den Fehler gefunden… Das ist ziemlich peinlich. Ich hatte nämlich mit

cli
hlt

die Interrupte deaktiviert (und den Prozessor angehalten). Dann kann das natürlich nicht klappen. Stundenlange Fehlersuche umsonst, grrr^^ Jedenfalls klappt es jetzt mehr oder weniger, allerdings rattert der Text “CBCBCBCBCBCBCBCBCBCBCBCBCB…” flott den Bildschirm herunter anstatt jede Sekunde mal Testweise einen Punkt auf den Bildschirm zu zeichnen. Das Pröblemchen: Ich weiß nicht, wo dieses ganze “BC” herkommt. Joa, mal sehen, das werde ich dann beim nächsten mal beseitigen… Aber ich bin weitergekommen und nur das zählt:)

Der Sprung ins Nirwana… vom 11.09.2007

Jetzt weiß ich wenigstens, wo ungefähr der Fehler mit dem “cb” liegt. Es lag an meinem IRQ-Handler. Dieser sollte in der Theorie einen Timerhandler aufrufen… In der Theorie… Praktisch allerdings springt der Prozessor aber wo ganz anders hin, wo er nichts zu suchen hat. Dort steht der Code zum Ausgeben von “cb”. Allerdings weiß ich nicht, wo er da hinspringt und wieso er das überhaupt macht:D:D:D Da muss ich nochmal auf Fehlersuche gehen.

Jetzt fragt ihr euch sicher, wie es momentan mit dem Xairro OS aussieht. Das ist eine berechtigte Frage. Leider habe ich im Moment nicht ganz so viel Zeit. Xairro ist neu herausgekommen und ich musste Python lernen und mich in das Framework Django einarbeiten etc. Aber es wird sicher weitergehen. Yarca, ich werde dir nicht folgen! Ich bleibe beim OS Deven!

Mein neuer Developer’s Blog

Sonntag, 25. Mai 2008

Nun gibt es endlich wieder einen Developer’s Blog!

Alte Xairro-Hasen erinnern sich vielleich noch: Bei der vorletzen Xairro-Version noch unter Joomla-Zeiten hatte ich meinen kleinen Blog, in dem ich über das Xairro OS (mein Betriebssystem, was ich programmiere) berichtet. Das Teil ist irgendwie verschollen und jetzt beginne ich hier noch einmal und zwar mit allem, was ich entwickle.

Ich hoffe, diesen Blog werde ich einigermaßen regelmäßig führen!