Autor Thema: Expand Down Segment  (Gelesen 4055 mal)

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« 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?
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #1 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.
*post*

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #2 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)
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #3 am: 29. July 2006, 14:30 »
Ich nehme an du hast also sowieso kein flaches Speichermodell?
*post*

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #4 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:
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #5 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
In the Future everyone will need OS-64!!!

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #6 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?
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #7 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

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #8 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.
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

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #9 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
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 29. July 2006, 15:19 »
Exact

 

Einloggen