El espacio de direcciones virtuales del usuario para x86-64 con Linux tiene 47 bits de longitud. Lo que esencialmente significa que Linux puede mapear un proceso con un rango de direcciones virtuales de ~ 128 TB.¿Cómo soporta Linux más de 512 GB de rango de direcciones virtuales en x86-64?
Sin embargo, lo que me confunde es que la arquitectura x86-64 admite la tabla de páginas jerárquicas de 4 niveles definidas por ISA (dispuestas como radix-tree) para cada proceso. La raíz de la tabla de páginas solo puede asignar hasta 512 GB de espacio de direcciones virtuales contiguas. Entonces, ¿cómo Linux puede soportar más de 512 GB de rango de direcciones virtuales? ¿Utiliza varias tablas de página para cada proceso? En caso afirmativo, entonces para un proceso, ¿qué debe contener el CR3 (x86-64 para contener la dirección de la base de la tabla de páginas) para un proceso dado? ¿Me estoy perdiendo de algo?
Gracias por la aclaración.Me equivoqué un nivel y, por lo tanto, la confusión. Está claro ahora. – Arka