Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Low-Level-Programmierung und Experimenteller Kernel; Ansprechpartner: Dirty Oerti
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Do Jul 10, 2008 9:35 pm

Tag! :)

Obwohl ich an meinem Projekt, einen eigenen Kernel zu programmieren, wegen RL und Pc-Umstellungsarbeiten gerade nicht aktiv programmiere, bin ich trotzdem auf der Suche nach Ideen und Ansätzen dafür.

Wobei ich zur Zeit bin:

Speicherverwaltung.

Also die Verwaltung des physikalischen Speichers.
Ich möchte das mit Paging durchführen.
Nur wie genau, dass weiß ich noch nicht.

Falls ihr irgendwelche Anregungen habt oder mir helfen wollt, dann schreibt einfach :)

Code vom Kernel gibt's auf Anfrage natürlich auch :) ^^

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Kerli » Do Jul 10, 2008 9:51 pm

Dirty Oerti hat geschrieben:Obwohl ich an meinem Projekt, einen eigenen Kernel zu programmieren
Das nenn ich einmal ein anständiges Projekt. Und kann man den schon "booten" oder irgendwas machen ohne ein anderes Betriebssystem zu brauchen?
Dirty Oerti hat geschrieben:Ich möchte das mit Paging durchführen.
Nur wie genau, dass weiß ich noch nicht.
Du weist nicht was Paging genau ist oder wie du es umsetzen sollst? (Ich hab das gerade erst in Rechnerorganisation gehabt...)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8472
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Fr Jul 11, 2008 12:29 am

Dirty Oerti hat geschrieben:Obwohl ich an meinem Projekt, einen eigenen Kernel zu programmieren, wegen RL und Pc-Umstellungsarbeiten gerade nicht aktiv programmiere, bin ich trotzdem auf der Suche nach Ideen und Ansätzen dafür.
Habe ich auch mal gemacht... dann stellte ich fest, dass ich ein paar Änderungen in C++ dafür haben möchte. Seitdem werde ich Compiler-Spezialist und zum OS bin ich seitdem nicht mehr gekommen. ^^
Dirty Oerti hat geschrieben:Speicherverwaltung.

Also die Verwaltung des physikalischen Speichers.
Ich möchte das mit Paging durchführen.
Nur wie genau, dass weiß ich noch nicht.
Du brauchst eine CPU mit Memory Management Unit, hat eigentlich alles ab 386er.
Hallo Assembler ^^

Wie Paging funktioniert, liest Du in jedem Lehrbuch zum Thema Betriebsysteme. Linus Torvalds hat damals das von Tanenbaum gelesen und aus seinen Experimenten entstand Freax, was kurze Zeit später dann Linux hieß.
Ansonsten sollte im Silberschatz ebenfalls alles wichtige drin sein, den habe ich mir seinerzeit für mein OS besorgt, aber schon länger nicht mehr in den Fingern gehabt.
Mit dem allgemeinen Vorwissen, geht es dann an den Rechner. Wie man das dann für den Computer Deiner Wahl umsetzt, steht im Handbuch zum Prozessor Deiner Wahl.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 11, 2008 11:04 am

Kerli hat geschrieben:
Dirty Oerti hat geschrieben:Obwohl ich an meinem Projekt, einen eigenen Kernel zu programmieren
Das nenn ich einmal ein anständiges Projekt. Und kann man den schon "booten" oder irgendwas machen ohne ein anderes Betriebssystem zu brauchen?
Natürlich kann man es schon booten.
Es hat eine laufende Segmentierung, wobei die natürlich nicht groß einzustellen war, Speicherverwaltung soll ja nicht per Segmentierung ablaufen.
Außerdem sind die Interruptroutinen aufgestellt. Heißt: Wenn ein Fehler iwo im Code ist macht es nun nicht mehr *Peng* und der Rechner startet neu, sondern man bekommt einen Warnhinweis ausgegeben und der Rechner hält an.
Daran auch sichtbar: Der Kernel hat einen kleinen Textausgabemodus.
Und (darüber bin ich besonders stolz^^): man kann die kleinen LED's für Num,Caps und Scroll Lock auf dem Keyboard durch die jeweiligen Tasten setzen. Auswirkungen auf die Eingabe hat das aber noch nicht.
Kerli hat geschrieben:
Dirty Oerti hat geschrieben:Ich möchte das mit Paging durchführen.
Nur wie genau, dass weiß ich noch nicht.
Du weist nicht was Paging genau ist oder wie du es umsetzen sollst? (Ich hab das gerade erst in Rechnerorganisation gehabt...)
Was Paging ist, dass weiß ich. Hatte mich damit ja recht lange auseinander gesetzt.
Nur wie ich's implementieren soll...
Mich würde halt eine "richtige" Implementierung von Paging interessieren.

