Se uno ha una macchina a 32 bit, un singolo programma non può indirizzare più di 2 ^ 32 byte o 4 GB. Fare uso di mmap () consente di superare il limite di 4 GB?
No, non puoi mai superare 4GiB di memoria indirizzabile simultaneamente per un binario a 32 bit. Di solito, il kernel prende la metà e si rimane con utente 2GiB. Alcuni kernel supportano una divisione di compromesso di 1GiB / 3GiB.
Tuttavia, è possibile chiedere al sistema operativo di mappare in memoria diverse porzioni di un file in momenti diversi, essenzialmente eseguendo il multiplexing temporale dello spazio di indirizzi disponibile. IMHO, a quel punto potresti anche non mappare la memoria e solo read()
dal file in buffer.