_hkl: i386 Speichermodell

Beitrag lesen

Hello,

These :

Die grossen Strings bau ich natuerlich durch Konkatenierung zusammen.
Er indiziert wahscheinlich die Teilbaüme nicht um

Klar, wenn ein "String" größer als ein Segment wird, muss er vermutlich sowieso zusammengesetzt werden, oder wird bei x366 immer über die klassischen Segmentgrenzen hinweg gearbeitet?
Ich weiß nicht mehr, wie das im Protected Mode funktioniert mit very large objects.

Die Segmentdeskriptoren haben eine 32-Bit Startadresse
und ein 20-Bit Limit.
Wenn uudem das Granularitätsbit (DW #2 / Bit #23 = Bit #54) gesetzt ist, eine Granularität von 4K ( statt 1 Byte )
4K = 2^12
2^12*2^20 = 2^32 - wie es sein soll ;-)

Aber das Paging ist wohl eher das Problem

32 Bit Basisadresse in CR3

Lneare Adresse :
Pageverzeichnis# (10Bit)
Tabelle# (10Bit)
Offset (12Bit)

( Die Einträge im Verzeichnis sind selbst 32Bit lang, in der Tabelle  auch, aber von letzterem sind nur Bit #12 - Bit #31 nutzbar; Bit #0 ist das "Present Bit" das der Proz zum Page Faulting, also das OS zum Swapping braucht. )

Aber der Offset halt nur 2^12 = 4k = Pagesize des x386.

Allerdings können natürlich mehrere aufeinanderforlgende Pages durch aufeinanderfolgende Einträge inder Pagetabelle in einen logischen Block fallen.

Wobei mir gerade mal ganz peinsam einfällt ob NT dass ich nicht weiss  ob NT eigentlich _immer_ Paging nutzt.
Ich glaub aber schon dass das so ist.

Technisch zwingend ist das ja aber nicht - der Mechanismus von PageFaulting / Exception / Handler kann auch ( wie z.B. auf nem Alpha ) nachgebildet werden.

Aber wenn Du mal wieder im PHP Quellcode arbeitest
;-) ;-) ;-)

unsigned long _cr0;

_asm {
   push eax
/* _THIS_ way shouldn't cause an exception */
   mov eax,cr0

/* _THIS_ on the other hand
   mov cr0, eax
   is an isuue Bootstraps ;-) */

push eax
   pop _cr0
   pop eax
}

// ;-)

Bit #31 ist "Paging Enabled".

Aber ich glaub schon das das nach dem Boot immer gestzt ist; im TSS ist CR0 gar nicht enthalten.

Das ist so das was ich zum Speichermodell des Wintel x386 zusammenkriege.

Grüsse

Holger

Der Einsprungspunkt wird durch den Descriptor für ein Datensegment bestimmt. Der zeigt ja eigentlich auf einen 32-Bit-Wert. Direkt kommt man an den ja gar nicht dran. Und das Dereferenz-Register hat im Prinzip ja auch 32 Bit...

P.S.: Wo klemmt's denn bei den Buffern?
Auch reiner Lesezugriff durch Mutex/Semaphore/Teufelwasauchimmer blockiert?

Ich habe das noch nicht genauer untersucht.
http://www.php.net/manual/en/function.stream-set-write-buffer.php

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

0 48

effektive coden

ich
  • php
  1. 0
    Spächterle
    1. 0
      ich
      1. 0
        Spächterle
        1. 0
          Tom
          1. 0
            Spächterle
            1. 0
              Tom
              1. 0
                ich
                1. 0

                  for vs. foreach

                  _hkl
                2. 0
                  Sven Rautenberg
                  1. 0
                    _hkl
                3. 0

                  PHP-Array contra String

                  Tom
                  1. 0
                    _hkl
                    1. 0
                      Tom
                      1. 0
                        _hkl
                        1. 0
                          Tom
                          1. 0

                            Liegt's an der Konkatenierung ?

                            _hkl
                            1. 0
                              Tom
                              1. 0

                                i386 Speichermodell

                                _hkl
                                • programmiertechnik
            2. 0

              ...und Erbsen zählen ( oder Schafe )

              _hkl
              • menschelei
  2. 0

    Performance testen

    Tom
  3. 0
    Mathias Brodala
    1. 0

      Performance steigern

      Tom
      1. 0
        Beat
        1. 0
          Tom
    2. 0
      Blaubart
    3. 0
      Andreas Görtz
      1. 0
        seth
        1. 0
          Andreas Görtz
  4. 4
    Blaubart
  5. 0
    Erik
    1. 0

      code-layout und -performance

      seth
      • meinung
  6. 0
    Gunnar Bittersmann
  7. 0
    _hkl
  8. 0
    dedlfix
  9. 0
    Spider
  10. 0
    Tobias Kloth
  11. 1
    King^Lully
    1. 0

      effizient antworten

      _hkl
      • menschelei
      1. 0
        King^Lully
        1. 0
          King^Lully
          1. 0
            King^Lully
            1. 0
              _hkl
              1. 0
                King^Lully
                1. 0

                  Empathie und Kekse

                  _hkl
          2. 0
            Der Martin
        2. 0
          Der Martin
          1. 0
            King^Lully