Sun, 11 May 1997 05:43:36 -0400 (EDT)
> > My proposal is to simply have all of memory as cache for disk,
> > looking at memory in chunks as mapping to disk as chunks.
> All you've described is virtual memory.
All I've described is persistent virtual memory
> This works fine if there isn't any sharing of that memory
> with other machines/address spaces. That is the hard part.
> You've also limited your total system data
> to the size of your address space, which is 4gb at best.
> Any you also must make sure GC doesn't need to
> scan over the whole disk-resident world.
It also works fine if there is sharing. A chunk is a chunk is a chunk.
I don't care where it is, it knows how to get to storage.
If you're dealing with multiple address systems, then you necessarily need
ipc. Address spaces are also likely to grow to 64 bit in the near future as
32 bit machines go obsolete. I don't see this as a real issue.
Note that since we're dealing with blocks, we get 4 gig of _blocks_ not bytes.
So, if our block is 4k, we get 17,592,186,044,416 bytes to play with.
This should be enough, although this pushes our references to 44 bits.
The gc issue is the same for any large system.
Using a generational gc is a simple fix here, it also fits in with
your paging system since the emphemeral generation will be the one most needing
cache, with long term storage often happily swapped out for long periods.