FYI - mo' work on std.allocator

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun May 4 21:05:01 PDT 2014


On 5/4/14, 8:06 PM, Marco Leise wrote:
> Virtual memory allocators seem obvious, but there are some
> details to consider.
>
> 1) You should not hard code the allocation granularity in the
>     long term. It is fairly easy to get it on Windows and Posix
>     systems:
>
> On Windows:
>    SYSTEM_INFO si;
>    GetSystemInfo(&si);
>    return si.allocationGranularity;
>
> On Posix:
>    return sysconf(_SC_PAGESIZE);

I've decided that runtime-chosen page sizes are too much of a 
complication for the benefits.

> 2) For embedded Linux systems there is the flag
>     MAP_UNINITIALIZED to break the guarantee of getting
>     zeroed-out memory. So if it is desired, »zeroesAllocations«
>     could be a writable property there.

This can be easily done, but from what MAP_UNINITIALIZED is strongly 
discouraged and only implemented on small embedded systems.

> In the cases where I used virtual memory, I often wanted to
> exercise more of its features. As it stands now »MmapAllocator«
> works as a basic allocator for 4k blocks of memory. Is that
> the intended scope or are you open to supporting all of it?

For now I just wanted to get a basic mmap-based allocator off the 
ground. I am aware there's a bunch of things to do. The most prominent 
is that (according to Jason Evans) Linux is pretty bad at munmap() so 
it's actually better to advise() pages away upon deallocation but never 
unmap them.


Andrei



More information about the Digitalmars-d mailing list