Hi Valery,
I also know, that there is a support for managed dataspaces, or nested region maps, which could be useful here (at least, for implementing a shared memory area), but I also know, that nested region maps are not supported on all platforms (like Genode/Linux). So, it would be, possibly, better to avoid using them, unless really needed.
managed dataspaces are the only mechanism that allow the manual organization of virtual address-spaces ranges on Genode. From your description, I think that they suffice for your needs as long as each address space takes the initialization steps like obtaining the managed dataspaces from somewhere (a central service?) and attaching them at the desired local address. A managed dataspace can be of any size. It contains no mappings unless a real dataspace is attached within. Once the managed dataspace is attached to the local address space, the virtual-address area spanned by it is not used for any other mappings.
You are right in that managed dataspaces are somehow limited on Linux where it is not (easily) possible to remotely manipulate address spaces. But the feature set you need - preserving a virtual address-space area to be manually managed - should be covered. For reference, you may take a look at the handling of the stack area, which is a 256MiB-sized virtual-address space window that is sparsely populated with the stacks of the component-local threads.
Cheers Norman