Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.

Slides:



Advertisements
Presentaciones similares
El tamaño asignado para cada partición es el mismo. Cada partición, será ocupada por un proceso de menor o igual tamaño. El programador debe diseñar el.
Advertisements

2. Manejo de memoria Manejo de memoria estática
Administración de memoria
Teoría de Sistemas Operativos Memoria
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
III - Gestión de memoria
Prototipo de compilador didáctico del lenguaje LC99
Programación I Teoría III
FUNCIONES EN C.
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
Teoría de lenguajes y compiladores
Herramientas para el acceso directo a memoria en C++
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Programación I Teoría VI: Recursividad
Material de apoyo Unidad 2 Estructura de datos
POO Java Módulo 3 Elementos de programas Identificadores
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
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.
LENGUAJE “C” Programación.
Tema 10: Gestión de Memoria
MIPS Intermedio.
Administración de memoria
Programación III Clase 07 Funciones.
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Introducción a la Programación. Lenguaje de Máquina.
Administración de Memoria Memoria Virtual
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Abstracción de Datos y Orientación a Objetos.. Vista General. Por qué la abstracción de datos y la programación orientada a objetos. Módulos y módulos.
Asignación de Espacio No Contiguo
Administración de Memoria
Informática Ingeniería en Electrónica y Automática Industrial
Aplicación de estructuras de datos
Alcance Dinámico La Asociación Actual para un Nombre dado es el encontrado recientemente durante la ejecución, y no a sido destruido aun por el retornado.
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.
Capítulo 7 Gestión de memoria.
Manejo de Punteros y objetos en memoria dinámica en C++
CLASE 8 Ruben Martinez c Tipo Inferencia Es un mecanismo donde por el tipo las especificaciones se pueda omitir a menudo totalmente, si es.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)

APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Términos algoritmo diseñar algoritmo implementar algoritmo
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Maquinas Digitales UNIDADES DE CONTROL.
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Gestión de memoria Rina Arauz.
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Cobol C Pascal Fortran 2. OBJETOS DE DATOS SmallTalk Java C++
Administración de Almacenamiento
MIPS Intermedio.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
JOSE ALBERTO JIMENEZ JIMENEZ KATTY HIPOLITO. 7.1 INTRODUCCION AL LENGUAJE EMSAMBLADOR.
GENERALIDADES DEL NIVEL ISA DE LA MAQUINA VIRTUAL JAVA (JVM) Generalidades del nivel ISA.
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Transcripción de la presentación:

Nombre, Alcance y Asociaciones (Bindings)

Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación Ubicación de Almacenamiento Objetos estáticos Almacenamiento de Pila Marco de Pila Asignación Base del Heap Políticas de Asignación Problemas de Fragmentación del Heap Costo de la Asignación base del Heap Desasignación Base del Heap Reglas de Alcance –Alcance estático Tiempo de Vida y Manejo de Memoria

Nombres Bindings Importante para lograr capacidad de abstracción Asociación de un nombre con el objeto a representar o asociación entre dos objetos cualesquiera. Nombre, Alcance y Asociaciones

Momento de Asociación (Binding Time) Diseño del Lenguaje: se deciden cuales son las palabras reservadas del lenguaje y que objetos representan. Implementar el lenguaje: En este momento es cuando se decide que cantidad de bits se van a utilizar para representar los objetos o palabras seleccionadas a la hora del diseño.

Momento de Asociación (Binding Time) Escritura del programa: Todos los nombre son escogidos por el programador Compilación del programa: Se hace un mapeo de HLL en la construcción de código de máquina. Proc P { int x,y char a[10] float z ….} o x y a z 18 Int = 2 bits char = 1 bits float = 4 bits

Momento de Asociación (Binding Time) A tiempo de enlace - Resuelve referencias entre módulos. A tiempo de carga - Asignación de direcciones de máquina. A tiempo de ejecución - Asociación de valores a las variables.

Importancia del Momento de la Asociación (Binding Time) Momento de Asociación temprana - Eficiencia - Lenguaje compilado Momento de Asociación tardía -Flexibilidad -Lenguaje interpretado

Importancia del Momento de la Asociación (Binding Time) Diseño Implementación Escritura Compilación Enlace Carga Ejecución Estático Binding Temprano Mayor eficiencia Lenguajes compilados Dinámico Banding Tardío Mayor flexibilidad Lenguajes interpretados

