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.

Slides:



Advertisements
Presentaciones similares
III - Gestión de memoria
Advertisements

Repaso para la construcción del intérprete 2012
Historia La base del C proviene del BCPL (lógica programable en codigo binario), escrito por Martin Richards, y del B escrito por Ken Thompson en 1970.
66.20 Organización de Computadoras
PROGRAMACION DE ESTRUCTURAS DE DATOS
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Arquitectura de Conjunto de Instrucciones (ISA)
Objetivos Específicos de la Unidad
Tema 3. Optimización de Código
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
TRADUCTOR DE UN PROGRAMA
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Práctica 7 AOC. Gestión de la pila Una pila es una estructura de datos caracterizada por que el último dato que se almacena es el primero que se obtiene.
MIPS Intermedio.
Academia de Informática
PROCEDIMIENTOS FUNCIONES
Sistemas Operativos Procesos.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
1.1 Concepto y terminología
Subrutinas y Control de Abstracción
Asignación de Espacio No Contiguo
Conceptos Arquitectónicos del computador
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Unidad 3 Instrucciones secuenciales
Diseño de Programas.
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.
Elementos básicos del lenguaje
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Herencia y tipos ● Cuanta memoria se debe asignar a un objeto cuando se asigna en la pila ● La asignación debe hacerse antes de que se conozca la cantida.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Programación en C para electrónicos
Programación Básica con “NQC” Pedro F. Toledo Universidad Técnica Federico Santa María Departamento de Electrónica.
Elementos básicos del lenguaje
Representación de Algoritmos
Programación Procedural y Recursiva en C++
Curso de C # República Bolivariana de Venezuela Área de Computación
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Términos algoritmo diseñar algoritmo implementar algoritmo
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 15/08/2006.
Metodología de la programación
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Rendimiento de la CPU y sus factores
PHP con Bases de Datos Tema 5 Funciones Introducción Valor de una Función Función para obtener fecha actual. Documentación de Funciones Funciones de Usuario.
Teoría de Sistemas Operativos Memoria Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Capítulo 2 “Subprogramas/Funciones - Arreglos”
introducción al Lenguaje Ensamblador
Introducción a los TADs
2.2.2 S EGMENTACIÓN Jorge Javier Camacho Cortés. Samuel Gallegos Gómez. Dunia Andrea González Corona.
Programación de Sistemas
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
MEMORIA DINÁMICA.
MIPS Intermedio.
El microprocesador y su arquitectura
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Gestión de Memoria – Parte 2
JOSE ALBERTO JIMENEZ JIMENEZ KATTY HIPOLITO. 7.1 INTRODUCCION AL LENGUAJE EMSAMBLADOR.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Lenguaje ensamblador Resumen en diapositivas
El proceso ensamblador. José Luis Vergara Soberanis.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
ARCHIVO Es una colección de información o bien es una secuencia de bits, bytes, líneas o registros definida por su creador.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

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 a través de: –I/O interactiva. –I/O con archivos.

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.

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.

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.

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.

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.

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.

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.

Subrutinas y otras Abstracciones de Control.

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.

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.

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.

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

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.

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

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.

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.

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.

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.

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.