Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: MNemo am 29. July 2006, 14:07

Titel: Expand Down Segment
Beitrag von: MNemo am 29. July 2006, 14:07
Also ich hatte vor soe ein Expand Down Segment für meine Stack zu verwenden. Nun hab ich mal darüber informiert, aber leider muste ich fest stellen, dass nicht überall das gleiche steht. :roll:

z.B. beim Limit
ich hab gelesen das der offset mit <Limit> anfängt und mit 0xFFFF(32bit 0xFFFFFFFF) aufhört
ich hab aber auch schon gelesen das der Offset mit mit 0xFFFF bzw. 0xFFFFFFFF aufhört und das segment insgesamt <Limit> größ ist
nun ist da leider ein größer unterschied 8)

Könnt ihr mir sagen wie das jezt wirklich funzt?
Titel: Expand Down Segment
Beitrag von: Legend am 29. July 2006, 14:19
Nun ja, auch wenn der Stack von oben nach unten wächst, brauchst du dafür kein Expand-Down Segment.

Und eigentlich wird da nur ein Vorzeichen geändert soweit ich weiss. So endet das Segment nicht bei Offset + Limit, sondern bei Offset - Limit. Da bin ich mir nicht mehr 100%ig sicher, ich hab das Teil nie wirklich benutzt.
Titel: Expand Down Segment
Beitrag von: MNemo am 29. July 2006, 14:28
Ich will das Expand Down segment für den Stack weil man es bei stack overflow erweitern kann.(hab ich gelesen)
Titel: Expand Down Segment
Beitrag von: Legend am 29. July 2006, 14:30
Ich nehme an du hast also sowieso kein flaches Speichermodell?
Titel: Expand Down Segment
Beitrag von: MNemo am 29. July 2006, 14:33
Zitat von: Legend
Ich nehme an du hast also sowieso kein flaches Speichermodell?

Tut mir leid aber ich wieß noch nicht ma was das ist :oops:
Titel: Expand Down Segment
Beitrag von: bitmaster am 29. July 2006, 14:47
Zitat von: MNemo
Zitat von: Legend
Ich nehme an du hast also sowieso kein flaches Speichermodell?

Tut mir leid aber ich wieß noch nicht ma was das ist :oops:
Keine Angst, wir vergeben dir. ^^ Also wenn ich jetzt nichts falsches sage, ist das 0-Ende sprich im 32 Bit PM 0 - 4 GByte Segmente. Es wird dann einfach durch Offsets und Paging geschützt. Geht z.B. beim Lmode nicht anders.

bitmaster
Titel: Expand Down Segment
Beitrag von: MNemo am 29. July 2006, 15:07
Also so ein flaches Speichermodell benutz ich nicht(Stell ich mir auch ganzschön komplieziert vor)
Wir da bei jedem Taskwechsel dann die pages vertaucht, damit der Offset in den Tasks stimmt?
Titel: Expand Down Segment
Beitrag von: nooooooooos am 29. July 2006, 15:13
Ein flaches Speichermodell ist eigentlich überhaupt nicht kompliziert.

Da hast du nur 2 Deskriptoren in der GDT und arbeitetst nur mit den Offsets.

Wegen den Tasks. Jeder Task hat ja das Register CR3. Darin wird eine Adresse auf eine Tabelle, welche alle erlaubten Speicherbereiche für den Task mappt, definiert. Bei einem Taskwechsel wird also auch das CR3 automatisch gewechselt.


Noooooooooooos
Titel: Expand Down Segment
Beitrag von: bluecode am 29. July 2006, 15:16
Zitat von: MNemo
Also so ein flaches Speichermodell benutz ich nicht(Stell ich mir auch ganzschön komplieziert vor)

Genau das Gegenteil ist der Fall.

Zitat von: MNemo
Wir da bei jedem Taskwechsel dann die pages vertaucht, damit der Offset in den Tasks stimmt?

Beim Taskwechsel wird nur das page-directory neu gesetzt. Damit ist das virtuelle Adresse -> physikalische Adresse für jeden Prozess anders. Und damit kannste auch deine ganze Segmentierung weglassen. btw. damit kann man auch bei nem Stack overflow ganz einfach den stack vergrößern.
Titel: Expand Down Segment
Beitrag von: MNemo am 29. July 2006, 15:19
Das klingt wirklich gar nicht so kompliziert.
Da werd ich mich ma mit beschäftigen.
thx für eure hilfe
Titel: Expand Down Segment
Beitrag von: nooooooooos am 29. July 2006, 15:19
Exact