miércoles, 29 de junio de 2011

Opinion sobre exposicion de Carlos Freynier

El tema que expuso Carlos se llama "Control supervención y adquisición de datos en Ethernet". De manera general se trata de la implementación de un sistema de supervención usando la red Ethernet mediante microcontrolador de microchip. Comento acerca de la retroalimentación que debe tener este tipo de sistema ya que es como se puede lograr la supervención en tiempo real y pues esa seria una de las ventajas de esta configuración. Además, dijo también que para tener una comunicación a través de la red es  necesario el uso de protocolos de Internet como TCP, UDP, FTP, etc. El ejemplo que puso fue el controlar la velocidad de un motor usando este sistema además de visualizar las revoluciones a las que gira. En lo particular esta exposición me pareció muy interesante ya que abre una ventana para la aplicación de la programación en tiempo real para proyectos futuros.

martes, 14 de junio de 2011

Acciones Atómicas (Resumen)

definición: 
Existen distintas formas casi equivalentes de expresar las propiedades de una acción atómica (Lomet. 1977; Randell et al., 1978).

(1) Una acción es atómica si los procesos que la realizan no saben de la existencia de ningún otro proceso activo, y ningún otro proceso activo tiene constancia de las actividades de los procesos durante el tiempo que en el actué están realizando la acción.

(2) Una acción es atómica si los procesos que 1a realizan no se comunican con otros procesos mientras esta siendo realizada la acción.

(3) Una acción es atómica si los procesos que la realizan no pueden detectar ningún cambio de estado salvo aquéllos realizados por ellos mismos, y si no revelan sus cambios tic estado hasta que la acción se haya completado.

(4) Las acciones son atómicas si, en lo que respecta a otros procesos, pueden ser consideradas invisibles e instantáneas, de forma que los efectos sobre el sistema sean como si estuvieran entrelazadas y no en concurrencia.

Estas definiciones no son totalmente equivalentes. Por ejemplo, considérese la segunda: <<una acción es atómica si los procesos que la realizan se comunican sólo entre sí y no con otros procesos del sistema>>. Al contrario que las otras tres. esta no define realmente la naturaleza auténtica de una acción atómica. A pesar de que garantiza que La acción es indivisible, estima restricción demasiado fuerte sobre los procesos. Se pueden permitir interacciones entre la acción atómica y el recto del sistema mientras no influyen en la actividad de la acción atómica y no se proporcione al resto del sistema ninguna información sobre el progreso de la acción (Anderson y Lee, 1990). En general, para permitir estas interacciones es necesario conocer detalladamente la función de la acción atómica y su interfaz con el resto del sistema.

Aunque una acción atómica se vea como algo indivisible. puede tener estructura interna. Para permitir la descomposición modular de las acciones atómicas se incorpora la noción de acciones atómicas anidadas. Los procesos comprometidos en una acción anidada deben ser un subconjunto de los que están involucrados en el nivel externo de la acción. Si no fuera así. una acción anidada podría pasar información relativa a la acción de nivel externo a un proceso externo.
Entonces, la acción de nivel externo ya no sería indivisible.

Acciones Atómicas de <<dos fases>>

