remap_pfn_range
función (utilizado en mmap
llamada en el controlador) se puede utilizar para asignar la memoria del núcleo al espacio del usuario. ¿Cómo se hace? ¿Alguien puede explicar pasos precisos? Kernel Mode es un modo privilegiado (PM) mientras que el espacio de usuario no tiene privilegios (NPM). En PM, la CPU puede acceder a toda la memoria, mientras que en NPM, parte de la memoria está restringida, la CPU no puede acceder a ella. Cuando se llama al remap_pfn_range
, ¿cómo puede acceder al espacio de usuario ese rango de memoria que estaba restringido solo a PM?¿Cómo remap_pfn_range reasigna la memoria del kernel al espacio del usuario?
En cuanto a remap_pfn_range
código allí es pgprot_t struct
. Esta es la estructura relacionada con el mapeo de protección. ¿Qué es mapeo de protección? ¿Es la respuesta a la pregunta anterior?
"parte de que coincide con el de la tabla de páginas del núcleo, que no se duplica para cada proceso" cuando dice que quiere usted decir que sólo hay una copia de la tabla de páginas para el mapeo del núcleo que es utilizado por todos los procesos ? ¿Podrían dar más detalles sobre cómo se podría hacer eso? – user31986
Quizás lea esto: http://turkeyland.net/projects/overflow/intro.php y de la imagen se puede ver ese proceso UN conjunto de tablas de páginas, cuya dirección base se cargará en el registro CR3. Y para todas esas direcciones virtuales (kernel específicamente) que se comparten entre procesos diferentes, todas tendrán el mismo valor apuntando a la misma página física. espero que se aclare. –
¿Cómo sostiene uno el "semáforo mm"? –