Académique Documents
Professionnel Documents
Culture Documents
1. Introduccin a SDL
Esta seccin tiene como objetivo dar una visin general de lo que es el lenguaje
SDL, para que un usuario que lea esta memoria no se vea obligado a buscar informacin
externa sobre ello, ya que en varios puntos de este documento se presentarn algunos
ejemplos en SDL o se harn 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 especificacin y descripcin de sistemas de
telecomunicaciones que funcionan en tiempo real (control de sistemas, protocolos de
comunicaciones, etc.). Adems, permite elegir entre dos formas sintcticas diferentes
para la representacin de sistemas.
La primera es SDL/GR (Graphical Representation), siendo un lenguaje grfico
que define la estructura y flujos de control del sistema. La segunda es SDL/PR (Phrase
Representation), el cual es un lenguaje de programacin. Principalmente nos
centraremos en la primera.
1.2 Entidades
El lenguaje SDL se compone de entidades en forma de jerarqua. La entidad
principal es el sistema, el cual est compuesto por bloques. Los bloques estn
conectados entre s y con el entorno mediante canales, los cuales transportan seales.
Dentro de los bloques tenemos procesos, los cuales estn definidos por una mquina de
estados finita extendida, con variables, parmetros, acciones y temporizadores. Los
procesos tambin se comunican entre s por medio de seales.
Podramos resumir la jerarqua de la siguiente forma:
Pg. 1 de 18
BORRADOR
1.2.1 Sistema
Un sistema es la entidad de ms 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 seales. Adems, un sistema contiene un conjunto
de bloques, que tambin se comunican por medio de seales. Las seales, como ya
sabemos, se transmiten por medio de canales. El conjunto sistema/entorno se puede
resumir de la siguiente forma:
Pg. 2 de 18
BORRADOR
1.2.2 Bloque
Un bloque contiene una o ms definiciones de proceso de un sistema (al menos
una). La misin de un bloque es agrupar procesos que realizan una cierta funcin. Como
ya sabemos, los bloques se comunican mediante canales por lo que la definicin de un
bloque proporcionar una interfaz de comunicacin esttica para comunicarse con otros
procesos. Adems establece un mbito para definiciones de proceso. Un ejemplo
sencillo podra ser el siguiente:
1.2.3 Proceso
Un proceso se define como una mquina de estados finita extendida. Como ya
sabemos, en una mquina de estados existen estados y transiciones entre ellos. En este
caso se da una transicin de un estado a otro siempre que se recibe una seal vlida de
otro proceso o del entorno. Al realizarse esa transicin, 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 seales (a otros procesos o
al entorno), llamar a un procedimiento o incluso crear instancias de procesos. Las
seales recibidas por el proceso se denominan seales de entrada y las seales enviadas
se denominan seales de salida, aunque en el conjunto de seales de entrada vlidas
debemos aadir las seales del temporizador. Adems, una seal solo puede ser
consumida por un proceso cuando ste se encuentra en un estado.
Pueden existir varias instancias de un proceso ejecutndose concurrentemente, y
adems simultneamente con instancias de procesos distintos. Por otro lado, los
procesos tienen acceso al tiempo absoluto NOW, y pueden realizar clculos de tiempos.
Con respecto a la recepcin de seales de un proceso, debemos destacar que
cada proceso (mejor dicho, cada instancia) tiene una nica cola de seales de entrada
que no comparte con otros. Aparte de esto, para cada estado hay un conjunto de seales
de conservacin (saved signals). stas son seales que podremos evitar o conservar en
un estado concreto para posponer su procesamiento, ya que debido a que las seales se
almacenan en una cola FIFO puede ser que nos interese evitar ciertas seales para
consumirlas posteriormente y no interrumpir el funcionamiento del sistema. stas
Pg. 3 de 18
BORRADOR
seales sern las primeras en ser consumidas una vez se haya realizado la transicin de
estado en el mismo orden en el que llegaron.
Dicho esto, el esquema de un proceso quedara 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 seales entre dos bloques o un bloque y su entorno (si
es entre dos bloques no puede ser el mismo en los dos extremos). Podemos aadir que el
orden en el que llegarn las seales ser el mismo que el orden en el que se envan
desde el otro extremo. Asimismo, para cada canal debe haber una lista de seales que
transporta. Para terminar, podemos decir que pueden existir varios canales entre dos
extremos. Un ejemplo podra ser:
1.2.5 Seal
Una seal es un flujo de informacin entre procesos. La declaracin de seales
en SDL/GR se realiza mediante la inclusin de un cuadro TEXT (ver seccin 1.3), cuyo
contenido debe comenzar por la etiqueta SIGNAL y posteriormente los nombres de las
seales seguido de los tipos de los parmetros entre parntesis (siendo esto opcional),
como por ejemplo:
Pg. 4 de 18
BORRADOR
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 aade a la cola de seales de entrada (ver
seccin 1.2.3) una seal con el mismo nombre que el temporizador. Otra de las
operaciones que se pueden aplicar a un temporizador es la operacin de RESET, la cual
desactivar la operacin anterior (adems, si hay una seal en la cola de entrada
correspondiente al temporizador tambin se suprime).
Dicho esto se pueden distinguir dos estados del temporizador, activo e inactivo.
Estar activo desde la inicializacin hasta el consumo de la seal del temporizador por
parte del proceso (en cualquier otro caso estar inactivo). Cuando realizamos una
operacin 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 declaracin de un temporizador se realiza mediante la
inclusin de un cuadro TEXT (ver seccin 1.3) con la etiqueta TIMER seguido del
nombre que le queremos dar al temporizador. Un ejemplo sera:
Pg. 5 de 18
BORRADOR
1.3 Smbolos
Una vez entendidas las entidades de las que se compone un sistema especificado
en SDL vamos a ver los principales smbolos de los que se componen. A no ser que se
especifique lo contrario nos estaremos refiriendo siempre al nivel de proceso dentro de
la jerarqua.
Smbolo
Nombre
Include
Text
Uso
Se usa para incluir libreras SDL en el sistema.
Utilizaremos la directiva #include seguida de la
librera que queremos aadir entre comillas simples.
Contiene la declaracin de las estructuras, variables,
temporizadores y seales.
Para la declaracin de variables deberemos utilizar la
palabra reservada DCL seguido del nombre (uno o
varios) y el tipo de la variable que queremos declarar.
Tambin se pueden inicializar de forma anloga al
lenguaje C. Los tipos predefinidos ms comunes son
Boolean, Character, Charstring, Integer, Natural y
Real. Un ejemplo sencillo sera el siguiente:
Pg. 6 de 18
BORRADOR
Start
State
Input
Output
Task
Save
Decision
Pg. 7 de 18
BORRADOR
Connector
Stop
Procedure call
Procedure
reference
Procedure start
Procedure
return
Text extension
Pg. 8 de 18
BORRADOR
Pero es obvio que se pueden perder tramas durante la transmisin por lo que
debe tener recuperacin de errores. Para ello utiliza un mecanismo de ARQ (automatic
repeat request), que consiste en retransmisiones por parte del emisor si se detecta algn
tipo de error. En el caso anterior si se pierde una trama de datos habramos perdido
informacin. Para solucionar esto el emisor incorpora un temporizador de
retransmisin, y en el caso de no recibir la trama de confirmacin en un intervalo
determinado de tiempo realiza una retransmisin de la misma trama.
Pg. 9 de 18
BORRADOR
Podemos observar que una vez llega la trama de confirmacin ACK con
parmetro 1 el emisor ya sabe que el receptor espera por esa trama, envindosela
posteriormente. Por ltimo, podemos destacar que slo son necesarias dos
numeraciones de tramas (0 y 1), ya que una vez enviada la trama 1 volveremos a enviar
la trama 0.
Pg. 10 de 18
BORRADOR
El sistema contiene dos bloques, uno ser el emisor y otro el receptor. Entre
ambos podemos ver que hay dos canales (C1 y C2) por los que se enviarn las seales
TRAMA_DATOS y ACK. Aparte, el emisor posee otro canal de entrada (C3) por el
que le llega la seal DATOS_EMISOR del exterior o entorno. En la pila de protocolos
TCP/IP esta seal sera enviada por el nivel superior (nivel 3), pero como no vamos a
modelar ese nivel la seal la enviar el usuario mediante una interfaz. El receptor
tambin posee otro canal (C4) pero en este caso de salida, el cual transporta la seal
DATOS_RECEPTOR hacia el entorno. Esta seal tambin debera ser enviada al nivel
3 pero por los mismos motivos se manifestar en la interfaz de usuario como la
anterior.
Tambin observamos que hay un cuadro text con la declaracin de las seales
dichas anteriormente, debemos declarar TRAMA_DATOS y ACK con un parmetro
entero para la numeracin de tramas y confirmaciones como hemos dicho en el apartado
anterior.
Pg. 11 de 18
BORRADOR
Pg. 12 de 18
BORRADOR
Pg. 13 de 18
BORRADOR
Pg. 14 de 18
BORRADOR
Pg. 15 de 18
BORRADOR
Pg. 16 de 18
BORRADOR
Pg. 17 de 18
BORRADOR
Pg. 18 de 18