Sono confuso dallo specification of mmap.allineamento e granularità di mmap
Sia pa
tramite l'indirizzo di ritorno della mmap (la stessa della specificazione)
pa = mmap (addr, len, prot, bandiere, fildes, spento);
A mio parere, dopo la chiamata di funzione successo la seguente gamma è valido
[pa, pa + len)
La mia domanda è se la gamma dei seguenti è ancora valido?
[round_down (pa, pagesize), round_up (pa + len, pagesize))
[base, base + size] per breve
Vale a dire:
- è il
base
sempre allineato sul limite della pagina? - è il
size
sempre un multiplo di pagine (la granularità è pagine in altre parole)?
Grazie per il vostro aiuto.
penso che è implicito in questo paragrafo:
L'argomento off è vincolato ad essere allineati e dimensionata in base al valore restituito da sysconf() quando passa _SC_PAGESIZE o _SC_PAGE_SIZE. Quando viene specificato MAP_FIXED, l'applicazione deve garantire che l'argomento addr soddisfi anche questi vincoli. L'implementazione esegue operazioni di mappatura su pagine intere. Pertanto, mentre l'argomento len non deve soddisfare un vincolo di dimensione o di allineamento, l'implementazione deve includere, in qualsiasi operazione di mappatura, qualsiasi pagina parziale specificata dall'intervallo [pa, pa + len).
Ma non sono sicuro e non ho molta esperienza su POSIX.
- Vi prego di mostrare un po 'più esplicito e più definitiva prove
- O mi mostrano almeno un sistema che supporta POSIX ed ha un comportamento diverso
Grazie ancora qua.