Mill Computing, Inc. Forums The Mill Architecture fork() Reply To: fork()

PeterH
Participant
Post count: 41

global_address = local_address xor shift(turf_id) sounds like a kind of lightweight segmentation. Shades of the old 8086 segmentation if it had a virtual memory mapper. Though with global address space mapping 1:1 to every local space. And every local space mapping to every other, though a use for that isn’t obvious. An obvious implication is that when allocating global space to a turf some strategy must be used to avoid a collision with a forked child turf. In regard to David’s question, local space to a turf need not be contiguous, though it must not be allocated mindlessly.

I’m thinking that if you had code like

mystruct * foo = malloc(…);

malloc() would return a local pointer, which the process would convert to global when needed. Is this handled by the memory IO operations?

On the other hand, a service returning a pointer might return a global pointer, such as for a file structure open for both parent and child.