Re:Address Spaces
Posted: Wed Oct 30, 2002 8:21 am
Tim, how would you implement your "split" ? with segments, i guess, giving each task a DPL-3 code & data descriptor. But then the question remains: what prevents shared process A to guess process B's data selector and start writing into it ? they'll be both at a DPL of 3 ...
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
)
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
