no, imho, you need to group process A's selectors in a specific LDTa and process B's selectors in LDTb, so that memory resources from A are invisible to B and vice versa.
The process structure could carry the base address for the process, so that all the kernel has to do to access user-mode datas is to add process_base_address to user_provided_offset and use it as an offset in its own map_everything_data_segment ...
note that paging-based data sharing will probably remain preferable to segments-based sharing if the programming language do not support segmented architecture (C does not
