Cobol C Pascal Fortran 5. UNIDADES DE PROGRAMAS SmallTalk Java C++

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Programación de Computadores
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
III - Gestión de memoria
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
ADA: lenguaje de programación concurrente
Metodología de la Programación
Programación modular Procedimientos y Funciones
Programación I Teoría III
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Subprogramas: Procedimientos
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tipo de Dato Abstracto Tipos de datos:
Capitulo 4 Excepciones.
1.3 Programación modular. Subprogramas.
EXCEPCIÓN DE ERRORES.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
Teoría de lenguajes y compiladores

SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.
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.
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Semana 5 Subprogramas..
PROCEDIMIENTOS FUNCIONES
Sistemas Operativos Procesos.
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
PROGRAMACION CONCURRENTE
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Unidad III Administración de procesos
Subrutinas y Control de Abstracción
Administración de Memoria Memoria Virtual
Programa Vespertino de Automatización Equipos y Sistemas de Control Digital Lenguaje C Profesor: Felipe Páez Mejías D e p a r t a m e n t o d e I n g e.
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.),
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Asignación de Espacio No Contiguo
Material de apoyo Unidad 4 Estructura de datos
Aplicación de estructuras de datos
1 6. PARAMETRIZACIÓN. 2 Parametrización La parametrización permite realizar una abstracción de la identidad de varios ejemplos de los datos Los valores.
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.
NVA-LNG1 3. SENTENCIAS. NVA-LNG2 Asignación Es una sentencia que almacena: el valor del argumento ubicado a la derecha del símbolo que la representa En.
LENGUAJES DE PROGRAMACIÓN
Sincronización de Procesos
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Programación de Sistemas
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Informática Ingeniería en Electrónica y Automática Industrial
Administrador de procesos
Metodología de la programación
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
1 5. UNIDADES DE PROGRAMAS. 2 Uso de mecanismos de control de secuencia de: Invocaciones Retornos Entre: PPSP 1 a) I R SP 1 SP 2 b) I R Unidades subordinadas.
Teoría de lenguajes y compiladores
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Introducción a los TADs
Programación de Sistemas
Ada 2º Parte (variables, ámbitos, subrutinas, tipos abstractos de datos y excepciones)
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
MEMORIA DINÁMICA.
Curso: Fundamentos de Computación
Cobol C Pascal Fortran 2. OBJETOS DE DATOS SmallTalk Java C++
Algorítmica y Programación
Programación en Visual Basic
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
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.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Cobol C Pascal Fortran 5. UNIDADES DE PROGRAMAS SmallTalk Java C++

Unidades de programas Estudiar mecanismos de control de secuencia: Invocaciones Retornos Entre: PP SP a) I R SP1 SP2 b) I R

Unidades subordinadas Considera un estructura jerárquica entre las unidades (árbol). Un PP, durante la ejecución, puede llamar a varios SP. Estos SP pueden, a su vez, llamar a otros SP, y así sucesivamente. Al término de la ejecución de un SP, debe retornar el control al PP o SP que lo invocó. Se pueden desarrollar en forma independiente del PP u otro SP y cumplen un objetivo bien definido.

Unidades subordinadas La ejecución del programa invocador se detiene temporalmente, mientras se ejecuta un SP. Al terminar la ejecución de un SP, continúa la ejecución del programa invocador en : El punto inmediatamente siguiente a la llamada al subprograma.

Subprogramas S P La activación del SP corresponde al uso o invocación del SP durante la ejecución. La definición del SP corresponde al código que es traducido por un compilador o intérprete

Activación ACTIVACIÓN REGISTRO DE ACTIVACIÓN SEGMENTO DE CÓDIGO Invariante Código ejecutable Almacenado en parte fija de la RAM En la ejecución, se usa pero NO se modifica. Cada activación del SP utiliza el mismo segmento de código. Contenido variable. Contiene información necesaria para ejecutar el SP Parámetros formales Variables locales Dirección de retorno. *Valor de retorno.

Variables locales Corresponde a los datos declarados al interior de un subprograma Pertenecen al registro de activación de la rutina en la que fueron declarados

Variables globales Corresponde a los datos declarados en OTRA rutina Pueden ser referenciadas por el SP Pertenecen al registro de activación de otra rutina que está activa durante toda la ejecución del SP.

Entorno de referencia Objetos a los que una unidad puede acceder Para una activación de una unidad S: entorno de referencia Entorno Local Entorno Global ODD contenidos en el RA de S ODD contenidos en OTROS RA de unidades activas

Ejemplo Tres PP x: y: Uno a: b: Dos z: c: d: PP Var x,y: Integer; Rutina Uno Var a,b: Real; Rutina Dos Var z,a: Integer; End; Rutina Tres Var c,d: Char; End.

Entornos de referencia x: y: Uno Tres a: b: Dos z: c: d: PP 1. PP: x,y Uno: EG x,y EL a,b 3. Dos: EG x,y,b EL z,a No se tendrá acceso a la vble a de Uno 4. Tres: EG x,y EL c,d