Eventos relacionados a la Asociación (Binding ) Creación de objetos Creación de asociaciones Referencias a variables, subrutinas, tipos, etc. Destrucción de objetos Destrucción de asociaciones (bindings) Activación / Desactivación temporal de asociaciones (bindings)

Ubicación de Almacenamiento Estático: los objetos consiguen la dirección fija absoluta (a tiempo de compilación). Pila (Stack): los objetos son ubicados en el tope de la pila en conexión con las llamadas a subrutinas. Heap: los objetos son asignados/desasignados en cualquier instante (objetos dinámicos), esto puede darse por: –Explicitamente por el programador –Implicitamente por el recolector de basura (garbage collector). Sentido en el que crece la pila (Stack) Sentido en el que crece el Heap

Objetos Estáticos Variables globales Constantes Variables locales para una subrutina, pero retiene valores a través de invocaciones. Tabla de símbolos Espacio para subrutinas, incluyendo variables locales en lenguajes sin recursión.

Almacenamiento de Pila Espacio para subrutinas en un lenguaje que permite recursión. -Argumentos, variables locales. -Valores de retorno. Secuencia de llamadas de subrutinas -Código llamador -Código del llamado -Prologo -Epilogo

Marco de Pila Específicamente a tiempo de compilación. -El desplazamiento de objetos esta dentro del objeto. -Apuntador a Frame (Frame pointer) -Apuntador a Pila (Stack pointer) Específicamente a tiempo de ejecución. - La localización absoluta del marco de pila esta en memoria.

Ejemplo de Marco de Pila Subrutina B Subrutina C Subrutina D fp sp - Variables locales - Dirección de retorno - Registro del CPU salvados - Parámetros reales - Cadena dinámica - Cadena estática - Miscelaneos - Valor de retorno (en el caso de funciones) Dirección de crecimiento de la pila (usualmente disminuye las direcciones)

Asignación Base del Heap Heap: región de almacenamiento en la cual los bloques pueden asignarse o desasignarse arbitrariamente. Administración del almacenamiento: -Lista libre (Free List): lista enlazada de los bloques libres. -En cada asignación, se buscar el bloque de tamaño adecuado, la cual puede seguir las siguientes políticas: -First fit -Best fit

Políticas de Asignación Best fit First fit Se desea asignar el siguiente bloque tamaño 60 Kb. 50 Kb80 Kb85 Kb10 Kb50 Kb70 Kb170 Kb80 Kb45 Kb Mem. 50 Kb80 Kb85 Kb10 Kb50 Kb70 Kb170 Kb80 Kb45 Kb 50 Kb80 Kb85 Kb10 Kb50 Kb70 Kb170 Kb80 Kb45 Kb

Problema de Fragmentación del Heap Fragmentación interna: es cuando parte del bloque no se utiliza, se da cuando la partición es estática. Fragmentación externa: consiste cuando hay muchos bloques pequeños sin usar, se da cuando la partición es dinámica.

Costo de la Asignación Base de Heap Una lista de bloques libres libre: el costo es lineal al número de bloques libres. Varias listas por bloques de distintos tamaños: -Buddy system -Fibonacci heap. Para eliminar la fragmentación externa, el Heap puede ser compactado.

Desasignación Base del Heap Explicitamente por el programador: -Eficiente -Puede producir errores indeseables como: -Referencias guindantes. -Quiebre de memoria. Automáticamente por el recolector de basura (garbage collector).

Reglas de Alcance Alcance de una asociación: una región de un programa en la cual la asociación es activa. Alcance: la región de un programa en la que un nombre o binding es valido. El alcance puede ser: -Estático -Dinámico.

Alcance Estático Subrutinas Anidadas Módulos La asociación actual para nombres: - El primero en encontrarse de arriba hacia abajo en el texto de un programa.

Alcance Estático Variable globales: dentro de toda la clase o módulo Variables locales: se encuentran dentro de un Procedimiento o subrutina Las variables que están afuera si pueden ser vistas adentro, pero las de adentro no pueden ser vistas afuera.

Tiempo de Vida y Manejo de Memoria Durante la compilación: a)Objetos estáticos: perduran toda la ejecución del programa. b)Objetos locales/de pila: nacen y mueren durante una subrutina, se almacenan en la pila. c) Objetos dinámicos/de Heap: nacen y mueren en momentos arbitrarios, se almacenan en el Heap. Class { static int x = 5 public static void P { float P; int[ ] z; … z = new int[ 10 ] } … } Objeto estático Objeto de pila Objeto dinámico