Pregunta

La llamada al sistema mprotect protege el área de memoria dentro de límite de página:

int mprotect(void *addr, size_t len, int prot);

Aquí len debe ser múltiplo de tamaño de página.

¿Hay alguna manera de proteger a pocos direcciones consecutivas, que no están alineados con límite de página es decir, len < pagesize?

¿Fue útil?

Solución

No me lo creo, no. La limitación se debe a la MMU tiene límites de hardware sobre cómo bien una granularidad que puede controlar. Hay tablas que contienen las restricciones de acceso y no se puede tener una entrada en la tabla para cada byte; la propia tabla usaría toda la memoria RAM. Así que en vez se hace más gruesa, con entradas de la tabla para cada página.

Usted puede ser capaz de hacer algo con Valgrind, si estás en Linux.

Otros consejos

No, no lo hay. El sistema de memoria virtual de su sistema operativo sólo funciona en el nivel de página, nada más pequeño que eso.

Creo que el siguiente enlace es lo que se esperaría T, U, pero tiene que esperar a que se libere.

https://software.intel.com/en-us/blogs/2013/07/22/intel-memory-protection-extensions-intel-mpx-support-in-the-gnu- cadena de herramientas

"MPX - Extensiones Intel® de protección de memoria" es lo que todos los programadores de C ++ quieren. Estoy muy esperando a él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top