Speicherverwaltung

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Speicherverwaltung

Beitrag von Dirty Oerti » Mo Dez 08, 2008 6:01 pm

cloidnerux hat geschrieben:Also macht die Speicherverwaltung nihts anderes als nur für Paging Frames zu reseervieren und dan die richtige stelle zu setzen.
Du hast es auf den Punkt gebracht.

Die unterste Ebene der Speicherverwaltung hat nicht mehr zu tun.

Wegen deiner Frage wie du das Ende des benutzten Speichers herausfindest:
Du benutzt doch sicherlich ein Linkerskript...
Dort kannst du "Zeiger auf Variablen" eintragen, auf die du dann aus dem C-Code zugreifen kannst. Setzt du einen ans Ende (im Linkerskript), so kannst du feststellen, wo dein Speicher aufhört.

Siehe dazu am besten: Die Feinheiten des Linkens
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
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Speicherverwaltung

Beitrag von cloidnerux » Mo Dez 08, 2008 6:03 pm

ähm, naja bin net so ganz bewandert damit.
Normalerweise machen das Programme für mich.
Redundanz macht wiederholen unnötig.
quod erat expectandum

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

Re: Speicherverwaltung

Beitrag von Dirty Oerti » Mo Dez 08, 2008 6:08 pm

cloidnerux hat geschrieben:ähm, naja bin net so ganz bewandert damit.
Normalerweise machen das Programme für mich.
Nur welches Programm läuft schon ohne funktionierendes Betriebssystem... ;)

Das ist ja gerade die Sache bei der Kernelprogrammierung, dass du dich nicht auf iwelche anderen Programme verlassen darfst.
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
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Speicherverwaltung

Beitrag von cloidnerux » Mo Dez 08, 2008 6:13 pm

Tuhe ich ja auch nicht.
Aber ich hab mehr in C++ unter windows Programmiert.
Das Problem für mich ist nur das mit dem linkerscript zu kapieren.
Wiel du glaube cih auch nur das von lowlevel nutzt.
Ich hab mich nicht wirklich damit beschäftigt.
Mehr mit den Programmieren des Kernels.
Redundanz macht wiederholen unnötig.
quod erat expectandum

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

Re: Speicherverwaltung

Beitrag von Dirty Oerti » Mo Dez 08, 2008 6:25 pm

Du wirst dich damit beschäfftigen müssen, anders geht es nicht.
Das Linkerskript hat Ahnlichkeit mit mit dem von LowLevel, kopiert habe ich es aber nicht. Mein Linkerskript ist eine Mischung aus vielen^^
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
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Speicherverwaltung

Beitrag von cloidnerux » Mo Dez 08, 2008 6:29 pm

Selber grund.
Ich schließe jezt aus deinen Beiträgen, das ich selber google bemühen muss.
Aber Danke für die hilfe.

Werde jezt mal speicherverwaltung bereitstellen.

Aber ist das alles was mit speicherverwaltung zusammen hängt?
Sieht iwi so wenig aus.
Redundanz macht wiederholen unnötig.
quod erat expectandum

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

Re: Speicherverwaltung

Beitrag von Dirty Oerti » Mo Dez 08, 2008 6:41 pm

cloidnerux hat geschrieben:Ich schließe jezt aus deinen Beiträgen, das ich selber google bemühen muss.
Aber Danke für die hilfe.
Dirty Oerti hat geschrieben:Siehe dazu am besten: Die Feinheiten des Linkens
Oder was meinst du?
cloidnerux hat geschrieben:Aber ist das alles was mit speicherverwaltung zusammen hängt?
Sieht iwi so wenig aus.
Das ist die unterste Ebene.
Du musst noch Verwaltung für deinen Kernel bereitstellen ( a la int *pointer=malloc(sizeof(int)); und free(pointer); ), außerdem musst du verwalten, welche Pages denn nun geladen/benutzt sind. Du musst herausfinden, welche man (später) am besten auslagert. Etc.
Das hört sich wenig an, ist aber viel.

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
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Speicherverwaltung

Beitrag von cloidnerux » Mo Dez 08, 2008 6:50 pm

Siehe dazu am besten: Die Feinheiten des Linkens
Toles tutorial, soltest du aber bei gelegenheit weiterschreiben.
Muss ich dochmal bei google suchen.
a la int *pointer=malloc(sizeof(int)); und free(pointer); ),
meinst du hier dasselbe malloc, das einfach nur ne page reserviert oder was??

Und wozu die speichergröße??
wenn ich immer ne kompltte page reservire oder sit das nur dafür, das ich bei größeren speichermengen mehr pages reservire?
werde mal einfach anfangen und das später einbauen.

THX
Redundanz macht wiederholen unnötig.
quod erat expectandum

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

Re: Speicherverwaltung

Beitrag von Dirty Oerti » Mo Dez 08, 2008 9:20 pm

Aaalso:

Was fehlt im Tutorial in der Linksektion?

Ich habe dir den Link gegeben, damit du weißt, wie du das Ende des benutzten Speichers erfahren kannst.

Zur Speicherverwaltung:

Ebene 1:
Allokieren / Freigeben von kompletten Frames ( = 4 KB )
z.B alloc_frame() und free_frame( )

Ebene 2:
Paging und alles was dazu gehört :)
(Page Replacement Strategien, Verwaltung des Pagings allgemein)

Ebene 3:
Heap's und "genauere Speicherverwaltung"
z.B. malloc() und free() wie du sie auch aus den ganz normalen Programmen kennst.

Nun muss man nur unterscheiden:

Ebene 1 macht mit großer Sicherheit der Kernel.
Ebene 2 anfangs auf jedenfall der Kernel, später evtl ein Task.
---------------
Ebene 3 läuft in jedem Programm (durch eine Libary eingebungen) ab.

Natürlich kann (sollte) der Kernel auch eine "eigene Ebene 3" besitzen, um Strukturen für neue Tasks etc dynamisch bereitstellen zu können.

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
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Speicherverwaltung

Beitrag von cloidnerux » Di Dez 09, 2008 5:38 pm

Was fehlt im Tutorial in der Linksektion?
Ich habe dir den Link gegeben, damit du weißt, wie du das Ende des benutzten Speichers erfahren kannst.
Sry, war da gerade in eile und hab mich ein wenig "Unfreundlich" ausgedrückt.
Natürlich bin ich dir dankbar über jeden Link den du mir gibst.

Danke für die Hilfe.
Werde also ein Bisschen programmieren.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten