Está en la página 1de 7

MEMORIAS LIFO Y FIFO

Memoria LIFO
(Last in-First Out), la última información 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 supervisión y control al realizar algunas
operaciones del tipo de manipulación de datos memorizándolos y extrayéndolos 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 tampón cuyo nombre proviene de la forma de almacenar y extraer la
información de su interior.
MEMORIA LIFO Y FIFO
Las memorias LIFO y FIFO son memorias especiales del tipo tampón cuyo nombre proviene de la forma de almacenar y extraer la
información de su interior.
LIFO (Last in-first out), la última información 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 supervisión y control al realizar algunas
operaciones del tipo de manipulación de datos memorizándolos y extrayéndolos 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 término LIFO se utiliza en estructuras de datos y teoría de colas. Guarda analogía con una pila de platos, en la que los platos
van poniéndose 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.

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. la solución a este problema es la memoria dinámica que permite solicitar memoria en tiempo de ejecución. datos (estáticos). En la ultima parte es donde queda la memoria libre para poder utilizarla de forma dinámica. pila y una zona libre o heap.Pilas con Memoria Dinámica La memoria dinámica se refiere a aquella memoria que no puede ser definida ya que no se conoce o no se tiene idea del número de la variable a considerarse. evitándonos así perder datos o desperdiciar memoria si hubiéramos tratado de definirla cantidad de memoria a utilizar en el momento de compilar el programa. El sistema operativo maneja la memoria gracias al uso de punteros. más se solicita al sistema operativo. por la misma naturaleza del proceso nos impide conocer el tamaño de la memoria necesaria en el momento de compilar. por lo que cuanta más memoria se necesite. Cuando se crea un programa en el que es necesario manejar memoria dinámica el sistema operativo divide el programa en cuatro partes que son: texto. En el momento de la ejecución 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 .

Dos principios importantes son ilustrados por esta metáfora: En primer lugar la última salida es un principio. es decir. empujando a la pila de placas. la pila es un contenedor de nodos y tiene dos operaciones básicas: push (o apilar) y pop (o desapilar). la segunda es que el contenido de la pila está oculto. Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push). Como se añaden las nuevas placas. Las pilas suelen emplearse en los siguientes contextos:  Evaluación de expresiones en notación postfija (notación polaca inversa). La operación retirar permite la obtención de este elemento. También la pila cambia su tamaño dinámicamente.  Reconocedores sintácticos de lenguajes independientes del contexto  Implementación de recursividad. Pila como tipo abstracto de datos[editar] A modo de resumen tipo de datos. sólo la primera placa es visible y accesible para el usuario. En cada momento sólo se tiene acceso a la parte superior de la pila. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura. que pasa a ser el nuevo TOS. todas las demás placas permanecen ocultas. 'Push' añade un nodo a la parte superior de la pila. al último objeto apilado (denominado TOS. Sólo la . cada nueva placa se convierte en la parte superior de la pila. pop). la segunda placa se convierte en la parte superior de la pila. pero esto no depende del programador sino del sistema operativo. y su operación inversa. una operación apilar equivaldría a colocar un plato sobre una pila de platos. Por analogía con objetos cotidianos. escondidos debajo de cada plato. y una operación retirar a retirarlo. que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad). Una pila (stack en inglés) es una lista ordenada o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out. último en entrar. Una metáfora que se utiliza con frecuencia es la idea de una pila de platos en una cafetería con muelle de pila. Top of Stack en inglés). En esa serie. que retira el último elemento apilado.retirar (o desapilar. dejando por debajo el resto de los nodos.inservibles es posible que se “agote” esta parte y por lo tanto la fuente de la memoria dinámica. primero en salir) que permite almacenar y recuperar datos. A medida que la placa superior se elimina de la pila. que coloca un objeto en la pila. 'Pop' elimina y devuelve el actual nodo superior de la pila.

(size)  Apilar: se añade un elemento a la pila. a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual. el cambio de una pila en una cola en un algoritmo de búsqueda puede cambiar el algoritmo de búsqueda en primera profundidad (en inglés. Pilas Hardware[editar] Un uso muy común de las pilas a nivel de arquitectura hardware es la asignación de memoria.(pop)  Cima: devuelve el elemento que esta en la cima de la pila. y la combinación de las operaciones de la pila y la cola es proporcionado por el deque. El requisito típico de tiempo de O(1) las operaciones también son fáciles de satisfacer con un array o con listas enlazadas simples. Una pila acotada es una pila limitada a un tamaño máximo impuesto en su especificación. . (top o peek)  Vacía: devuelve cierto si la pila está sin elementos o falso en caso de que contenga uno. DFS) por una búsqueda en amplitud (en inglés.  Crear: se crea la pila vacía.placa de la parte superior es visible. Implementación[editar] Un requisito típico de almacenamiento de una pila de n elementos es O(n). (constructor)  Tamaño: regresa el número de elementos de la pila. el primer y segundo platos tendrán que ser retirados. Operaciones[editar] Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar. BFS).(push)  Desapilar: se elimina el elemento frontal de la pila. (empty). Estructuras de datos relacionadas[editar] El tipo base de la estructura FIFO (el primero en entrar es el primero en salir)es la cola. por lo que para ver lo que hay en la tercera placa. Por ejemplo.

