Considerando Linux y 32 bit x86 arch hay una división 3: 1 del espacio de direcciones accesible de 4GB. El espacio de usuario tiene asignado 0-3 Gb, mientras que 3-4 Gb están asignados al kernel. ¿Cómo se transforma una dirección virtual que es mayor que 3Gb y por lo tanto se encuentra en el espacio de direcciones del kernel en la dirección física? ¿Las tablas de páginas entrarán en la imagen?traducción de dirección virtual del kernel
7
A
Respuesta
5
Hay algo de información en el libro de Mel Gorman Understanding the Linux Virtual Memory Manager.
La respuesta corta: Sí, el kernel configura las tablas de páginas para traducir la dirección física 0 a la dirección virtual 3 GiB. (Sección 3.7.1). Esto incluye la ubicación física en la que se cargó el kernel (generalmente 1MB en x86).
Cuestiones relacionadas
- 1. VA (Dirección virtual) & RVA (Dirección virtual relativa)
- 2. Comprensión de dirección virtual y espacio de dirección virtual
- 3. Linux 3/1 dirección virtual dividida
- 4. Entorno virtual para Linux Kernel Hacking
- 5. ¿Cómo traducir una dirección de memoria virtual a una dirección física?
- 6. Espacio de dirección del proceso frente a la memoria virtual
- 7. Asignación de direcciones físicas a la dirección virtual de Linux
- 8. VMWare - Dirección IP estática del sistema operativo virtual
- 9. No se puede escribir en la memoria kernel a través del módulo kernel de Linux (Ubuntu)
- 10. Memoria del kernel (entradas de direcciones virtuales) en TLB?
- 11. ¿Cómo escribir la memoria del espacio del kernel (dirección física) en un archivo usando O_DIRECT?
- 12. Símbolo exportado del kernel de Linux
- 13. desarrollo del kernel de Linux
- 14. Programación del kernel de Linux
- 15. Linux (Ubuntu), lenguaje C: Traducción de direcciones virtuales a físicas
- 16. Imprimir la dirección de la función de miembro virtual
- 17. módulo del kernel Linux compilar
- 18. Perforce Error de "Traducción del contenido del archivo"
- 19. Traducción del script R con gettext
- 20. puntero a la función: dirección física o virtual
- 21. ¿Impresiones de depuración del kernel de Linux?
- 22. Llamadas virtuales usando la dirección del miembro virtual puro. ¿Es legal?
- 23. Programación del controlador del dispositivo del kernel de Linux
- 24. Código fuente del kernel de Android 4.0?
- 25. función dentro del kernel de cuda
- 26. Del kernel al espacio de usuario (DMA)
- 27. Ubicación del Módulo Kernel de Linux
- 28. Dirección IP de sk_buff
- 29. ¿Dirección del puntero desreferenciado?
- 30. Recaptcha traducción
Gracias por la respuesta. Después de buscar en Google encontré que hay un #define PAGE_OFFSET que es de 3GB (configurable) y la dirección virtual del kernel tiene mapeo uno a uno a la dirección física obtenida simplemente restando PAGE_OFFSET de la dirección virtual del kernel y por lo tanto no usa tablas de páginas. Por favor, corríjame si estoy equivocado. – user593575
Ese simple mapeo facilita la implementación de virt_to_phys(): como dijiste, solo resta PAGE_OFFSET. Pero la paginación está habilitada, esto permite la traducción de direcciones virtuales a físicas en hardware, a medida que se extraen las instrucciones y se accede a los datos. –
Entiendo tu punto. Las tablas de páginas siempre se utilizan cuando la búsqueda está habilitada independientemente de que la dirección virtual pertenezca al kernel o al espacio de usuario. (¡Ay! No puedo votar porque requiere un mínimo de 15 puntos) – user593575