Idealmente. todos los procesos involucren una acción atómica deberían obtener los requisitos necesarios (mientras dure la acción antes de comenzar. Estos recursos pueden ser liberados después de terminar la  acción atómica. Si se siguen estas reglas, no existe la necesidad de que la acción atómica interactúe con ninguna entidad externa. y se podría adoptar la definición de acción atómica más estricta.

La asignación de recursos mejora sustancialmente si se permite que la acción atómica liberar recursos antes de finalizar. Para que esta liberación prematura tenga sentido, es preciso que el efecto global sobre el estado del recurso sea idéntico al que correspondería si se retuviera el recurso hasta el final. Sin embargo, la pronta liberación mejora la concurrencia de todo el sistema.

Transacciones atómicas

La expresión transacciones atómicas se ha utilizado frecuentemente en el marco conceptual de los sistemas operativos y las bases de datos. Una transacción atómica tiene todas las propiedades de una acción atómica, más la característica adicional de que su ejecución puede tener éxito o fallar (no éxito). Por fallo se entiende la ocurrencia de un error del que la transacción no puede recuperarse; por ejemplo, un fallo de procesador. Si falla una acción atómica, los componentes del sistema que están siendo manipulados por la acción pueden terminar en un estado inconsistente.

ante el fallo, una transacción  atómica garantiza que los componentes sin devueltos a su estado original (esto es, al estado en el que estaban antes de que se conozcase la transacción). las transacciones atómicas a veces se conocen como acciones recuperables, aunque, desafortunadamente, se tienden a confundir los términos  acción  atómica y transacción atómica.
  • Atomicidad de fallo. lo que significa la transacción  debe o bien ser completada con éxito, o (en el caso de fallar) no tener efecto.
  • Atomicidad de sincronización (o aislamiento), lo que significa que la transacción es indivisible, en el sentido de que su ejecución parcial no puede ser observada por ninguna transacción que se este ejecutando concurrentemente.

requisitos de las acciones atómicas:
  • limites bien definidos
  • invisibilidad (aislamiento)
  • anidamiento
  • concurrencia

viernes, 10 de junio de 2011

Protocolo de Techo de Prioridad Inmediata - Expocición

Definición de protocolo:

En informática, un protocolo es un conjunto de reglas usadas por computadoras para comunicarse unas con otras a través de una red. Puede ser definido como las reglas que dominan la sintaxis, semántica y sincronización de la comunicación.

A su más bajo nivel, un protocolo define el comportamiento de una conexión de hardware.


Protocolo de techo de prioridad:


Este protocolo designa como techo de prioridad de un recurso a la máxima prioridad de las tareas que lo usan. El protocolo consiste en que la prioridad de una tarea sea dinámica y que su valor sea el máximo entre su prioridad básica y las prioridades de las tareas a las que bloquea.

Entonces, una tarea solo puede usar un recurso si su prioridad dinámica es mayor que el techo de todos los recursos en uso por otras tareas.

Características

  • Cada tarea tiene prioridad estática por defecto. 
  • Cada tarea tiene una prioridad dinámica. 

  • Cada recurso tiene un valor techo estático. 

  • Una tarea solo puede bloquear un recurso si su prioridad dinámica supera el techo de prioridad de todos los recursos ya bloqueados por otras tareas.

miércoles, 30 de marzo de 2011

Ensayo (tarea 5)

Maquinas secuenciales y maquinas paralelas

Una máquina secuencial es aquella que realiza una serie de operaciones una tras otra en el tiempo, es aquella que su salida depende, además de sus entradas, de los estados anteriores del sistema (el sistema tiene memoria).
Las funciones que desempaña una maquina de estado finito es un factor importante debido a que tienen un campo muy amplio de aplicación, cada uno de los elementos que se requieren para que estas maquinas desempeñen funciones necesarias e importantes.

la mayoria de los problemas complejos se pueden resolver eficientemente en una máquina paralela. Esto se debe a que las máquinas paralelas pueden simularse con máquinas secuenciales.
Las computadoras multiprocesadores en paralelo efectúan las mismas operaciones a un conjunto de datos en forma paralela. Los procesadores trabajan síncronamente.El cómputo paralelo ofrece una serie de ventajas que lo hacen particularmente atractivo Una de estas ventajas es económica. El uso de componentes comúnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un precio menor que el de máquinas con procesadores especialmente diseñados (como por ejemplo las máquinas de procesadores vectoriales y de propósito específico). 

Modelos de memoria comparitida y memoria distribuida

fig.1 memoria compartida


fig.2 memoria distribuida

¿Por qué es útil hacer simulación cuando se implementan sistemas de tiempo real?

la simulación es de mucha utilidad cuando se implementan sistemas de tiempo real porque es una manera de saber como se comporta el mismo, y conocer bajo que parámetros lo va a hacer. También, con la simulación se puede ahorrar dinero y tiempo al evitar la completa puesta en marcha no hasta saber si el sistema esta respondiendo como queremos.


http://148.202.148.5/cursos/cc209/teoriacomp/MODULO_2/Teoria_2_1.htm
http://homepage.cem.itesm.mx/rogomez/SlidesDist/dsm.pdf
www.cimat.mx/ciencia_para_jovenes/tcj/2002/optica/notas.../sesion2.ppt
http://www.josecc.net/archivos/tesis/tesis_html1

lunes, 28 de marzo de 2011

Resumen conferencia "OpenMP"


En la conferencia “OpenMP” se trato el tema sobre el sistema de multi procesamiento OpenMP, se dijo que es una interfaz de programación de aplicaciones (API) utilizada en la programación multiproceso de memoria compartida en múltiples plataformas, se mencionó también que esta API permite añadir concurrencia a los programas escritos en C, C++ y FORTRAN sobre la base modelo de ejecución “fork/join”. Se trató también el tema sobre la programación paralela la cual es un tipo de estructuración de órdenes para sistemas de tiempo real en donde se requiere una respuesta rápida y exacta; se mencionó también que para poder realizar este tipo de programación es necesario un hardware especial el cual tiene la característica que está formado por varios núcleos de procesamiento que deja como gran ventaja que el tiempo de ejecución en este sistema es considerable si se compara con una respuesta de un procesamiento normal.

Lengujes de Programacion en Tiempo Real (RTPL) (Tarea 4)



Un lenguaje de programación de sistemas de tiempo real debe facilitar la realización de sistemas
– concurrentes,
– fiables,
– puntuales.

Las características más importantes para la realización de programas en pequeña escala son
– léxico
– tipos de datos y objetos
– instrucciones
– subprogramas
– estructura de programas

ADA
Su nombre rinde honor a Lady Ada de Lovelanle, la cual fue colaboradora de Charles Babbage. El ADA, cuyo primer estándar se definió en 1983, se diseño y desarrolló por encargo del Departamento de defensa de los Estados Unidos, orientado a la programación y desarrollo de sistemas empotrados. ADA integra la noción de tipo abstracto y un mecanismo que permite expresar la cooperación y comunicación entre procesos. Sus principales características son:

-Soporta tecnologías de software avanzadas.
-Incluye concurrencia, tiempo real, acceso a recursos de bajo nivel y un potente tratamiento de excepciones.
-Transportabilidad, legibilidad, eficiencia, seguridad.

Fue diseñado con la seguridad en mente y con una filosofía orientada a la reducción de errores comunes y difíciles de descubrir. Para ello se basa en un tipado muy fuerte y en chequeos en tiempo de ejecución (desactivables en beneficio del rendimiento). La sincronización de tareas se realiza mediante la primitiva rendezvous.

Es un lenguaje imperativo, descendiente de Pascal
– estructura en bloques
– fuertemente tipado
-Es un lenguaje pensado para realizar sistemas empotrados de gran dimensión

Dos versiones normalizadas
– Ada 83 (ISO 8652:1987)
– Ada 95 (ISO 8652:1995)

OCCAM
Occam es un lenguaje de programación imperativo y estructurado (al igual que Pascal). Fue desarrollado por David May en Inmos Limited, Bristol, Inglaterra, para desarrollar software para su línea de procesadores Transputers, existiendo también implementaciones para otras plataformas.El lenguaje Occam es un lenguaje asociado a la plataforma Transputer. No es adecuado para el desarrollo de grandes aplicaciones.

C
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

JAVA
Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible.

MODULA-2
El lenguaje Modula-2 es un descendiente del Modula y del Pascal. Las funciones de concurrencia y restricciones temporales se realizan en un módulo especifico denominado núcleo. Es un lenguaje que se muestra adecuado para el desarrollo de aplicaciones de tamaño pequeño a medio.

FORTRAN
cuenta con la ventaja de poseer un nivel de abstracción más alto, pero dependen del sistema operativo para las funciones de concurrencia y temporización, además suele ser necesario realizar algunas funciones en ensamblador. A este lenguajes se le añade una serie de funciones y mecanismos:

-Funciones para ejecución en tiempo real ( run time system, tareas…)
-Bibliotecas de funciones software que dan al programador un cierto nivel de comodidad a la hora de trabajar   con la interface del proceso o con el control del tiempo de ejecución.
-Compiladores que generen un código eficaz



1. Burns,A.,Wellings, A.(2002) Sistemas de Tiempo Real y Lenguajes de Programación (3ª Edición). España: Addison-Wesley Iberoamericana.

sábado, 26 de marzo de 2011

Sistemas Operativos de Tiempo Real (RTOS) (Tarea 4)


Arquitecturade un SistemaOperativo de PropósitoGeneral

La memoria física de un computar esta dividida entre el espacio reservado para los usuarios (“user-space”) y el espacio reservado para el kernel (“kernel-space”). El kernel multitarea es capaz de manejar múltiples aplicaciones de usuarios que ejecutan en el espacio de usuario haciendo creer a cada uno que dispone de todo el espacio de memoria y de todos los recursos hardware. La comunicación entre los programas en el espacio de usuario y el espacio del kernel se realiza a través de las llamadas al sistema.Todos los accesos a los recursos hardware son controlados por el kernel.

Diferencias entre los sistemas operativos convencionales y los de tiempo real


      Los sistemas convencionales proveen un nivel de servicio adecuado a las aplicaciones que requieran una respuesta en un intervalo de tiempo determinado.

·         
En los sistemas convencionales la comunicación entre los programas en el espacio de usuario y el espacio del kernel se realiza a través de las llamadas al sistema.
·         
En  En un sistema convencional todos los accesos a los recursos hardware son controlados por el kernel de modo que los programas de usuario no conozcan los detalles físicos de los dispositivos.


·         Todos los sistemas operativos tienden a tener una baja latencia y un bajo jitter, pero los sistemas operativos de tiempo real requieren que esos valores estén determinados y que no dependan de la carga del sistema.
·         
La característica principal de los sistemas operativos de tiempo real es la respuesta ante eventos internos o externos, tales como interrupciones hardware externas, interrupciones software internas o interrupciones de reloj internas, es decir los requerimientos temporales.


·         El criterio fundamental de evaluación del rendimiento de un sistema operativo de tiempo real es la latencia y el periodo del jitter ante un evento. Un evento es cualquier tipo de interrupción, tanto interna, como externa.


·         La parte fundamental para convertir un sistema operativo de propósito general en un sistema operativo de tiempo real es el manejo de las interrupciones.



Rendimiento de un sistema


                                           Aplicación                         Latencia/Jitter
estándar OS                         Nom Real-Time                  100μs to 100ms
estándar Linux (>2.5.X)        Soft Real-Time                   1ms
IEEE 1003.1d                        Hard Real-Time                  10 to 100μs
Micro-Kernel                         Hard Real-Time                  1 to 10μs
RTOS Kernel                         Hard Real-Time                  1 to 10μs

Distribuciones

Clasificación



Descripción

ADEOS – Adaptative Domain Environment Operating Systems

El objetivo de ADEOS es proporcionar un entorno flexible para compartir los recursos hardware para múltiples sistemas operativos ó múltiples instancias de un mismo sistema operativo.
ADEOS activa múltiples kernels, llamados dominios, que existen simultáneamente sobre el mismo hardware. Ninguno de éstos dominios necesariamente conoce la existencia del resto, pero todos ellos si conocen de la existencia de ADEOS. Un dominio puede ser un Sistema Operativo completo, pero no necesariamente. 
Actualmente ADEOS permite compartir las interrupciones hardware.

Real Time Application Interface

RTAI es una implementación de Linux para tiempo real basada en RTLinux. Añade un pequeño kernel de tiempo real bajo el kernel estándar de linux y trata al kernel de linux como una tarea con la menor prioridad. RTAI además proporciona una amplia selección de mecanismos de comunicación entre procesos y otros servicios de tiempo real.
Adicionalmente, RTAI proporciona un módulo llamado LXRT para facilitar el desarrollo de aplicaciones de tiempo  real en el espacio de usuario.

RTLinux

RTLinux es un sistema operativo de tiempo real que ejecuta Linux como un thread de menos prioridad que las tareas de tiempo real. Con este diseño, las tareas de tiempo real y los manejadores de interrupciones nunca se ven retrasados por operaciones que no son de tiempo real.
La primera versión de RTLinux estaba diseñada para ejecutarse en la plataforma x86 y proporcionaba una  pequeña API y un pequeño entorno de programación. La versión 2, que fue totalmente reescrita, fue diseñada para el soporte de multiprocesamiento simétrico (SMP) y para ser ejecutada en una amplia variedad de arquitecturas.
RTLinux proporciona la capacidad de ejecutar tareas de tiempo real y manejadores de interrupciones en la misma máquina que el Linux estándar. Estas tareas y los manejadores ejecutan cuando se necesitan en detrimento de lo que estuviera ejecutando Linux. El peor caso de tiempo es entre que se detecta la interrupción hardware y el procesador ejecuta la primera instrucción del manejador de la interrupción. Este tiempo es del orden de los 10 microsegundos en la plataforma x86.

ART Linux

ART Linux es una extensión de tiempo real sobre Linux basado en RTLinux y desarrollado por Youichi Ishiwata.

KURT – Kansas University Real Time

KURT junto con UTIME es una extensión al kernel estándar de Linux para proporcionar, bajo demanda, resolución de microsegundos en los relojes y planificación de tiempo real.

Linux/RK – Linux/Resource Kernel

Linux/RK significa Linux / Resource Kernel y consiste en incorporar extensiones de tiempo real a Linux mediante una abstracción llamada recurso kernel.

Qlinux

Qlinux es un kernel de Linux que proporciona calidad de servicio garantizada para requerimientos de tiempo real flexible. Por tanto no es un sistema operativo específico de tiempo real, sino que esta orientado hacia aplicaciones multimedia que requieren una determinada calidad de servicio.

RED-Linux

RED-Linux es una versión de Linux para tiempo real y embebida. Proporciona capacidades adicionales al kernel
estándar de Linux para proporcionar comportamiento de tiempo real.

BlueCat RT

BlueCat RT es una versión de Linux para tiempo real y embebida. Es una solución híbrida entre el sistema operativo embebido BlueCat (LinuxWorks) y el sistema RTLinux/Pro (FSMLabs).

RedHawk

Es una versión de tiempo real del código abierto de Linux desarrollada por la empresa Concurrent Computer
Corporation's RedHawk bajo los estándares industriales y POSIX. RedHawk es compatible con la distribución Red Hat Linux proporcionando alto rendimiento de entrada/salida, tiempo de respuesta garantizado a evento externos y comunicación entre procesos optimizada.
RedHawk es ideal para ambientes con complejas aplicaciones de tiempo real como pueden ser la simulación, la
adquisición de datos ó los sistemas de control industrial.

REDICE-Linux

REDICE-Linux es un kernel de tiempo real que combina la planificación de tiempo real estricto y un kernel prioritario con la baja latencia de un completo kernel de tiempo real estricto como es el de RTAI. Es decir, combina ambas tecnologías de diseño de sistemas operativos de tiempo real.
REDICE-Linux es un sistema operativo embebido ideal para aplicaciones de internet, dispositivos de redes, dispositivos médicos, industriales, adquisición de datos, control de máquinas y otros donde el tiempo es crítico, además de aplicaciones que requieran una determinada y garantizada calidad de servicio.

TimeSys Linux

TimeSys Linux es más que una distribución de un kernel de tiempo real, es un conjunto completo de herramientas para el desarrollo de aplicaciones de tiempo real de forma cómoda y rápida. Es una distribución para sistemas embebidos.

Linux-SRT

Linux-SRT es una extensión al kernel de Linux que inició el camino hacia la ejecución de aplicaciones de tiempo real. El kernel estándar de Linux no era un sistema operativo multimedia, no garantizaba que el audio, el vídeo u otro proceso crítico ejecutará con una transferencia fijada, por eso nació este proyecto con el objetivo de crear un sistema operativo
multimedia que proporcionara una calidad de servicio determinada, pero no estricta, de ahí el nombre, Linux-SRT (soft real time). No es adecuado para sistemas críticos. Este proyecto se ha abandonado actualmente debido al laborioso proceso de modificación del kernel.

Mapa Mental de los RTOS






1. Zamarron L. D. (2004) Analisis de Sistemas Operativos de tiempo Real Libres. GNU free document license.

miércoles, 9 de marzo de 2011

Comentario sobre el video "Robot Pendulo Invertido"


Este vídeo nos muestra un robot con ruedas que controla el equilibrio de una vara metálica. Es un sistema de tiempo real ya que el robot responde al instante cuando siente que la vara va hacia un lado, de manera que busca su equilibrio, se ve que entre mas se desequilibre la vara mas rápido se mueve el robot.

lunes, 7 de marzo de 2011

definición: latencia, tarea, proceso, concurrencia

Latencia: En informática, latencia es el lapso necesario para que un paquete de información viaje desde la fuente hasta su destino. La latencia y el ancho de banda, juntos, definen la capacidad y la velocidad de una red.

Tarea:  En computación, una tarea es una instancia de un programa. Actualmente los sistemas multitarea soportan la ejecución de múltiples procesos, dando la apariencia de que pueden correr simultáneamente (de forma concurrente). De hecho, sólo un proceso puede estar siendo ejecutado al mismo tiempo por el CPU (excepto los CPU con múltiples procesadores). Los procesos son creados, destruidos y comunicados entre sí por el sistema operativo.

Proceso: En informática, un proceso se refiere a las instrucciones que ejecutará el microprocesador mientras lee un programa determinado. Esto también implica a la memoria reservada y a sus contenidos, el estado de ejecución en determinado momento, y la información que permite al sistema operativo planificar. 


Concurrencia: En computación, la concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí.



latencia
tarea
proceso
concurrencia

miércoles, 2 de marzo de 2011

Ejemplo de Sistema en Tiempo Real


Sistema de captura de movimiento de brazos en tiempo real y robot humanoide


Robot Humanoide de 6 gdl Controlado Mediante un Sistema Sensorial

 Estudio Virtual 3D en Tiempo Real