Autor Thema: Speicherproblem  (Gelesen 2501 mal)

Hunter

  • Beiträge: 28
    • Profil anzeigen
Gespeichert
« am: 30. March 2009, 15:45 »
Hallo,

und zwar habe ich folgendes Problem:

Wenn ich in meinem Betriebssystem beispielsweise größere Dateien von CD in den Speicher lade (BMP->Hintergrundbild), kommt es immer zu ungewöhnlichen Problemen. So kann es sein, dass plötzliche der Maus/Tasterturtreiber nich mehr funktioniert, oder keine weiteren Datein von CD geladen werden können, da der Treiber nicht mehr funktioniert.

Die Vorgehensweise ist wie folgt:
In meinem Betriebssystem verwende ich Paging. Dabei befindet sich das Pagedirectory auf Speicherstelle 0x400000 und die Pagetable auf 0x401000

Der Heap startet ab 0x801000. Bevor ich eine Datei lade allociere ich den benötigten Speicher ( unsigned int *temp = (unsigned int*)malloc( 0x1000 );)

Der CD-Romtreiber lädt dabei beispielsweise eine Grafik auf die Adresse von "temp". Meistens kann die Datei vollständig geladen werden und auch erfolgreich angezeigt werden. Jedoch spielen nach dem Dateiladen wie bereits erwähnt, sämtliche Treiber (Maus/Tastatur, ATAPI, ...) verückt bzw. funktionieren nicht mehr (richtig).

Hat jemand von euch eine Idee woran das liegen könnte? Wird etwa ein wichtiger Speicherbereich überschrieben?

MFG
Hunter

jgraef

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 30. March 2009, 17:07 »
Woher der Fehler kommt, kann ich aus den bescheidenen Informationen jetzt nicht erkennen. Aber eine gute Methode solch einen Fehler zu finden, ist es mit z.B Debugausgaben die Quelle des Fehlers einzugrenzen.

chris12

  • Beiträge: 134
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 30. March 2009, 17:08 »
ich kenn mich zwar nicht so aus, aber es könnte doch sein, dass du, wenn die datei zu groß ist, speicher bereiche dahinter überschreibst

ich weiss zwar nicht ob es wirklich nötig wäre, schreib doch mal deine speichernutzung auf sprich wo eine datei (kernel, treiber etc) anfängt bzw wo sie endet
OS? Pah! Zuerst die CPU, dann die Plattform und _dann_ das OS!

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 30. March 2009, 18:37 »
Eventuell allozierst du Pages, welche eigentlich belegt sind (durch Kernel zB) du aber in deinem Allokator für physische Pages leider als frei markiert hast.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

 

Einloggen