Anda di halaman 1dari 7

MEMORIAS LIFO Y FIFO

Memoria LIFO
(Last in-First Out), la ltima informacin introducida en la memoria es la primera en extraerse, es lo que se llama una pila o
apilamiento.
Estas memorias especiales se crearon para librar a la CPU de gran parte de la labor de supervisin y control al realizar algunas
operaciones del tipo de manipulacin de datos memorizndolos y extrayndolos a una secuencia establecida. Las memorias LIFO,
no tienen porque ser memorias especiales ajenas a la memoria central del sistema, algunos micro procesadores o UP, suelen
incorporar un registro denominado Stock Pointer o puntero de pila, que facilita al UP la posibilidad de construir pila (stock) sobre
una zona de memoria RAM, el direccionamiento de la pila lo lleva a cabo el registro Stock Pointer actuando sobre la zona de
memoria RAM destinada a tal efecto.
Las memorias LIFO y FIFO son memorias especiales del tipo tampn cuyo nombre proviene de la forma de almacenar y extraer la
informacin de su interior.
MEMORIA LIFO Y FIFO
Las memorias LIFO y FIFO son memorias especiales del tipo tampn cuyo nombre proviene de la forma de almacenar y extraer la
informacin de su interior.
LIFO (Last in-first out), la ltima informacin introducida en la memoria es la primera en extraerse, es lo que se llama una pila o
apilamiento.
Estas memorias especiales se crearon para librar a la CPU de gran parte de la labor de supervisin y control al realizar algunas
operaciones del tipo de manipulacin de datos memorizndolos y extrayndolos a una secuencia establecida.Las memorias LIFO,
no tienen porque ser memorias especiales ajenas a la memoria central del sistema, algunos micro procesadores (UP), suelen
incorporar un registro denominado Stock Pointer (puntero de pila), que facilita al UP la posibilidad de construir pila (stock) sobre
una zona de memoria RAM, el direccionamiento de la pila lo lleva a cabo el registro Stock Pointer actuando sobre la zona de
memoria RAM destinada a tal efecto.

Memorias FIFO y LIFO


MEMORIAS LIFO
Este tipo de memorias (Last In First Out) tienen gran utilidad en los sistemas de computacion. Permite almacenar datos para
despues recuperarlos en orden inverso. Las memorias LIFO, se implementan para formar una pila. Una pila puede estar formada
por cualquier numero de registros. En este caso la cavecera o tope de la pila seria el registro superior.
El funcionamiento basico de estas memorias es muy simple. Se carga un byte de datos en la cabecera de la pila y cada byte
sucesivo empuja a este al registro siguiente. Los bytes de datos se recuperan en orden inverso, de modo que el ultimo byte
introducido siempre se encuentra en el registro superior de la pila. De esta manera, cada vez que sale un dato el resto pasa a
ocupar las posiciones inferiores.
1 Memoria LIFO:
El trmino LIFO se utiliza en estructuras de datos y teora de colas. Guarda analoga con una pila de platos, en la que los platos
van ponindose uno sobre el otro, y si se quiere sacar uno, se saca primero el ltimo que se puso.
LIFO es el algoritmo utilizado para implementar pilas.

Pilas con Memoria Dinmica


La memoria dinmica se refiere a aquella memoria que no puede ser definida ya que no se conoce
o no se tiene idea del nmero de la variable a considerarse, la solucin a este problema es la
memoria dinmica que permite solicitar memoria en tiempo de ejecucin, por lo que cuanta ms
memoria se necesite, ms se solicita al sistema operativo. El sistema operativo maneja la
memoria gracias al uso de punteros, por la misma naturaleza del proceso nos impide conocer el
tamao de la memoria necesaria en el momento de compilar.

Un dato importante es que como tal este tipo de datos se crean y se destruyen mientras se
ejecuta el programa y por lo tanto la estructura de datos se va dimensionando de forma precisa a
los requerimientos del programa, evitndonos as perder datos o desperdiciar memoria si
hubiramos tratado de definirla cantidad de memoria a utilizar en el momento de compilar el
programa.
Cuando se crea un programa en el que es necesario manejar memoria dinmica el sistema
operativo divide el programa en cuatro partes que son: texto, datos (estticos), pila y una zona
libre o heap. En la ultima parte es donde queda la memoria libre para poder utilizarla de forma
dinmica. En el momento de la ejecucin habr tanto partes libres como partes asignadas al
proceso por lo cual si no se liberan las partes utilizadas de la memoria y que han quedado

inservibles es posible que se agote esta parte y por lo tanto la fuente de la memoria dinmica.
Tambin la pila cambia su tamao dinmicamente, pero esto no depende del programador sino del
sistema operativo.
Una pila (stack en ingls) es una lista ordenada o estructura de datos en la que el modo de acceso
a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir)
que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el
rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura.
Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un
objeto en la pila, y su operacin inversa,retirar (o desapilar, pop), que retira el ltimo elemento
apilado.
En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto
apilado (denominado TOS, Top of Stack en ingls). La operacin retirar permite la obtencin de
este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con
anterioridad), que pasa a ser el nuevo TOS.
Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre una
pila de platos, y una operacin retirar a retirarlo.
Las pilas suelen emplearse en los siguientes contextos:

Evaluacin de expresiones en notacin postfija (notacin polaca inversa).

Reconocedores sintcticos de lenguajes independientes del contexto

Implementacin de recursividad.

Pila como tipo abstracto de datos[editar]


A modo de resumen tipo de datos, la pila es un contenedor de nodos y tiene dos operaciones
bsicas: push (o apilar) y pop (o desapilar). 'Push' aade un nodo a la parte superior de la pila,
dejando por debajo el resto de los nodos. 'Pop' elimina y devuelve el actual nodo superior de la pila.
Una metfora que se utiliza con frecuencia es la idea de una pila de platos en una cafetera con
muelle de pila. En esa serie, slo la primera placa es visible y accesible para el usuario, todas las
dems placas permanecen ocultas. Como se aaden las nuevas placas, cada nueva placa se
convierte en la parte superior de la pila, escondidos debajo de cada plato, empujando a la pila de
placas. A medida que la placa superior se elimina de la pila, la segunda placa se convierte en la
parte superior de la pila. Dos principios importantes son ilustrados por esta metfora: En primer
lugar la ltima salida es un principio, la segunda es que el contenido de la pila est oculto. Slo la

placa de la parte superior es visible, por lo que para ver lo que hay en la tercera placa, el primer y
segundo platos tendrn que ser retirados.

Operaciones[editar]
Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las
implementaciones modernas de las pilas se suelen aadir ms de uso habitual.

Crear: se crea la pila vaca. (constructor)

Tamao: regresa el nmero de elementos de la pila. (size)

Apilar: se aade un elemento a la pila.(push)

Desapilar: se elimina el elemento frontal de la pila.(pop)

Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)

Vaca: devuelve cierto si la pila est sin elementos o falso en caso de que contenga uno.
(empty).

Implementacin[editar]
Un requisito tpico de almacenamiento de una pila de n elementos es O(n). El requisito tpico de
tiempo de O(1) las operaciones tambin son fciles de satisfacer con un array o con listas
enlazadas simples.

Estructuras de datos relacionadas[editar]


El tipo base de la estructura FIFO (el primero en entrar es el primero en salir)es la cola, y la
combinacin de las operaciones de la pila y la cola es proporcionado por el deque. Por ejemplo, el
cambio de una pila en una cola en un algoritmo de bsqueda puede cambiar el algoritmo de
bsqueda en primera profundidad (en ingls, DFS) por una bsqueda en amplitud (en ingls, BFS).
Una pila acotada es una pila limitada a un tamao mximo impuesto en su especificacin.

Pilas Hardware[editar]
Un uso muy comn de las pilas a nivel de arquitectura hardware es la asignacin de memoria.

Arquitectura bsica de una pila[editar]


Una pila tpica es un rea de la memoria de los computadores con un origen fijo y un tamao
variable. Al principio, el tamao de la pila es cero. Un puntero de pila, por lo general en forma de un
registro de hardware, apunta a la ms reciente localizacin en la pila; cuando la pila tiene un
tamao de cero, el puntero de pila de puntos en el origen de la pila.
Las dos operaciones aplicables a todas las pilas son:

Una operacin apilar, en el que un elemento de datos se coloca en el lugar apuntado por el
puntero de pila, y la direccin en el puntero de pila se ajusta por el tamao de los datos de
partida.

Una operacin desapilar: un elemento de datos en la ubicacin actual apuntado por el


puntero de pila es eliminado, y el puntero de pila se ajusta por el tamao de los datos de
partida.

Hay muchas variaciones en el principio bsico de las operaciones de pila. Cada pila tiene un lugar
fijo en la memoria en la que comienza. Como los datos se aadirn a la pila, el puntero de pila es
desplazado para indicar el estado actual de la pila, que se expande lejos del origen (ya sea hacia
arriba o hacia abajo, dependiendo de la aplicacin concreta).
Por ejemplo, una pila puede comenzar en una posicin de la memoria de mil, y ampliar por debajo
de las direcciones, en cuyo caso, los nuevos datos se almacenan en lugares que van por debajo de
1000, y el puntero de pila se decrementa cada vez que un nuevo elemento se agrega. Cuando un
tema es eliminado de la pila, el puntero de pila se incrementa.
Los punteros de pila pueden apuntar al origen de una pila o de un nmero limitado de direcciones,
ya sea por encima o por debajo del origen (dependiendo de la direccin en que crece la pila), sin
embargo el puntero de pila no puede cruzar el origen de la pila. En otras palabras, si el origen de la
pila est en la direccin 1000 y la pila crece hacia abajo (hacia las direcciones 999, 998, y as
sucesivamente), el puntero de pila nunca debe ser incrementado ms all de 1000 (para 1001,
1002, etc.) Si un desapilar operacin en la pila hace que el puntero de pila se deje atrs el origen de
la pila, una pila se produce desbordamiento. Si una operacin de apilar hace que el puntero de pila
incremente o decremente ms all del mximo de la pila, en una pila se produce desbordamiento.
La pila es visualizada ya sea creciente de abajo hacia arriba (como pilas del mundo real), o, con el
mximo elemento de la pila en una posicin fija, o creciente, de izquierda a derecha, por lo que el
mximo elemento se convierte en el mximo a "la derecha". Esta visualizacin puede ser

independiente de la estructura real de la pila en la memoria. Esto significa que rotar a la derecha es
mover el primer elemento a la tercera posicin, la segunda a la primera y la tercera a la segunda.
Aqu hay dos equivalentes visualizaciones de este proceso:

Manzana
Pltano

Pltano
==rotar a la derecha==>

Fresa

Manzana

Fresa
Pltano
Manzana

Fresa

Manzana
==rotar a la izquierda==>

Fresa
Pltano

Una pila es normalmente representada en los ordenadores por un bloque de celdas de memoria,
con los "de abajo" en una ubicacin fija, y el puntero de pila de la direccin actual de la "cima" de
clulas de la pila. En la parte superior e inferior se utiliza la terminologa con independencia de que
la pila crece realmente a la baja de direcciones de memoria o direcciones de memoria hacia
mayores.
Apilando un elemento en la pila,se ajusta el puntero de pila por el tamao de elementos (ya sea
decrementar o incrementar, en funcin de la direccin en que crece la pila en la memoria), que
apunta a la prxima celda, y copia el nuevo elemento de la cima en rea de la pila. Dependiendo de
nuevo sobre la aplicacin exacta, al final de una operacin de apilar, el puntero de pila puede
sealar a la siguiente ubicacin no utilizado en la pila, o tal vez apunte al mximo elemento de la
pila. Si la pila apunta al mximo elemento de la pila, el puntero de pila se actualizar antes de que
un nuevo elemento se apile, si el puntero que apunta a la prxima ubicacin disponible en la pila,
que se actualizar despus de que el mximo elemento se apile en la pila.

Desapilando es simplemente la inversa de apilar. El primer elemento de la pila es eliminado y el


puntero de pila se actualiza, en el orden opuesto de la utilizada en la operacin de apilar.

Anda mungkin juga menyukai