activación y código-RA Motivación ¿Cómo resuelven los LP semánticamente la problemática entre: activación y código-RA Estructuras tipo FORTRAN Estructuras tipo Algol

Estructuras tipo FORTRAN PP R1 Datos R2 R3 Explicación: La regla de la copia A lo más UNA activación de cualquier SP está en uso en cuaquier momento de la ejecución del PP Al compilar, en forma estática, se le asigna a la unidad de programa: El segmento de código El registro de activación (RA) El RA forma parte del Segmento de código (en el bloque) El RA permanece ligado al SP durante TODA la ejecución del programa, aunque la unidad NO esté activa

Estructuras tipo FORTRAN PP R1 Datos R2 R3 El mismo RA se utiliza repetidamente en cada invocación El ámbito de una variable se reduce a la unidad en la que fue declarada. Las unidades pueden tener acceso a variables globales, utilizando la sentencia COMMON. Estas variables son tratadas como si pertenecieran a un RA global para todas las unidades.

Características PP R1 Datos R2 R3 Este método resuelve en forma simple el problema de la relación: Registro de Activación-Unidad El tamaño de registro de activación se determina en tiempo de compilación. Permite una ejecución eficiente Consume mucha memoria No permite recursividad

Llamadas Call A PP d0: A Call B d2: d1: Goto d1 Goto d0 B Call C d4:

Recursividad Indirecta Call A PP d0: A Call B d2: d1: Goto d1 Goto d0 B Call C d4: Goto d3 d3: Goto d2 C Goto d5 d5: Goto d4 Call B d6: Loop!!!

Estructuras tipo Algol El código fuente puede tener Unidades Disjuntas C PP X Y Z Unidades Anidadas Pascal Datos declarados en una unidad no son accesibles por otras Unidad contenida en otra. La unidad más interna tiene acceso a los datos de las unidades que la contienen. (EG) Contexto de validez o ámbito de una vble: La unidad que la declara: U Todas las unidades al interior de U, para las cuales la vble tiene caracter de global.

Características Las variables locales se crean implícitamente (en forma automática) al activarse la unidad. La cantidad de almacenamiento requerido por las variables locales se determina en tiempo de compilación. El tamaño del registro de activación se determina en tiempo de compilación, al igual que en FORTRAN El Registro de Activación es asignado y ligado dinámicamente al respectivo código con cada nueva activación. El RA se crea cada vez que un programa llama a la unidad El RA es destruido cuando se retorna al programa invocado

Características Cont... El tratamiento de los RA es de tipo LIFO (last in-first out), por lo que la estructura de soporte es el stack, lo que favorece la implementación de algoritmos recursivos. Sintácticamente, las llamadas ordinarias y las recursivas, son iguales La llamada recursiva crea una segunda activación del SP durante la existencia de la primera. Si la segunda activación realiza otra llamada recursiva, se crea una tercera activación para el SP, y así sucesivamente... Pueden existir varias activaciones para el mismo SP

Llamadas Call A PP d0: A Call B d2: d1: B Call C d4: d3: C d5: d2 d4

Llamadas Recursivas Call A PP d0: A Call B d2: d1: B Call C d4: d3:

Cadena dinámica d0 d2 d4 d6 Cadena de punteros que enlazan las activaciones del SP, en el orden de su creación dinámica durante la ejecución del programa

Áreas de Memoria Área de datos estática Área de datos automáticos Área de datos Dinámicos Stack Heap

Stack de RA estático Almacenamiento contiguo. El tamaño de los RA es variable, pero conocido. Los RA se almacenan en el área de datos automáticos. d0 d2 d4 d6 RA PP RA A RA B RA C

Stack de RA dinámico Almacenamiento en área heap. (datos dinámicos) Se debe tener en cuenta el "enlace dinámico" que se agrega a todos los RA.

Invocaciones explícitas Comunicación entre unidades de programa mediante parámetros. Actuales (argumentos) Formales Los parámetros permiten la variabilidad de los elementos transferidos en diferentes llamadas. Los parámetros formales constituyen parte del registro de activación.

Modalidades Relación entre parámetros actuales y formales: Correspondencia posicional Los argumentos se corresponden uno a uno con los parámetros de la declaración de la rutina. La más utilizada por los LP Correspondencia nominal Se indica explícitamente en la invocación la correspondencia entre parámetros actuales y formales.

Ejemplos Correspondencia posicional (Pascal, C) Procedure Suma(a,b:Integer; x:Real) Definición:  Suma(r,t,s) Invocación:  Correspondencia nominal (Ada) procedure Inicializar(Limite: in integer; Tabla: in out Arreglo); Definición:  Invocación:  Inicializar (Tabla is V, Limite is N); PA

Invocaciones implícitas Excepción: Condición que marca un suceso inusual o no esperado durante la ejecución del programa realizar una acción especial Condición de excepción Invocación implícita a una unidad Las unidades que se activan cuando se detecta alguna irregularidad se denominan manejadores de excepciones

Invocaciones implícitas Permite excluir aquellos errores que podrían desviar la atención del objetivo principal del programa. Los lenguajes tienen excepciones pre-definidas (entrada-salida, rangos de índice, almacenamiento dinámico, etc) Algunos LP permiten declarar otras excepciones, específicas para el programa en construcción. Éstas deberán ser "invocadas" en forma explícita: raise <nombre de la excepción>

Ejemplo Se desea abrir un archivo para lectura en Pascal. La excepción se producirá si éste no ha sido creado, o bién, no está en el directorio indicado Assign(ent,"c:\ejemplos\Tarea1" {$I-} Reset(ent); {$I+} x:=IOResult(); if (x<>0) then Writeln("Archivo NO existe"); else Begin While (Not Eof(ent)) do Read(ent,r); : End Permite atrapar el error

Ejemplos try-end exception....when exception On condition ....

Unidades Simétricas (Corrutinas) mutua, alternada y explícitamente. Unidades que se activan No existe una relación jerárquica entre los SP Ambos SP son equivalentes: Se traspasan el control uno a otro y ninguno controla al otro.

Unidades Simétricas (Corrutinas) Cuando una corrutina (Y) recibe el control desde otra corrutina (X), ésta se ejecuta parcialmente, y se detiene al retornar el control a la corrutina invocadora (X), utilizando la sentencia resume. Más tarde, si la corrutina (X) pasa nuevamente el control a la corrutina (Y), (resume) ésta comienza su ejecución desde el punto en que fue anteriormente detenida.

Unidades Simétricas (Corrutinas) El código, : Resume Y Corrutina X Resume x Corrutina y corroutine X; begin ··· resume Y; end; corroutine Y; begin ··· resume X; end; Modula-2 - Algol68

Resume PF VL RA: D reinicio x D reinico y La sentencia "resume" tiene un comportamiento similar al de una sentencia "call" con la salvedad de que el punto de entrada a la corrutina es variable.

Resume La ejecución de una sentencia "resume y" en X involucra dos acciones: Almacenar en la dirección de reinicio la dirección de la sentencia inmediatamente posterior a resume Y.   Accesar la dirección de reinicio de Y para obtener la dirección en la cual debe continuar la ejecución.

Unidades Concurrentes Procesos paralelos: Procesos que se pueden ejecutar en forma, conceptualmente, simultánea. Procesos paralelos: Disjuntos Procesos que durante la ejecución, no acceden a recursos compartidos. Procesos paralelos: Concurrentes Durante ejecución, interactúan compitiendo por el acceso a recursos compartidos y cooperando para alcanzar un objetivo común. Compartir!!! Cada proceso tiene acceso a los mismos recursos pero sólo uno a la vez

Unidades Concurrentes La ilusión de ejecución concurrente en monoprocesadores Intercalando la ejecución de procesos independientes se logra Se ejecuta sólo una parte del código de cada proceso

Ejemplo 1. La sentencia and (evaluación completa) If (sentencia-1 and sentencia-2 and ... and sentencia-n) Cada sentencia-i puede ser ejecutada en paralelo La siguiente sentencia (a If) no podrá ser ejecutada mientras NO finalice la ejecución de las n sentencias-i

Ejemplo x:=1; if (x:=2) and (y:=x+x)... print y; Las sentencias (x:=2) y (y:=x+x) pueden ser ejecutadas en paralelo: y puede finalizar con valor 2: si se ejecuta primero (y:=x+x) y luego (x:=2) Siempre debiera dar el mismo valor y puede finalizar con valor 4: si se ejecuta primero (x:=2) y luego (y:=x+x) y puede finalizar con valor 3: si la asignación (x:=2) se realiza entre los dos accesos a x en (y:=x+x)

Unidades Concurrentes Parte del código en el que accede a datos compartidos Unidades Concurrentes una adecuada sincronización entre ellos. requieren Los procesos concurrentes Mecanismos de sincronización Medios utilizados para que un proceso pueda informar a otro si completó o no parte de la ejecución de su código crítico. Asegurar que ningún otro proceso entre a su región crítica si el proceso en ejecución, que usa los recursos compartidos, está en su región crítica Semáforos Monitores Randezvous

Mecanismos de sincronización Semáforos (Algol, Dijkstra) Mecanismo de bajo nivel Se define como un objeto de dato que toma valores enteros no negativos (contador) Posee un valor inicial y dos operaciones atómicas P y V (Up, Down)

Mecanismos de sincronización Monitores (TAD) Módulo separado que coordina procesos en ejecución. TAD con operadores que consideran la exclusión mutua (Si un proceso está en su región crítica, ningún proceso puede entrar el la suya). Contiene una cola de solicitudes de acceso. Este mecanismo puede hacer esperar la ejecución de una rutina (delay) hasta que esté disponible el recurso y entonces "reavivar" el proceso. (continue).

Mecanismos de sincronización Randezvous (Ada) Es un punto de reunión que incluye: Sincronización Comunicación Ejecución de un bloque de código de procesos concurrentes Cliente Servidor Coordina las llamadas de procedimientos remotos: