Se ho un puntatore e mi preoccupo delle prestazioni di accesso alla memoria, posso verificare se la successiva operazione su di esso attiverà un errore di pagina. In caso affermativo, è possibile progettare un algoritmo in modo che riordini le operazioni di loop per ridurre al minimo gli errori di pagina.Come sapere se un puntatore si trova nella memoria fisica o provocherà un errore di pagina?
Esiste un modo portatile (o linux/windows non portatile) per controllare un particolare indirizzo di memoria se l'accesso attiverà un errore di pagina?
Perché non basta usare questo algoritmo per tutto il tempo? Presumibilmente massimizzerebbe anche l'utilizzo della cache, che migliorerebbe comunque le prestazioni. –
Decisamente un modo portabile, non c'è niente per questo nella libreria C++. E molto improbabile nella pratica; le strutture necessarie che il kernel del sistema operativo utilizza per gestire la memoria virtuale devono, ovviamente, essere nello spazio del kernel protetto. Non vedo immediatamente un evidente problema di sicurezza con accesso in sola lettura; tuttavia questa è una porzione di dati così esoterica, è improbabile che qualsiasi sistema operativo spenda degli sforzi per esporre questi dati. –
[C'è in Windows e non si desidera utilizzarlo] (https://blogs.msdn.microsoft.com/oldnewthing/20060927-07/?p=29563/). – nwp