Xin hat geschrieben:Du brauchst eine CPU mit Memory Management Unit, hat eigentlich alles ab 386er.
Hallo Assembler ^^

Wie Paging funktioniert, liest Du in jedem Lehrbuch zum Thema Betriebsysteme. Linus Torvalds hat damals das von Tanenbaum gelesen und aus seinen Experimenten entstand Freax, was kurze Zeit später dann Linux hieß.
Ansonsten sollte im Silberschatz ebenfalls alles wichtige drin sein, den habe ich mir seinerzeit für mein OS besorgt, aber schon länger nicht mehr in den Fingern gehabt.
Mit dem allgemeinen Vorwissen, geht es dann an den Rechner. Wie man das dann für den Computer Deiner Wahl umsetzt, steht im Handbuch zum Prozessor Deiner Wahl.
CPU mit MMU vorhanden^^
Assembler-Grundkenntnisse vorhanden^^

Tanenbaum? Silberschatz?
Ich hab ja viel gesucht nach Hilfsmaterial und Anhaltspunkten.
Meistens ist es nur leider so, dass man auf einen Thread kommt "Hallo, ich kann seit 1 Woche C und will ein Betriebssystem programmieren" o.ä.
Kennst du iwelche Links oder hast du Dateien dazu iwo gespeichert?

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8472
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Fr Jul 11, 2008 11:31 am

Dirty Oerti hat geschrieben:Natürlich kann man es schon booten.
Es hat eine laufende Segmentierung, wobei die natürlich nicht groß einzustellen war, Speicherverwaltung soll ja nicht per Segmentierung ablaufen.
Außerdem sind die Interruptroutinen aufgestellt. Heißt: Wenn ein Fehler iwo im Code ist macht es nun nicht mehr *Peng* und der Rechner startet neu, sondern man bekommt einen Warnhinweis ausgegeben und der Rechner hält an.
Daran auch sichtbar: Der Kernel hat einen kleinen Textausgabemodus.
Und (darüber bin ich besonders stolz^^): man kann die kleinen LED's für Num,Caps und Scroll Lock auf dem Keyboard durch die jeweiligen Tasten setzen. Auswirkungen auf die Eingabe hat das aber noch nicht.
Bin beeindruckt, würde ich mir gerne mal ansehen.
Dirty Oerti hat geschrieben:Was Paging ist, dass weiß ich. Hatte mich damit ja recht lange auseinander gesetzt.
Nur wie ich's implementieren soll...
Mich würde halt eine "richtige" Implementierung von Paging interessieren.
Wenn Du auf einen Speicherbereich zugreifst, der nicht im RAM liegst, wirft die MMU einen Interrupt, der Dir die Gelegenheit gibt, die fehlende Page zu besorgen.
Das Rauswerfen von Pages ist teuer, daher ist das Aufwendige herauszufinden, welche Page in nächster Zeit nicht mehr verwendet wird... da gibt es reihenweise Algorithmen zu.
Was spricht dagegen, sich den Code von Linux oder Minix anzusehen?
Dirty Oerti hat geschrieben:Tanenbaum? Silberschatz?
Ich hab ja viel gesucht nach Hilfsmaterial und Anhaltspunkten.
Meistens ist es nur leider so, dass man auf einen Thread kommt "Hallo, ich kann seit 1 Woche C und will ein Betriebssystem programmieren" o.ä.
Kennst du iwelche Links oder hast du Dateien dazu iwo gespeichert?
Als ich begann, mich für ein eigenes OS zu interessieren, kaufte ich mir den Silberschatz(5th edition): http://www.amazon.de/Operating-System-C ... 515&sr=8-1
Linus Torvalds programmierte Linux mit dem Wissen aus dem Tanenbaum: http://www.amazon.de/Modern-Operating-S ... _eb_text_b

Der Tanenbaum ist afair ins Deutsche übersetzt, der Silberschatz hat in jedem Fall ein Kapitel über Paging.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 11, 2008 11:58 am

Xin hat geschrieben:Bin beeindruckt, würde ich mir gerne mal ansehen.
Danke!
Ist kein Problem.
Hab den ganzen Code alles da (ist nur in 5 Versionen unterteilt.).
Die letzte Version kann (noch) nicht alles, ist dafür aber besser auskommentiert (vorallem in EINER Sprache, und nicht in 2...^^). Version 3 kann dafür alles, ist aber teilweise deutsch (von mir), teilweise englisch (von mir) und teilweise englisch (aus einem Tutorial, aus dem ich Codeteile übernommen hab) kommentiert und "etwas" unübersichtlich.

Version 3 ist dazu viel aus diesem Tutorial genommen, Version 5 ist (aufbauend auf dem Wissen, dass ich aus dem Tutorial hab) komplett selbst geschrieben.

Ich könnte auch die einzelnen Funktionen reinstellen.
Oder ich lade den kompletten Code iwo hoch (hab Inetseiten mit ftp).

Was ich noch vergessen hab^^ : der Timerinterrupt funktioniert in Version 3 (in 5 weiß ich's nicht) auch.

Ich kann auch die fertige, bootfähige Datei hochladen.
Muss mit GRUB gebootet werden, das OS hat keinen eigenen Bootloader (das kann GRUB besser^^)

MfG
Daniel


P.S: Was ich natürlich nicht übernehmen kann, ist Haftung, falls was kaputt geht. Bei mir läuft's aber alles ohne Probleme.

*edit*Hochladen ins Forum geht leider nicht, Dateierweiterung ist nicht erlaubt*/edit*
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8472
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Fr Jul 11, 2008 12:09 pm

Dirty Oerti hat geschrieben:
Xin hat geschrieben:Bin beeindruckt, würde ich mir gerne mal ansehen.
*edit*Hochladen ins Forum geht leider nicht, Dateierweiterung ist nicht erlaubt*/edit*
Aktuell ist der Proggen.org Server noch recht leer. Möchtest Du ein Repository?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 11, 2008 12:21 pm

Ich muss gestehen, dass ich nicht weiß, wie man damit umgeht bzw wie genau du das jetzt meinst^^
Aber grundsätzlich schon.
Wenn dadurch der Server nicht unnötig belastet wird.

Aktiv an dem Projekt programmieren werd ich wieder in so 1-2 Wochen. Vllcht auch etwas später.
Dann sind nämlich alle Schularbeiten rum und auch meine Segelscheinprüfung ist dann (hoffentlich) bestanden.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8472
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Xin » Fr Jul 11, 2008 12:38 pm

Dirty Oerti hat geschrieben:Ich muss gestehen, dass ich nicht weiß, wie man damit umgeht bzw wie genau du das jetzt meinst^^
Aber grundsätzlich schon.
*lach* Ich weiß nicht, was es ist, aber wenn's kostenlos ist, dann nehme ich es ;-)

Ein Repository ist ein Archiv, in dem man seinen Code ablegen kann, zum einen als Backup, zum anderen kommt man alle Versionen wieder ran, die man einmal dort gespeichert hat und wenn mehrere Leute an einem Code arbeiten, wird der Code im Repository automatisch zusammengefügt. Ich benutze Repositories zum Beispiel, um Code von Desktop und Laptop wieder zusammenzuführen.

Auf proggen.org läuft ein Subversion-Server, zur Bedienung von Subversion schicke ich Dir bei Bedarf ein (noch unfertiges) PDF, womit Du aber ein Repository bereits soweit erklärt bekommst. Da es noch unfertig ist, nehme ich auch gerne Fragen und Kritik entgegen ^^
Dirty Oerti hat geschrieben:Wenn dadurch der Server nicht unnötig belastet wird.
Du entscheidest, ob es nötig ist und solange Du keine gigantisch großen Dateien hochlädst. (Executables und alles, was durch das Kompilieren erzeugt werden kann, sind tabu)

Sofern Bedarf ist, sag mir, wie das Repository heißen soll und wie Du die Zugriffsrechte Regeln möchtest.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Kernelprogrammierung - Suche: Ansätze für Speicherverwaltung

Beitrag von Dirty Oerti » Fr Jul 11, 2008 12:47 pm

Xin hat geschrieben:Auf proggen.org läuft ein Subversion-Server, zur Bedienung von Subversion schicke ich Dir bei Bedarf ein (noch unfertiges) PDF, womit Du aber ein Repository bereits soweit erklärt bekommst. Da es noch unfertig ist, nehme ich auch gerne Fragen und Kritik entgegen ^^
Bedarf ist vorhanden :)
Soll ich dir meine Emailaddresse per PN schicken?

Was Subversion ist, weiß ich schon. Nur damit gerabeitet hab ich noch nie. Ich hatte es mal unter Windows versucht, bin aber kläglich gescheitert^^.

Was ein Repository ist...naja...ein Platz, wo man seinen Code ablegt, damit jeder drauf zugreifen kann. (Bsp: Linux-Repositories). Stimmt ja soweit, oder?
Ich weiß nur nicht, wie man damit umgeht. Also auch von hier direkt vom Rechner aus.

Gigantische Daten hab ich eigntl nicht (noch..).
Selbst das Executable Version 3 hat nur 29,8 KB...

Interessieren würde mich das natürlich nun schon :)
Das Beste ist aber, wenn du mir erstmal dieses PDF schickst, damit ich mich ein bisschen damit vertraut machen kann. :)
Xin hat geschrieben:*lach* Ich weiß nicht, was es ist, aber wenn's kostenlos ist, dann nehme ich es ;-)
So in etwa^^ :D

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten