•  Back 
  •  Typdefinitionen 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File16.9.11  Memory-Deskriptor (MD)                                    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