PDF de programación - Introducción a SDL

Imágen de pdf Introducción a SDL

Introducción a SDLgráfica de visualizaciones

Publicado el 7 de Octubre del 2019
713 visualizaciones desde el 7 de Octubre del 2019
190,8 KB
18 paginas
Creado hace 16a (06/03/2008)
BORRADOR



DAVID ESTEBAN SASTRE

1. Introducción a SDL


Esta sección tiene como objetivo dar una visión general de lo que es el lenguaje
SDL, para que un usuario que lea esta memoria no se vea obligado a buscar información
externa sobre ello, ya que en varios puntos de este documento se presentarán algunos
ejemplos en SDL o se harán referencias al lenguaje. No es ni mucho menos un manual
completo, por lo que no entraremos en todos los detalles.


1.1 ¿Qué es SDL?


SDL es un lenguaje orientado a la especificación y descripción de sistemas de

telecomunicaciones que funcionan en tiempo real (control de sistemas, protocolos de
comunicaciones, etc.). Además, permite elegir entre dos formas sintácticas diferentes
para la representación de sistemas.

La primera es SDL/GR (Graphical Representation), siendo un lenguaje gráfico
que define la estructura y flujos de control del sistema. La segunda es SDL/PR (Phrase
Representation), el cual es un lenguaje de programación. Principalmente nos
centraremos en la primera.


1.2 Entidades


El lenguaje SDL se compone de entidades en forma de jerarquía. La entidad
principal es el sistema, el cual está compuesto por bloques. Los bloques están
conectados entre sí y con el entorno mediante canales, los cuales transportan señales.
Dentro de los bloques tenemos procesos, los cuales están definidos por una máquina de
estados finita extendida, con variables, parámetros, acciones y temporizadores. Los
procesos también se comunican entre sí por medio de señales.

Podríamos resumir la jerarquía de la siguiente forma:



Pág. 1 de 18

BORRADOR



DAVID ESTEBAN SASTRE

1.2.1 Sistema

Un sistema es la entidad de más alto nivel y obviamente representa a todo el
sistema que queremos modelar. Está separado de su entorno por la frontera del sistema,
con el que se comunica por medio de señales. Además, un sistema contiene un conjunto
de bloques, que también se comunican por medio de señales. Las señales, como ya
sabemos, se transmiten por medio de canales. El conjunto sistema/entorno se puede
resumir de la siguiente forma:



Asimismo, el contenido de un sistema se podría explicar con el siguiente

diagrama:



Pág. 2 de 18

BORRADOR



DAVID ESTEBAN SASTRE

1.2.2 Bloque

Un bloque contiene una o más definiciones de proceso de un sistema (al menos
una). La misión de un bloque es agrupar procesos que realizan una cierta función. Como
ya sabemos, los bloques se comunican mediante canales por lo que la definición de un
bloque proporcionará una interfaz de comunicación estática para comunicarse con otros
procesos. Además establece un ámbito para definiciones de proceso. Un ejemplo
sencillo podría ser el siguiente:



1.2.3 Proceso

Un proceso se define como una máquina de estados finita extendida. Como ya
sabemos, en una máquina de estados existen estados y transiciones entre ellos. En este
caso se da una transición de un estado a otro siempre que se recibe una señal válida de
otro proceso o del entorno. Al realizarse esa transición, se pueden realizar operaciones
como manipular datos locales al proceso (se hace por medio de variables locales,
permitiendo cualquier tipo de datos incluido struct), enviar señales (a otros procesos o
al entorno), llamar a un procedimiento o incluso crear instancias de procesos. Las
señales recibidas por el proceso se denominan señales de entrada y las señales enviadas
se denominan señales de salida, aunque en el conjunto de señales de entrada válidas
debemos añadir las señales del temporizador. Además, una señal solo puede ser
consumida por un proceso cuando éste se encuentra en un estado.

Pueden existir varias instancias de un proceso ejecutándose concurrentemente, y
además simultáneamente con instancias de procesos distintos. Por otro lado, los
procesos tienen acceso al tiempo absoluto NOW, y pueden realizar cálculos de tiempos.
Con respecto a la recepción de señales de un proceso, debemos destacar que
cada proceso (mejor dicho, cada instancia) tiene una única cola de señales de entrada
que no comparte con otros. Aparte de esto, para cada estado hay un conjunto de señales
de conservación (saved signals). Éstas son señales que podremos evitar o conservar en
un estado concreto para posponer su procesamiento, ya que debido a que las señales se
almacenan en una cola FIFO puede ser que nos interese evitar ciertas señales para
consumirlas posteriormente y no interrumpir el funcionamiento del sistema. Éstas

Pág. 3 de 18

BORRADOR



DAVID ESTEBAN SASTRE

señales serán las primeras en ser consumidas una vez se haya realizado la transición de
estado en el mismo orden en el que llegaron.

