Compilador Diseo - Entorno de Ejecucin en Tiempo Real



Un programa como cdigo fuente es slo una coleccin de texto (cdigo, declaraciones, etc. ) y que lo viva, que exige la adopcin de medidas que se deben realizar en la mquina de destino. Un programa necesita recursos de memoria para ejecutar las instrucciones. El programa contiene los nombres de los procedimientos, los identificadores, etc., que requieren la asignacin de la ubicacin de memoria real en tiempo de ejecucin.

De motor en tiempo de ejecucin, nos referimos a un programa en ejecucin. Entorno de tiempo de ejecucin es un estado de la mquina de destino, que pueden incluir las bibliotecas de software, las variables de entorno, etc., para proporcionar servicios a los procesos que se ejecutan en el sistema.

Compatibilidad con Common Language Runtime system es un paquete, en su mayora generados con el programa ejecutable y facilita la comunicacin entre el proceso y el entorno en tiempo de ejecucin. ste se encarga de asignacin de memoria y asignacin mientras el programa se ejecuta.

rboles de activacin

Un programa es una secuencia de instrucciones en un nmero de procedimientos. Las instrucciones de un procedimiento se ejecutan de forma secuencial. El procedimiento tiene un inicio y un delimitador de fin y todo lo que hay en su interior se llama el cuerpo del procedimiento. El procedimiento identificador y la secuencia finita de instrucciones dentro que componen el cuerpo del procedimiento.

La ejecucin de un procedimiento que se denomina su activacin. Un registro de activacin contiene toda la informacin necesaria para llamar a un procedimiento. Un registro de activacin puede contener las siguientes unidades (dependiendo del idioma de origen usa).

Temporales Almacenes temporales y valores intermedios de una expresin.
Datos locales Almacena los datos locales del procedimiento llamado.
Estado de la mquina Almacena estado de la mquina, tales como registros, contador de programa, etc., antes de que el procedimiento se denomina.
Brazo de Control Almacena la direccin de registro de activacin de la persona que llama.
Enlace de acceso Almacena la informacin de los datos que se encuentran fuera del mbito local.
Parmetros reales Almacena los parmetros reales, es decir, los parmetros que se utilizan para enviar informacin al procedimiento llamado.
Valor de retorno Almacena valores de retorno.

Cuando un procedimiento se ejecuta, su registro de activacin se almacena en la pila, tambin conocida como pila de control. Cuando un procedimiento llama a otro procedimiento, la ejecucin de la persona que llama se suspende hasta que el procedimiento llamado finaliza la ejecucin. En este momento, el registro de activacin del procedimiento llamado se almacena en la pila.

Vamos a asumir que el control del programa pasa de una manera secuencial y cuando un procedimiento se llama, su control se transfiere al procedimiento llamado. Cuando una llamada se ejecuta el procedimiento, se devuelve el control a la persona que llama. Este tipo de flujo de control hace que sea ms fcil de representar una serie de activaciones en forma de rbol, conocido como el rbol de activacin.

Para entender este concepto, nos tomamos un trozo de cdigo como ejemplo:

. . .
printf(Enter Your Name: );
scanf(%s, username);
show_data(username);
printf(Press any key to continue);
. . .
int show_data(char *user)
   {
   printf(Your name is %s, username);
   return 0;
   }
. . . 

A continuacin, se muestra el rbol de activacin del cdigo.

rbol de Activacin

Ahora nos enteramos de que los procedimientos se ejecutan en profundidad, asignacin de espacio de pila es la mejor forma de almacenamiento las activaciones para el procedimiento.

Asignacin de almacenamiento

Entorno de tiempo de ejecucin ejecucin administra requisitos de memoria para las siguientes entidades:

  • Cdigo: es conocido como el texto parte de un programa que no cambia en tiempo de ejecucin. Sus requisitos de memoria son conocidos en el tiempo de compilacin.

  • Procedimientos: Su texto es esttico, sino que estn llamados de modo aleatorio. Es por ello que, de apilamiento se utiliza para gestionar llamadas de procedimiento y las activaciones.

  • Variables: Las variables son conocidos en el tiempo de ejecucin, a no ser que son globales o constante. Montn de asignacin de memoria se utiliza para la gestin y asignacin de asignacin de memoria para las variables en el tiempo de ejecucin.

Asignacin esttica

En este esquema de asignacin y de la recopilacin de datos se enlaza a una ubicacin fija en la memoria y que no cambie cuando se ejecuta el programa. Como los requisitos de memoria y los lugares de almacenamiento son conocidos de antemano, paquete compatibilidad en tiempo de ejecucin para la asignacin de memoria y de asignacin no es necesario.

Asignacin de espacio de pila

Llamadas de Procedimiento y las activaciones son administrados por medio de asignacin de memoria de pila. Funciona en last-in-first-out (LIFO) mtodo y de esta estrategia de asignacin es muy til para llamadas a procedimiento recursivo.

Asignacin del montn

Las variables locales de un procedimiento se asignar y desasignar slo en tiempo de ejecucin. Asignacin del montn se utiliza para asignar memoria dinmicamente para las variables y reclamar su devolucin cuando las variables no son ms necesarios.

Salvo memoria reservada estticamente, tanto memoria de pila y montn pueden ampliar y reducir dinmicamente e inesperadamente. Por lo tanto, no pueden ser proporcionados con una cantidad fija de memoria en el sistema.

Asignacin Montn

Tal como se muestra en la imagen de arriba, la parte de texto del cdigo se asigna una cantidad fija de memoria. Memoria de pila y montn se organizan en los extremos de memoria total asignada al programa. Tanto disminuir y aumentar uno contra el otro.

Paso de parmetros

El medio de comunicacin entre los procedimientos se conoce como paso de parmetros. Los valores de las variables de un procedimiento de llamada se transfieren al procedimiento llamado por algn mecanismo. Antes de seguir adelante, en primer lugar ir a travs de alguna terminologa bsica relativa a los valores de un programa.

Valor de r

El valor de una expresin se denomina r-valor. El valor contenido en una sola variable se convierte tambin en un valor de r si aparece en el lado derecho del operador de asignacin, valores siempre se puede asignar a alguna otra variable.

Valor l

La ubicacin de la memoria (direccin) donde la expresin se almacena es conocida como la l-valor de la expresin. Siempre aparece en la parte izquierda de un operador de asignacin.

Por ejemplo:

day = 1;
week = day * 7;
month = 1;
year = month * 12;

En este ejemplo, tenemos entendido que los valores de las constantes como 1, 7, 12, y variables como da, semana, mes y ao, todas tienen valores r. Slo las variables que l-valores como son, adems, la ubicacin de la memoria que se les han asignado.

Por ejemplo:

7 = x + y;

Es un valor l error, ya que la constante 7 no representa un lugar de la memoria.

Parmetros formales

Las variables que tome la informacin que pasa por la persona que llama se llama parmetros formales. Estas variables son declaradas en la definicin de la funcin llamada.

Parmetros reales

Las variables cuyos valores o direcciones se pasan al procedimiento llamado se denominan parmetros reales. Estas variables son especificados en la llamada a la funcin como argumentos.

Ejemplo:

fun_one()
{
   int actual_parameter = 10;
   call fun_two(int actual_parameter);
}
   fun_two(int formal_parameter)
{
   print formal_parameter;
}

Los parmetros formales cuentan con la informacin del parmetro real, dependiendo del parmetro tcnica utilizada. Puede ser un valor o una direccin.

Paso por valor

En el paso por valor, el procedimiento de llamada pasa el valor de r de parmetros reales y el compilador lo pone en el llamado procedimiento de registro de activacin. Parmetros formales, a continuacin, mantener los valores pasados por el procedimiento de llamada. Si los valores de los parmetros formales se cambian, no debera afectar a los parmetros reales.

Pasar por referencia

En el paso por mecanismo de referencia, el valor l de el parmetro real se copian en el registro de activacin del procedimiento llamado. Esta manera, el procedimiento llamado tiene ahora la direccin (la ubicacin de la memoria) del parmetro real y el parmetro formal se refiere a la misma ubicacin de la memoria. Por tanto, si el valor indicado por el parmetro formal ha cambiado, el impacto debe considerarse en el parmetro real que tambin con el mismo valor.

Pasar por un ejemplar de la restauracin

Este paso de parmetros mecanismo funciona de forma similar a "pasar por referencia", excepto que los cambios en los parmetros reales se realizan cuando el procedimiento llamado extremos. Una llamada a la funcin, los valores de los parmetros reales se copian en el registro de activacin del procedimiento llamado. Los parmetros formales si manipulan no tienen efecto en tiempo de real de los parmetros reales (como l-se pasan los valores), pero cuando el procedimiento llamado termina, el l-valores de los parmetros formales se copian en el l-valores de parmetros reales.

Ejemplo:

int y; 
calling_procedure() 
{
   y = 10;     
   copy_restore(y); //l-value of y is passed
   printf y; //prints 99 
}
copy_restore(int x) 
{     
   x = 99; // y still has value 10 (unaffected)
   y = 0; // y is now 0 
}

Cuando la funcin termina, el l-valor de parmetro formal x se copia en el parmetro real. Incluso si el valor de y se cambia antes de que el proceso se termina, el l-valor de x se copia en el l-valor de y hacer que se comporte como llamada por referencia.

Pasar por Nombre

Lenguajes como Algol proporcionar un nuevo tipo de paso de parmetros que funciona como mecanismo preprocesador en lenguaje C. En el paso por su nombre, el nombre del procedimiento que se llama sea reemplazado por su cuerpo real. Pasar por nombre textualmente las expresiones sustituye el argumento en una llamada a procedimiento para los parmetros correspondientes en el cuerpo del procedimiento, a fin de que ya se puede trabajar en parmetros reales, como pasar por referencia.

Advertisements