• Save
1.4.2 pila stack  segment
Upcoming SlideShare
Loading in...5
×
 

1.4.2 pila stack segment

on

  • 1,555 views

 

Statistics

Views

Total Views
1,555
Views on SlideShare
1,550
Embed Views
5

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 5

http://ensambladorisc.blogspot.com 3
http://www.blogger.com 1
http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    1.4.2 pila stack  segment 1.4.2 pila stack segment Document Transcript

    • 1.4.2 Pila  (" Stack Segment" )<br />Es un área muy importante manejada directamente por la UCP para alojar datos durante la ejecución del programa.  Su nombre deriva de su propio mecanismo de funcionamiento.  Es un almacén de datos contiguos del tipo LIFO.<br />Frecuentemente es comparada con una pila de platos; el último en ser colocado es el primero en ser retirado.<br />Se usa para muchas cosas, por ejemplo, aquí se almacenan las variables locales automáticas y los datos involucrados en el mecanismo de invocación de funciones, de forma que si se utilizan muchas de estas invocaciones forma anidada o recursiva, la pila crece.  En algunos sistemas, la pila y el montón son contiguos y el crecimiento desmesurado de la pila puede llegar a sobrescribir el área inferior del montón.<br />Los movimientos en el stack son generalmente rápidos, a veces basta una simple instrucción del procesador para almacenar o borrar algo en la pila.  Los objetos colocados en ella se asocian a una duración automática. .  El término se refiere a que es el compilador el que determina cuando se destruyen.  El lenguaje C++ se caracteriza por hacer un uso extensivo de la pila (muchos objetos son " automáticos" por defecto) y el mecanismo de invocación de funciones se basa en su utilización.  Decimos que C++ es un lenguaje orientado a la pila.<br />La localización y desalojo de variables de la pila se realiza de forma automática (son decisiones tomadas por el compilador), no obstante, la directiva register permite indicar que algunas variables que normalmente irían en esta zona, sean alojadas en los registros del procesador.<br />Precisamente este " automatismo" hace que la llamada explícita al destructor de objetos que hayan sido construidos en esta zona sea extremadamente peligroso, ya que si se realiza antes de que el objeto salga de ámbito, el destructor será llamado de nuevo cuando sea liberado el marco de la pila correspondiente a dicho ámbito.  A cambio la pila presenta la comodidad que supone la destrucción automática de los objetos alojados en ella cuando salen de ámbito (con la liberación de la memoria correspondiente), lo que supone que no hay peligro de pérdidas inadvertidas porque el programador olvide destruir el objeto.  Es el siguiente caso:<br />class MiClase { ......} ...<br />{        // un ámbito cualquiera... ....<br />    MiClase objeto1;<br />    ....<br />}        // Ok. objeto1 es destruido al llegar a este punto<br />