It may be worth noting that you can move the window on a memory-mapped file, so you don't have to start from offset 0. In that way, each process can access a section of the huge file in manageable chunks, without eating all available memory.
Unless you're just looking to utilize as much memory as possible, but each process will be allocated its own separate 2GB anyway (the only difference will be that much of this will stay in physically memory, rather than being paged out.)