En realidad, el tamaño de su pila virtual es 8388608 bytes (8 MB). Por supuesto, es natural concluir que esto no puede ser correcto, porque esa es una cantidad ridículamente grande de memoria para cada subproceso para su pila cuando el 99% de las veces un par de KB es probablemente todo lo que necesitan.
La buena noticia es que su hilo solo usa la cantidad de memoria física que realmente necesita. Este es uno de los poderes mágicos que obtiene su sistema operativo al usar la Unidad de administración de memoria de hardware (MMU) en su procesador. Esto es lo que pasa:
El sistema operativo asigna 8 MB de memoria virtual para su pila configurando las tablas de páginas de MMU para su hilo. Esto requiere muy poca RAM para contener solo las entradas de la tabla de páginas.
Cuando su hilo se ejecuta e intenta acceder a una dirección virtual en la pila que aún no tiene asignada una página física, la MMU activa una excepción de hardware llamada "fallo de página".
El núcleo de la CPU responde a la excepción de falla de página cambiando a un modo de ejecución privilegiado (que tiene su propia pila) y llamando a la función del controlador de excepción de falla de página dentro del núcleo.
El kernel asigna una página de RAM física a esa página de memoria virtual y vuelve al subproceso de espacio de usuario.
El hilo del espacio del usuario no ve nada de ese trabajo. Desde su punto de vista, solo usa la pila como si la memoria estuviera allí todo el tiempo. Mientras tanto, la pila crece automáticamente (o no) para satisfacer las necesidades del hilo.
La MMU es una parte clave del hardware de los sistemas informáticos actuales. En particular, es responsable de gran parte de la "magia" en el sistema, por lo que recomiendo aprender más sobre lo que hace la MMU y sobre la memoria virtual en general. Además, si su aplicación es sensible al rendimiento y maneja una cantidad significativa de datos, debe comprender cómo funciona el TLB (el caché de la tabla de páginas de MMU) y cómo puede reestructurar sus datos o sus algoritmos para maximizar su tasa de aciertos TLB.
8388608 / 1024 = 8192
.