Hallo Rolf,
Die Hervorhebung des "seit" ist gut.
Okay, ich habe "das gibt's noch" und "das braucht man noch" verwechselt. Und Anwendungen für PAE vergessen.
ja, und du scheinst einen Zweck der Segmentierung zu vergessen. Der eine ist die Vergrößerung des Adressraums durch Segmente, innerhalb derer dann wieder "herkömmlich" adressiert wird. Das war das Konzept der 16bit-Architektur der 8086er-Prozessoren (und AFAIK auch noch 80186).
Ein anderer ist aber die Abgrenzung unterschiedlicher Adressräume voneinander. Das wurde bei der Intel-Familie mit dem 286er eingeführt. Damit kann man die Adressräume von Betriebssystem und Anwendersoftware voneinander trennen, so dass die Anwendung nicht mehr auf Speicherbereiche zugreifen kann, die dem OS "gehören" - obwohl sie es von der Adressierung her könnte. Wenn man den Gedanken konsequent weiterverfolgt, kann man so auch die Speicherbereiche mehrerer Anwendungen untereinander abgrenzen. Windows macht das AFAIK seit 4.0 so, davor gab es nur die Trennung zwischen OS und der Gesamtheit aller Anwendungen. So konnte ein amoklaufendes Programm alle anderen mit in den Abgrund reißen.
Die 386er haben 4GB Segmente und ein Programm muss im Normalfall seine Segmentregister nicht mehr ändern, wenn es läuft.
Ja.
Es bedeutet aber nicht, dass das Segmentierungsmodell der x86 Prozessoren relevant für das Konzept statischer Variablen ist. Oder dass es sinnvoll ist, auf x86-Prozessoren ein eigenes Segment für statische Variablen vorzuhalten.
Stimmt, das hat damit überhaupt nichts zu tun.
Man verwendet nicht ohne Not zu viele Segmente, weil das Laden eines Segmentregisters ab .286 mehr ist als 32 Bits in ein Register zu schieben und Zeit kostet.
So isses.
Ciao,
Martin
"Wenn du mit Corona ein Problem hast, trink doch stattdessen mal ein Beck's!" (zynisch-flacher Witz meines Nachbarn)