[Oberon] ETHO-plugin on Windows 10

eas lab lab.eas at gmail.com
Fri May 6 05:31:04 CEST 2016


That's a nice example of the advantage of knowing the underlying,
implementation details [somewhat], and thus being able to adjust
to avoid problems.

== Chris Glur.


On 4/30/16, Dieter <d.gloetzel at web.de> wrote:
> Hi everybody,
>
> I just want to inform you that ETHO-plugin for Windows runs as good on
> Windows 10 as on Windows 7.
>
> I did have some trouble because of a huge array (> 1000 MegaBytes), but
> this has been resolved by now.
>
> EMIL Zeller comments on this:
> =================================================================================================================
> 32-Bit Programme sind in Windows auf 2GB Speicher limitiert. Darin
> müssen Code, Heap und Stack Platz finden. Ihre Hauptdatenstruktur
> benötigt einen zusammenhängenden Block von > 1GB. Offensichtlich kann es
> passieren, dass kein so grosser Block mehr frei ist.
>
> In der mit PELinker erstellten EXE-Version wird der ganze Code in einem
> Stück an einer niedrigen Adresse alloziert. Dadurch bleibt bis zur 2GB
> Limite ein grosses zusammenhängendes Stück frei.
>
> In der Oberon-Umgebung werden die Module (mit Code) dynamisch auf dem
> Heap alloziert. Dadurch ensteht eine gewisse Fragmentierung des Heaps.
> Vorallem wenn man auch noch den Compiler verwendet und Module lädt und
> entlädt.
>
> Sie könnten versuchen die Datenstruktur in kleinere Blöcke aufzuteilen.
> z.B.:
>
> notes: ARRAY 24 OF POINTER TO ARRAY 3 OF ARRAY 500 OF ARRAY 64 OF NoteDesc;
>
> Sie müssen beim initialisieren dann natürlich die 24 Arrays einzel
> allozieren.
>
> i := 0; WHILE i < 24 DO NEW(notes[i]); INC(i) END;
> =================================================================================================================
> Shortened english version follows:
> ======================================
> 32-Bit programs are limited under Windows to 2 GB. In this space Code,
> Heap and Stack must fit in. The main data structure (of my program)
> needs a contiguous block of  > 1 GB.
> Obviously it may happen that such a large block is not available.
>
> In the EXE-version created with PELinker the whole code is allocated at
> a lower address. Therefore remains a larger space until the 2 GB limit.
>
> In Oberon it may happen that the Heap gets fragmented through dynamic
> loading and unloading modules.
>
> In my program I have the big array:
>
> notes: POINTER TO ARRAY 24 OF ARRAY 3 OF ARRAY 500 OF ARRAY 64 OF NoteDesc;
>
> Emil Zeller suggests instead:
>
>      notes:  ARRAY 24 OF POINTER TO ARRAY 3 OF ARRAY 500 OF ARRAY 64 OF
> NoteDesc;
>
> This will make smaller contiguous memory blocks and better fit in a
> fragmented memory structure.
>
> Regards,
> Dieter
>
>


More information about the Oberon mailing list