Home TypdefinitionenTypdefinitionen Memory-Control-Block (MCB) in MagiCMemory-Control-Block (MCB) in MagiC MRETSMRETS

I.11 Memory-Deskriptor (MD) in TOS

typedef struct md
{
    struct md *m_link;      /* Zeiger auf nächsten MD    */
    int32_t      m_start;   /* Anfangsadresse des Blocks */
    int32_t      m_length;  /* Länge des Blocks          */
    BASEPAGE  *m_own;       /* Zeiger auf die Basepage   */
} MD;

Hinweis: Die Komponente m_own zeigt dabei auf die Basepage des Prozesses, dem der Speicherblock gehört.

Diese Strukturen werden in der internen Speicherverwaltung von TOS (aber nicht von MagiC!) verwaltet. Diese Deskriptoren, soweit benutzt, hängen in drei Speicherlisten, und zwar für freie Blöcke, belegte Blöcke und für den nächsten zu belegenden Block (mem_rover). Mit dem mem_rover-Konzept sollte erreicht werden, daß aufeinanderfolgende Malloc-Aufrufe möglichst aufeinanderfolgenden Speicher anfordern (wurde an anderer Stelle schon als Fehler bezeichnet). Damit sollte die Segmentierung verringert werden.

Diese Idee ist jedoch unbrauchbar, wenn mehrere Programme gleichzeitig laufen und abwechselnd Mallocs machen. Das von Atari implementierte Konzept hat den Vorteil, daß es unempfindlich gegen amoklaufende Programme ist, da die MDs im Systemspeicher liegen, weit weg vom Benutzerspeicher. Ein bekannter Nachteil des beschriebenen Konzepts ist, daß nur eine sehr begrenzte Anzahl von Malloc-Aufrufen möglich sind, da jeder Aufruf einen MD des begrenzten Systemspeichers aufzehrt; dieser wird außerdem noch massiv von geöffneten Ordnern und Dateien belastet. Ein weiterer Nachteil der Speicherverwaltung des TOS: Wenn ein Programm einen Speicherblock überlaufen läßt, d.h. über dessen Ende hinausschreibt, bleibt dies i.a. völlig unbemerkt.

Besonders im Multitaskingsystem ist die Gefahr eines überschriebenen Speicherblocks ungleich höher als im TOS. Ferner ist die Anzahl der benötigten Speicherblöcke sowie auch die der Ordner (jedes Programm hat eigene Dateien und Standardverzeichnisse) wesentlich höher. Aus diesem Grund hat MagiC ein völlig anderes Konzept; dort gibt es nur noch eine Speicherliste deren Zeiger auf den ersten MCB zeigt.

Querverweis: GEMDOS   MCB   MPB   Speicherverwaltung   themd


Home TypdefinitionenTypdefinitionen Memory-Control-Block (MCB) in MagiCMemory-Control-Block (MCB) in MagiC MRETSMRETS