2parcial - Apuntes de Licenciatura en Sistemas (FASTA)

Anuncio
GESTION DEL ALMACENAMIENTO
Pág. 216
Introducción: PAG 216- La gestión de almacenamiento para datos es una de las preocupaciones fundamentales del
programador, del implementador de lenguajes y del diseñador de lenguajes. El programador tiende a ver la gestión de
almacenamiento de datos y programas traducidos. Sin embargo, la gestión de almacenamiento en tiempo de ejecución
abarca muchas áreas. Los principales elementos de subprogramas y datos que requieren almacenamiento durante la
ejecución del programa son:
a) Segmento de código para programas de usuario traducidos.
b) Programas del sistema.
c)
Estructuras de datos y constantes definidas por el usuario.
d) Punto de retorno en subprogramas.
e) Entornos de referencia.
f)
Temporales.
g) Temporales en transmisión de parámetros.
h) Buffers de entrada/salida.
i)
Datos diversos del sistema.
Gestión de almacenamiento controlada por el programador y por el sistema:
SISTEMA
PROGRAMADOR
Mas seguro.
Difícilmente el programador se ocupe del almacenamiento de
temporales, puntos de retorno de subprogramas u otros
datos del sistema.
Ejemplo 1
Puede imponer una carga indeseable sobre el programador y
también puede interferir con la necesaria gestión del
almacenamiento controlada por el sistema.
Ejemplo 2
Puede conducir a sutiles errores o perdidas de acceso a
almacenamiento disponible.
Ventaja:
radica
en
el
hecho
de
que
suele
ser
extremadamente difícil para el sistema determinar cuando se
puede asignar y liberar almacenamiento con mas eficacia.
A menudo el programador conoce cuando se necesita una
estructura de datos en particular o cuando ya no es
necesaria y se puede liberar.
1
Fases de la gestión de almacenamiento: (tres aspectos básicos)

Almacenamiento inicial: al inicio de la ejecución, cada segmento de almacenamiento puede estar ya sea
asignado o libre. Si esta libre inicialmente, esta disponible para asignarse de manera dinámica conforme avanza la
ejecución. Ejemplo:

Recuperación: el almacenamiento que ha sido asignado y usado, y que posteriormente queda disponible, debe
ser recuperado por el gestor de almacenamiento para volver a usarlo. La recuperación puede se simple, como en la
reubicación de un apuntador de pila, o muy compleja ,como en la recolección de basura. Ejemplo:

Compactación y nuevo uso: el almacenamiento recuperado puede estar listo de inmediato para volver a usarse,
o puede requerirse una compactación para construir bloques grandes de almacenamiento librea partir de fragmento
pequeños. Ejemplo:
2 Formas de gestión de almacenamiento:

ESTATICA: que tiene lugar durante la traducción y permanece fija a lo largo de la ejecución. Es la forma mas
sencilla de asignación. No requiere software de gestión de almacenamiento en tiempo de ejecución, y desde luego
no recupero y nuevo uso. La asignación estática es eficiente porque no gasta tiempo ni espacio para gestión de
almacenamiento durante la ejecución.

DINAMICA: La técnica mas simple de gestión de almacenamiento en tiempo de ejecución es la pila. Un solo
apuntador de pila es todo lo que se necesita para controlar la gestión de almacenamiento.
ENCAPSULAMIENTO
Pág. 195
Existen tres mecanismos básicos para proporcionar al programador la capacidad para crear tipos de datos nuevos y
operaciones sobre esos tipos:
1) Subprogramas
2) Declaración de tipo
3) Herencia
Tipo de dato abstracto: se define un tipo de dato abstracto como:
1) Un conjunto de objetos de datos (usando una o mas definiciones de tipo).
2) Un conjunto de operaciones abstractas sobre esos objetos de datos, y
2
3) Un encapsulamiento del todo en forma tal que el usuario del nuevo tipo no pueda manipular objetos de datos del
tipo excepto a través del uso de las operaciones definidas.
Ocultamiento de la información: es el termino que se usa para un principio fundamental en el diseño de
abstracción definidas por el programador. Cada uno de estos componentes de programa deberá ocultar tanta información
como sea posible a los usuarios del componente.
Cuando la información se encapsula en una abstracción, significa que el usuario de la abstracción:
1) No necesita conocer la información oculta para usar la abstracción, y
2) No se le permite usar o manipular directamente la información oculta incluso si desea hacerlo.
El encapsulamiento tiene particular importancia porque permite modificar fácilmente un programa.
Apuntes en clase:
Módulos / componentes: aprendemos a modular.

Interfaz: no se conoce la información interna, sino a través de la interfaz.

Enfoques: como dividir. Ejemplo. Entrada, procedure, salida.
o
Descomposición funcional. Se descompone en funciones.
o
Descomposición de datos.
API: conjunto de interfaces de todos los módulos.
Se oculta la información interna de los módulos.
Encapsulamiento por subprograma:
Un subprograma es una operación abstracta definida por el programador. Una definición de subprograma tiene dos partes,
una especificación y una implementación.

Especificación de un subprograma: es la misma que para una operación primitiva. Incluye:
1) El nombre del subprograma.
2) La signatura (también llamada prototipo) del subprograma, que da el numero de argumentos, su orden y el tipo
de datos de cada uno, así como el numero de resultados, su orden y el tipo de datos de cada uno.
3) La acción que lleva a cabo el subprograma. Es decir una descripción de la función que calcula.

Implementación: un subprograma representa una operación de la capa de computadora virtual construida por el
programador. La implementación esta definida por el cuerpo del subprograma, el cual se compone de declaraciones
de datos locales que definen las estructuras de datos que usa el subprograma y los enunciados que definen las
acciones que se deben adoptar cuando se ejecuta el subprograma.
Cuestiones (de clase):
1) El modulo debe trabajar con los parámetro necesarios, es decir solo los que están en la API.
2) Ese subprograma no tiene que tener resultados implícitos. (ejemplo la de cambiar la HORA y DIA de la
maquina, ya que me podría afectar a todo el sistema.
Una vez finalizado el subprograma, liberar toda la memoria.
3) Un resultado para toda entrada. Sistema estable que retorna un resultado.
4) Historial: un programa puede ser sensible al historial. Es una problemática, Ej. nros random.
3
Ejemplo de ello es el Sist. GPS. Comportamiento sensible a la historia.
Declaraciones de tipo: le damos un nombre.
Estructura: definimos a ese tipo nuevo, basado en otros tipos.
Herencia: es la recepción en un componente del programa de propiedades o características de otro componente de
acuerdo con una relación especial que existe entre los dos componentes.

Herencia simple

Herencia múltiple

Interfaces
4
Descargar