Ho un set di file le cui lunghezze sono tutte multiple della dimensione della pagina del mio sistema operativo (FreeBSD 10). Vorrei convertire questi file in pagine consecutive di RAM da mmap()
, dandomi la possibilità di trattare una raccolta di file come una vasta serie di dati.Come trovare buchi nello spazio degli indirizzi?
Preferibilmente utilizzando le funzioni portatili, come posso trovare una regione sufficientemente ampia di spazio degli indirizzi non mappati in modo da poter essere sicuro che una serie di chiamate mmap()
in questa regione avrà esito positivo?
Posso sapere cosa stai provando? – Downvoter
@cad Vedere il primo paragrafo. Fondamentalmente, ho un set di dati che è diviso in più file e voglio mapparlo in una regione di memoria continua per trattarlo come uno. – fuz
Puoi 'mmap()' il primo file a lasciare che l'o/s scelga l'indirizzo per te, quindi prova a mappare gli altri file in modo contiguo con quello? Mi aspetto che funzioni ragionevolmente bene, ma non l'ho testato su nessun sistema, men che meno FreeBSD 10. –