2012-01-18 16 views
6

Recientemente me encontré con un error con la "pila de Linux" y el "tamaño de la pila de Linux". Me encontré con un blog orientarme a tratar¿Qué es la pila de Linux?

ulimit -a 

para ver cuál era el límite de mi caja, y fue puesta a 8192kb que parece ser el valor por defecto.

¿Qué es "pila de linux"? ¿Cómo funciona, qué almacena, qué hace?

+3

http://en.wikipedia.org/wiki/Call_stack –

+0

un desbordamiento de pila puede aparecer con recursión demasiado profundo (o infinito). O tal vez por el abuso de 'alloca' (o equivalente, como matrices de longitud variable) en el código C. –

+0

Relacionados: http://stackoverflow.com/questions/17671423/stack-allocation-for-process | http://unix.stackexchange.com/questions/145557/how-does-stack-allocation-work-in-linux/239323#239323 –

Respuesta

7

La respuesta corta es:

Cuando los programas de Linux en su cuadro de ejecución, añaden y eliminan los datos de the stack sobre una base regular como la función de los programas. El tamaño de la pila, se refiere a la cantidad de espacio asignado en la memoria para la pila. Si aumenta el tamaño de la pila, eso permite que el programa aumente la cantidad de rutinas a las que se puede llamar. Cada vez que se llama a una función, se pueden agregar datos a la pila (apilados sobre los últimos datos de rutinas)

A menos que el programa sea muy complejo o esté diseñado para un propósito especial, un tamaño de pila de 8192kb es normalmente bien Algunos programas como los programas de procesamiento de gráficos requieren que aumente el tamaño de la pila para funcionar. Como pueden almacenar una gran cantidad de datos en la pila.

No dude en aumentar el tamaño de la pila para esas aplicaciones, no es un problema. Para ello, utilice

ulimit -s bytes

Por cierto, What is a StackOverflowError?

+0

Muchas gracias por la respuesta. He estado obteniendo un error 'SystemStackError: stack level too deep' en una aplicación de Ruby y quería obtener una mejor comprensión de los fundamentos antes de seguir investigando. – jaredonline

Cuestiones relacionadas