Dicho esto, el esquema de un proceso quedaría de la siguiente forma:



1.2.4 Canal

Con respecto a los canales no tenemos mucho que decir. Ya sabemos que un
canal es una ruta para transportar señales entre dos bloques o un bloque y su entorno (si
es entre dos bloques no puede ser el mismo en los dos extremos). Podemos añadir que el
orden en el que llegarán las señales será el mismo que el orden en el que se envían
desde el otro extremo. Asimismo, para cada canal debe haber una lista de señales que
transporta. Para terminar, podemos decir que pueden existir varios canales entre dos
extremos. Un ejemplo podría ser:



1.2.5 Señal

Una señal es un flujo de información entre procesos. La declaración de señales
en SDL/GR se realiza mediante la inclusión de un cuadro TEXT (ver sección 1.3), cuyo
contenido debe comenzar por la etiqueta SIGNAL y posteriormente los nombres de las
señales seguido de los tipos de los parámetros entre paréntesis (siendo esto opcional),
como por ejemplo:



Pág. 4 de 18

BORRADOR



DAVID ESTEBAN SASTRE



1.2.6 Temporizadores

Uno de los recursos que pueden utilizar los procesos son los temporizadores. Un
temporizador es un objeto que puede operar con tiempos. Se inicializa con la sentencia
SET, en cuyo caso se le asocia un valor de tiempo. Cuando el tiempo del sistema llega
al tiempo establecido para el temporizador, se añade a la cola de señales de entrada (ver
sección 1.2.3) una señal con el mismo nombre que el temporizador. Otra de las
operaciones que se pueden aplicar a un temporizador es la operación de RESET, la cual
desactivará la operación anterior (además, si hay una señal en la cola de entrada
correspondiente al temporizador también se suprime).

Dicho esto se pueden distinguir dos estados del temporizador, activo e inactivo.
Estará activo desde la inicialización hasta el consumo de la señal del temporizador por
parte del proceso (en cualquier otro caso estará inactivo). Cuando realizamos una
operación de RESET, el temporizador pasará de activo a inactivo.

Para referirnos a un tiempo concreto normalmente utilizaremos el tiempo
absoluto del sistema (NOW), que es visible por todos los procesos y se comparte. Dicho
esto, explicaremos como manejar estas operaciones con SDL/GR.

Primeramente, la declaración de un temporizador se realiza mediante la
inclusión de un cuadro TEXT (ver sección 1.3) con la etiqueta TIMER seguido del
nombre que le queremos dar al temporizador. Un ejemplo sería:



El cual declararía un temporizador llamado T.
La inicialización se efectúa mediante la sentencia SET, que recibe dos
argumentos. El primero de ellos es el tiempo en el cual vence el temporizador, como ya
hemos dicho utilizaremos la sentencia NOW para utilizar el tiempo actual del sistema
sumándole los segundos que queramos que pasen hasta la activación del temporizador.
Esta sentencia la deberemos añadir en un cuadro TASK (ver sección 1.3) dentro de la
definición de un procedimiento. Un ejemplo sería:



Activaría el temporizador T para ser activado tras 13 segundos.



Pág. 5 de 18

BORRADOR



DAVID ESTEBAN SASTRE

Por otro lado, la reinicialización de un temporizador se realiza mediante la
sentencia RESET, la cual recibe un único argumento correspondiente al nombre del
temporizador. También debe ir dentro de un cuadro TASK (ver sección 1.3). Para
reinicializar el temporizador anterior añadiríamos:



Para terminar, vamos a resumir el comportamiento de un temporizador en el

siguiente autómata:



1.3 Símbolos

Una vez entendidas las entidades de las que se compone un sistema especificado
en SDL vamos a ver los principales símbolos de los que se componen. A no ser que se
especifique lo contrario nos estaremos refiriendo siempre al nivel de proceso dentro de
la jerarquía.



Símbolo

Nombre
Include

Text



Uso

Se usa para incluir librerías SDL en el sistema.
Utilizaremos la directiva #include seguida de la
librería que queremos añadir entre comillas simples.
Contiene la declaración de las estructuras, variables,
temporizadores y señales.

Para la declaración de variables deberemos utilizar la
palabra reservada DCL seguido del nombre (uno o
varios) y el tipo de la variable que queremos declarar.
También se pueden inicializar de forma análoga al
lenguaje C. Los tipos predefinidos más comunes son
Boolean, Character, Charstring, Integer, Natural y
Real. Un ejemplo sencillo sería el siguiente:

Pág. 6 de 18

BORRADOR



DAVID ESTEBAN SASTRE



Para la declaración de constantes utilizaremos la
palabra reservada SIGNAL seguida del nombre de la
señal y los parámetros que contendrá entre paréntesis.
Como por ejemplo:



En los niveles de
  • Links de descarga
http://lwp-l.com/pdf16680

Comentarios de: Introducción a SDL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad