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. 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.

Memorias Lifo y Fifo

Embed Size (px)

DESCRIPTION

memorias especiales

Citation preview

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 FIFOLas 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.1Memoria 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 MemoriaDinmicaLa 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.Unapila(stackeningls) es una lista ordenada oestructura de datosen la que el modo de acceso a sus elementos es de tipoLIFO(del inglsLast In First Out,ltimo enentrar, primero ensalir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea deinformticadebido 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 (denominadoTOS,Top of Stacken ingls). La operacinretirarpermite 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 operacinapilarequivaldra a colocar un plato sobre una pila de platos, y una operacinretirara retirarlo.Laspilassuelen emplearse en los siguientes contextos: Evaluacin de expresiones ennotacin postfija(notacin polaca inversa). Reconocedores sintcticos delenguajes independientes del contexto Implementacin derecursividad.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) ypop(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). Unapila acotadaes 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 Fresa Manzana

Fresa Manzana Pltano ==rotar a la izquierda==> Fresa Manzana 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.