Thank you for answering!
Typically, I want to free a part of this ds, e.g., in the middle of it. Like UUUUUU -> UUUFFU (where Used and Free abbreviation used), keeping mapping and content for all old addresses except freed ones, in the «middle» of area [base_rw, base_rw+SIZE) from above.
How about using multiple dataspaces (chunks) in the first place, ie. each U is a separate dataspace and all dataspaces are mapped into a consecutive region in virtual memory?
I assume that granularity will be too high. e.g. every U could correspond to single 4k page, and this will give a high related metadata structures overhead (need to store it for every page). Also, performance will be terrible - imagine that I will try to allocate around 1Gb of ram with "4k pages data spaces» via separate attach_at() and related nested RPC calls…