una pila se produce desbordamiento. el tamaño de la pila es cero. Si una operación de apilar hace que el puntero de pila incremente o decremente más allá del máximo de la pila. Las dos operaciones aplicables a todas las pilas son:  Una operación apilar. 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.  Una operación desapilar: un elemento de datos en la ubicación actual apuntado por el puntero de pila es eliminado. y la dirección en el puntero de pila se ajusta por el tamaño de los datos de partida. Al principio. por lo que el máximo elemento se convierte en el máximo a "la derecha". Por ejemplo. Un puntero de pila. Cuando un tema es eliminado de la pila. una pila puede comenzar en una posición de la memoria de mil. y así sucesivamente). apunta a la más reciente localización en la pila. el puntero de pila se incrementa. sin embargo el puntero de pila no puede cruzar el origen de la pila. ya sea por encima o por debajo del origen (dependiendo de la dirección en que crece la pila). el puntero de pila nunca debe ser incrementado más allá de 1000 (para 1001.) Si un desapilar operación en la pila hace que el puntero de pila se deje atrás el origen de la pila.Arquitectura básica de una pila[editar] Una pila típica es un área de la memoria de los computadores con un origen fijo y un tamaño variable. en cuyo caso. el puntero de pila de puntos en el origen de la pila. de izquierda a derecha. Como los datos se añadirán a la pila. La pila es visualizada ya sea creciente de abajo hacia arriba (como pilas del mundo real). Cada pila tiene un lugar fijo en la memoria en la que comienza. en el que un elemento de datos se coloca en el lugar apuntado por el puntero de pila. el puntero de pila es desplazado para indicar el estado actual de la pila. o. Hay muchas variaciones en el principio básico de las operaciones de pila. dependiendo de la aplicación concreta). en una pila se produce desbordamiento. por lo general en forma de un registro de hardware. etc. Los punteros de pila pueden apuntar al origen de una pila o de un número limitado de direcciones. si el origen de la pila está en la dirección 1000 y la pila crece hacia abajo (hacia las direcciones 999. que se expande lejos del origen (ya sea hacia arriba o hacia abajo. cuando la pila tiene un tamaño de cero. y el puntero de pila se ajusta por el tamaño de los datos de partida. En otras palabras. 1002. 998. o creciente. con el máximo elemento de la pila en una posición fija. y ampliar por debajo de las direcciones. Esta visualización puede ser .

el puntero de pila puede señalar a la siguiente ubicación no utilizado en la pila. que apunta a la próxima celda. Apilando un elemento en la pila. al final de una operación de apilar. el puntero de pila se actualizará antes de que un nuevo elemento se apile. Si la pila apunta al máximo elemento de la pila. Dependiendo de nuevo sobre la aplicación exacta. y copia el nuevo elemento de la cima en área de la pila. si el puntero que apunta a la próxima ubicación disponible en la pila.se ajusta el puntero de pila por el tamaño de elementos (ya sea decrementar o incrementar. que se actualizará después de que el máximo elemento se apile en la pila. Esto significa que rotar a la derecha es mover el primer elemento a la tercera posición. con los "de abajo" en una ubicación fija. . la segunda a la primera y la tercera a la segunda. en función de la dirección en que crece la pila en la memoria). y el puntero de pila de la dirección actual de la "cima" de células de la pila. Aquí hay dos equivalentes visualizaciones de este proceso: Manzana Plátano Plátano ==rotar a la derecha==> Fresa Manzana Fresa Plátano Manzana Fresa Manzana ==rotar a la izquierda==> Fresa Plátano Una pila es normalmente representada en los ordenadores por un bloque de celdas de memoria. o tal vez apunte al máximo elemento de la pila. En la parte superior e inferior se utiliza la terminología con independencia de que la pila crece realmente a la baja de direcciones de memoria o direcciones de memoria hacia mayores.independiente de la estructura real de la pila en la memoria.

. El primer elemento de la pila es eliminado y el puntero de pila se actualiza. en el orden opuesto de la utilizada en la operación de apilar.Desapilando es simplemente la inversa de apilar.