21
Tipos de Datos. Entrada-Salida.

Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Embed Size (px)

Citation preview

Page 1: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Tipos de Datos.

Entrada-Salida.

Page 2: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Entrada-Salida.

• La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse a través de:– I/O interactiva.– I/O con archivos.

Page 3: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

I/O interactiva.

• La entrada-salida interactiva generalmente implica comunicación con el usuario humano, quien trabaja en paralelo con el programa corriendo, y lo que él le dé al programa como entrada influirá directamente en la salida de dicho programa.

Page 4: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

I/O con archivos.

• La entrada-salida con archivos va generalmente asociada con almacenamiento off-line implementado por el sistema operativo. Los archivos pueden ser tanto temporales como persistentes.

Page 5: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Archivos Temporales

• Existen durante la corrida de un programa, y su propósito es almacenar información que es demasiado grande como para guardarla en la memoria disponible para el programa. Por razones de velocidad, los archivos temporales son generalmente guardados en forma binaria.

Page 6: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Archivos Persistentes.

• Permiten a un programa leer datos desde antes de la corrida del programa, y escribir datos que seguirán existiendo después de que el programa termine. Son el principal mecanismo a través del cual programas que corren en tiempos distintos se pueden comunicar.

Page 7: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Archivos binarios vs. Archivos de texto.

• Los archivos vinarios son mucho más rápidos para la entrada-salida. Los archivos de texto requieren muchas conversiones, por cuanto no reflejan la estructura de los datos que contienen.

• Los archivos de texto son mucho más legibles por el programador, y se pueden modificar fácilmente con herramientas como los editores de texto.

Page 8: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Pruebas de Igualdad y Asociación

• Es sencillo probar la igualdad en tipos primitivos de datos, como enteros, flotantes, etc. con semánticas e implementaciones obvias.

• En tipos de datos más complicados, o abstractos, pueden surgir diferencias de implementación entre lenguajes.

Page 9: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Tipos de Comparación.

• Hay dos maneras de probar la igualda entre objetos de tipos complejos:

• Comparación superficial: verifica si ambas variables se refieren al mismo objeto.

• Comparación profunda: verifica si ambos objetos son iguales.

Page 10: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Subrutinas y otras Abstracciones de Control.

Page 11: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Definiciones Básicas.

• Subrutinas parametrizadas– Parámetros reales (pasados por el llamador)– Parámetros formales (en la definición de la

subrutina).

• Las subrutinas son usualmente llamadas:– Funciones: si devuelven un valor.– Procedimientos: si no devuelven un valor, sino

queoperan por efecto de borde.

Page 12: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Detalles

• Stack Frame o registro de activación.– Argumentos, valores de retorno, variables

locales, direcciones de retorno, registros salvados, temporales.

– Cuando la subrutina devuelve, su frame es sacado de la pila.

• Apuntadores Importantes:– Stack Pointer.– Frame Pointer.

Page 13: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Detalles(II)

• Área de tamano variable en el tope del frame: para almacenar objetos cuyo tamano no es conocido a tiempo de compilación.

• Si no hay tales objetos, no se necesita el frame pointer.

Page 14: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Referencias Libres.

• Para encontrar objetos que son referencias libres en un lenguaje con subrutinas anidadas:– Cadena Estática: cada stack frame tiene una

referencia al frame de las subrutinas circundantes (requiere múltiple derreferenciación).

– Pantalla: una cadena estática encajada en un arreglo (requiere dos accesos a memoria solamente).

Page 15: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Costo de las Cadenas Estáticas vs. Pantallas.

• El anidamiento de subrutinas a más de 2-3 niveles es inusual, por lo que las cadenas estáticas son cortas.

• El costo de las pantallas es un tanto mayor que el de las cadenas estáticas.

• Las cadenas estáticas simplifican la representación de las clausuras (sólo almacenan las direcciones y los enlaces estáticos).

• Las pantallas imponen un límite de anidamientos.

Page 16: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Secuencias de Llamada.

• El mantenimiento de los stack frame es hecho por código ejecutado:– Por el llamador justo antes y justo después de la

llamada a subrutina (secuencia de llamada).– Por el llamado (subrutina)

• Al principio (prólogo).• Al final (epílogo).

Page 17: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Qué se necesita hacer en una llamada a subrutina?

• Pase de parámetros.

• Salvar la dirección de retorno.

• Cambiar el contador del programa.

• Cambiar el stack pointer.

• Salvar registros.

• Cambiar el frame pointer.

• Ejecutar el código de inicialización para objetos en un nuevo frame.

Page 18: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Qué se necesita hacer al salir de la subrutina?

• Pasar los parámetros de retorno de los valores de funciones.

• Ejecutar el código de finalización para objetos locales.

• Restaurar el stack pointer.

• Restaurar los registros salvados.

• Restaurar el contador del programa.

Page 19: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

División de tareas entre el llamador y el llamado

• La mayoría de las tareas pueden ser realizadas tanto por el llamador como por el llamado.

• Salvar los registros.

– Sólo es necesario guardar los registros que son utilizados tanto por el llamador como por el llamado.

– El llamador salva todos los registros que va a sobreescribir.

– Se dividen los registros en dos grupos, los salvados por el llamador y los salvados por el llamado.

Page 20: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Qué debe hacer el llamador?• El pase de parámetros.

• El mantenimiento de la cadena estática (parte de ella).

• El llamador calcula los enlaces estáticos del llamado y los pasa como un parámetro extra escondido.

– Cuando el llamado está anidado directamente dentro del llamador: el llamador pasa su propio frame pointer.

– Cuando el llamado está anidado a k enlaces dentro del llamador: el llamador derreferencia k veces su enlace estático y pasa el resultante.

• El mantenimiento de la pantalla es más complicado.

Page 21: Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse

Expansión In Line.

• La expansión en línea de las subrutinas al punto de la llamada.

• Ventajas:

– Evita la sobrecarga asociada con las llamadas a subrutina. Esto redunda en llamadas más rápidas.

– El programador es libre de usar muchas subrutinas cortas.

– El compilador elige cuáles subrutinas expandir In Line.

• Desventajas:

– Mucho más código.

– No aplica a llamadas recursivas.