Lab2-RTOS

=LAB2-RTOS = http://talleros-ara.wikispaces.com/Lab2-RTOS =﻿= =I) Que es un Sistema Operativo de tiempo real =

Un sistema operativo de tiempo real (SOTR o RTOS -//Real Time Operating System// en inglés), es un sistema operativo que ha sido desarrollado para aplicaciones de tiempo real. Como tal, se le exige corrección en sus respuestas bajo ciertas restricciones de tiempo. Si no las respeta, se dirá que el sistema ha fallado. Para garantizar el comportamiento correcto en el tiempo requerido se necesita que el sistema sea predecible (determinista).

Existen muchas definiciones de, muchas de ellas contradictorias. Desafortunadamente el tema es controvertido, y no parece haber acuerdo sobre la terminología. La definición canónica de un sistema de tiempo real (de Donald Gillies) es la siguiente: //Un sistema de tiempo real es aquel en el que para que las operaciones computacionales sean correctas no solo es necesario que la lógica e implementación de los programas computacionales sea correcto, sino también el tiempo en el que dicha operación entregó su resultado. Si las restricciones de tiempo no son respetadas el sistema se dice que ha fallado. //


 * Otros han agregado: **

//Por lo tanto, es esencial que las restricciones de tiempo en los sistemas sean cumplidas. Para garantizar el comportamiento en el tiempo requerido necesita que el sistema sea predecible. Es también deseable que el sistema obtenga un alto grado de utilización a la vez que cumple con los requerimientos de tiempo.// //﻿// Un buen ejemplo es el de un robot que necesita tomar una pieza de una banda sinfín. Si el robot llega tarde, la pieza ya no estará donde debía recogerla. Por lo tanto el trabajo se llevó a cabo incorrectamente, aunque el robot haya llegado al lugar adecuado. Si el robot llega antes de que la pieza llegue, la pieza aún no estará ahí y el robot puede bloquear su paso.

En algunas ocasiones podemos ver referencias sobre sistemas de tiempo real cuando solo se quiere decir que el sistema es rápido. Cabe mencionar que **tiempo real** no es sinónimo de rapidez; esto significa que no es la latencia de la respuesta lo que nos enfoca en un sistema de tiempo real (esta latencia a veces está en el orden de los segundos), el enfoque en tiempo real de la latencia es el asegurarse de que la latencia del sistema es la suficiente para resolver el problema al que el sistema está dedicado. Si el tener una falla en el tiempo de latencia de un proceso del sistema lleva como consecuencia un error en el sistema entonces esos procesos se consideran de tiempo real duro. Si el tener una falla en un proceso del sistema no conlleva una falla en el sistema siempre y cuando esta falla este dentro de ciertos límites establecidos (es posible fallar en la latencia una de cada 1000 veces o una de cada 100, o fallar siempre y cuando el error no exceda el 3% de la latencia) entonces esos procesos se llaman procesos de tiempo real suave. Si el funcionamiento incorrecto del sistema puede llevar a la pérdida de vidas o catástrofes similares entonces el sistema de tiempo real es nombrado como sistema de tiempo real de misión crítica.

=II) Características de los RTOS =


 * No utiliza mucha memoria
 * Cualquier evento en el [|soporte físico] puede hacer que se ejecute una tarea
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Multi-arquitectura (código portado a cualquier tipo de [|CPU])
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Muchos tienen enfermedades predecibles para eventos electrónicos
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Se caracterizan por presentar requisitos especiales en cinco áreas generales:
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Determinismo
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Sensibilidad
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Control del usuario
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Fiabilidad
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Tolerancia a los fallos

<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Determinismo
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El determinismo es una cualidad clave en los sistemas de tiempo real. Es la capacidad de determinar con una alta probabilidad, cuanto es el tiempo que se toma una tarea en iniciarse. Esto es importante por que los sistemas de tiempo real necesitan que ciertas tareas se ejecuten antes de que otras puedan iniciar.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Esta característica se refiere al tiempo que tarda el sistema antes de responder a una interrupción. Este dato es importante saberlo por que casi todas las peticiones de interrupción se generan por eventos externos al sistema (i.e. por una petición de servicio), así que es importante determinar el tiempo que tardara el sistema en aceptar esta petición de servicio.

**<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Responsividad **
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">La responsividad se enfoca en el tiempo que tarda una tarea en ejecutarse una vez que la interrupción ha sido atendida. Los aspectos a los que se enfoca son: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Una vez que el resultado del cálculo de determinismo y responsividad es obtenido, se convierte en una característica del sistema y un requerimiento para las aplicaciones que correrán en él,(por ejemplo, si diseñamos una aplicación en un sistema en el cual el 95% de las tareas deben terminar en cierto período entonces es recomendable asegurarse que las tareas ejecutadas de nuestra aplicación no caigan en el 5% de bajo desempeño).
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">La cantidad de tiempo que se lleva el iniciar la ejecución de una interrupción
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">La cantidad de tiempo que se necesita para realizar la tarea que pidió la interrupción.
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Los efectos de interrupciones anidadas.

**<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Usuarios controladores **
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">En estos sistemas, el usuario (por ejemplo, los procesos que corren en el sistema) tienen un control mucho más amplio del sistema.
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El proceso es capaz de especificar su prioridad
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El proceso es capaz de especificar el manejo de memoria que requiere (que parte estará en caché y que parte en memoria swap y que algoritmos de memoria swap usar)
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El proceso especifica que derechos tiene sobre el sistema.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Esto aunque parece anárquico no lo es, debido a que los sistemas de tiempo real usan tipos de procesos que ya incluyen estas características, y usualmente estos TIPOS de procesos son mencionados como requerimientos. Un ejemplo es el siguiente: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">//Los procesos de mantenimiento no deberán exceder el 3% de la capacidad del procesador, a menos que en el momento que sean ejecutados el sistema se encuentre en la ventana de tiempo de menor uso.// <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">//﻿//

**<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Confiabilidad **
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">La confiabilidad en un sistema de tiempo real es otra característica clave. El sistema no debe solamente estar libre de fallas pero más aún, la calidad del servicio que presta no debe degradarse más allá de un límite determinado. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El sistema debe de seguir en funcionamiento a pesar de catástrofes, o fallas mecánicas. Usualmente una degradación en el servicio en un sistema de tiempo real lleva consecuencias catastróficas.

**<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Operación a prueba de fallas duras (Fail soft operation) **
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El sistema debe de fallar de manera que: cuando ocurra una falla, el sistema preserve la mayor parte de los datos y capacidades del sistema en la mayor medida posible.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Que el sistema sea estable, es decir, que si para el sistema es imposible cumplir con todas las tareas sin exceder sus restricciones de tiempo, entonces el sistema cumplirá con las tareas más críticas y de más alta prioridad.

<span class="mw-headline" style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Los sistemas de tiempo real y el análisis de sus requerimientos
<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Debido que los sistemas de tiempo real tienen características especiales diferentes a los demás tipos de sistemas y que los sistemas operativos de tiempo real relegan a sus usuarios el cumplimiento de estos requerimientos (según la característica de **usuarios controladores** vista en el capítulo anterior) es importante mencionar que este tipo de requerimientos deben de tomarse en cuenta en el proceso de desarrollo.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Sin embargo, como estos requerimientos no forman parte de una sola funcionalidad del sistema sino que forman parte de todo el sistema a menudo se definen como **requerimientos no funcionales**.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">También se argumenta que como no son parte de la aplicación sino que es como se comporta una aplicación al introducirse en un ambiente de tiempo real entonces estos son una **Característica del sistema**, más que un requerimiento.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Los dos puntos de vista son erróneos, si bien es cierto que los requerimientos referentes al tiempo real se aplican a todo el sistema, a menudo tenemos que agregar o modificar software, interfaces o hardware para que estos requerimientos se cumplan, más aún, el software debe de estar preparado para que en la eventualidad de que un trabajo no cumpla con sus requerimientos de tiempo, cancele los demás trabajos relacionados con el (si una petición de entrada/salida toma más del tiempo establecido y se cancela por el sistema, el software de entrada/salida debe de informar al usuario del proceso que este evento ocurrió). Esto es claramente parte de la funcionalidad y de comportamiento del sistema. Por lo que clasificar esta restricción como requerimiento no funcional es incorrecto.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Si argumentáramos que: al ser parte de todo el sistema son una característica del sistema más que un requerimiento estaríamos diciendo que estas restricciones se cumplen con el solo hecho de pertenecer al sistema. Una característica es algo que ya esta en el sistema y que no puede ser calificada como errónea o correcta, y una restricción deberá de ser cumplida siempre y la forma en que estas restricciones se cumplen puede ser validada como errónea o correcta. Por lo que estas restricciones tampoco son una característica del sistema.

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">II) Lista de los RTOS que hay en la actualidad y una breve descripción sobre la mayoría de ellos. =


 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Marte OS
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">EasyTasks
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">QNX
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">LynxOS
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">RedHat Embedded Linux
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">eCos
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">SOOS
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">OS-9
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Ubuntu Studio
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">VxWorks
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Windows CE
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Linchos
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Unix
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">DuinOS
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">RTAI
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Symbian

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">EasyTasks =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">EasyTask es un sistema operativo completo diseñado para ser utilizado como una base de teléfonos inteligentes. Incluye propiedades avanzadas de red y puede funcionar con los requisitos mínimos de hardware, pero con el mejor rendimiento disponible. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">EasyTasks se compone de seis módulos funcionales: eTasks, eSockets, eFiles, Econfig, eCommands y eUtils. Cada uno de ellos es independiente del resto, sin embargo, todos en conjunto proporcionan una solución global para el desarrollo de sistemas empotrados.

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">QNX =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Es un sistema operativo de tiempo real basado en Unix que cumple con la norma POSIX. Es desarrollado principalmente para su uso en dispositivos empotrados. Desarrollado por QNX Softwares Systems. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">QNX esta basado en una estructura de micronucleo, que proporciona características de estabilidad frente a fallos de dispositivos, aplicaciones, etc. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Photon oes el sistema de ventanas (servidor y cliente) de QNX, aunque también funciona una versión X Window. =<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">LynxOS =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">LynuxOS es un sistema operativo en tiempo real basado en Unix y desarrollado <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">por LynuxWorks. Es un SO de codigo cerrado bajo licencia propietaria, de manera que no se puede modificar ni estudiar su comportamiento. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">LynxOS soporta PowerPC, lo que le podría colocar como una posible <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">opción, además de esta también es capaz de soportar plataformas como <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Motorla 68010, Intel 80386 y ARM.

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Embedded Linux =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Embedded Linux está bajo licencia //General Public Licence.// Es un SO basado en Linux utilizado en PDA, teléfonos moviles, robots, enrutadores / servidores, dispositivos electrónicos y aplicaciones industriales con microcontroladores y microprocesadores. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Linux embebido tiene algunas ventajas en relación a otros sistemas operativos embebidos, como pueden ser el código abierto, pequeño (Windows CE ocupa 21 MB comparado con los 2 MB para Linux embebido), puede no tener costos por derechos, maduro y estable (Más de 20 años de edad y utilizado en muchos dispositivos) y con respaldo. =<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Ubuntu Studio =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Es una [|distribución GNU/Linux] basada en [|Ubuntu]. Está orientada a la edición multimedia profesional de audio, video y gráficos. Usa solamente los paquetes de los [|repositorios] oficiales de [|Ubuntu], y su [|kernel] pero en [|tiempo real]. También utiliza [|GNOME] como [|entorno de escritorio]. =<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">VxWorks =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">VxWors es un sistema operativo en tiempo real basado en Unix, vendido y fabricado por Wind River Systems. Como la mayoría de los sistemas operativos en tiempo real, vxWorks incluye kernel multitarea con planificador //preemptive// (los procesos pueden tomar la CPU arbitrariamente), respuesta rápida a las interrupciones, comunicación entre procesos, sincronización y sistema de archivos. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Es un SO de código cerrado aunque hay algunas versiones gratuitas.

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">DuinOS =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">**DuinOS** es un sistema operativo de tiempo real desarrollado por **RobotGroup**, una institución argentina dedicada a promover y difundir la Robótica Educativa y que se dedica tanto a la investigación como a la divulgación de temas relacionados a la enseñanza de la Robótica. Este sistema agrega multitarea preventiva al entorno Arduino. Está basado en un robusto kernel como lo es **FreeRTOS** y es completamente de código abierto. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">RTAI.

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Symbian =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">**Symbian** es un [|sistema operativo] que fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran [|Nokia], [|Sony Ericsson] , [|Psion] , [|Samsung] , [|Siemens] , [|Arima] , [|Benq] , [|Fujitsu] , [|Lenovo] , [|LG] , [|Motorola] , [|Mitsubishi Electric] , [|Panasonic] , [|Sharp] , etc. Sus orígenes provienen de su antepasado [|EPOC32] , utilizado en [|PDA's] y [|Handhelds] de PSION. <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El objetivo de Symbian fue crear un sistema operativo para terminales móviles que pudiera competir con el de [|Palm] o el [|Windows Mobile] de [|Microsoft] y ahora [|Android] de [|Google Inc.], [|iOS] de [|Apple Inc.] y [|BlackBerry OS].

=<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">IV) Ejemplo del uso de un RTOS y valoración del mismo (Cabe aclarar que en este caso habrá que instalar algún RTOS y capturar pantallas donde se demuestre su funcionalidad). =

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Hemos elegido como ejemplo el sistema Windows CE, que se encuentra empotrado o embebido﻿ en dispositivos moviles, como, PDAs, WebPads, algunos telefonos moviles inteligentes, aunque ha sido reemplazao en estos ultimos por su sucesor el Windows 7 para moviles.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Es un sistema Abierto, o sea, OpenSource, aunque es de la empresa Microsoft, es licenciado como OpenSource, este es muy limitado pero a la vez es bastante rapido, dejando ver claramente una de las caracteristicas de un RTOS (Real Time Operating System) o Sistema Operativo de Tiempo Real.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;"> En la imagen arriba se muestra al RTOS Windows CE booteando desde el DOS-Caldera.

Esta imagen muestra el escritorio del Windows CE con un folder creado "Taller de Sistema Operativos"

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">La imagen arriba muestra una prueba del procesador de textos "Word" integrado en el Windows CE.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Esta imagen muestra una prueba de la aplicacion de mensajeria instantanea MSN Messenger para Windows CE.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Aqui se aprecia el reproductor multimedia Windows Media Player para Windows CE.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;"> <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Esta es la pantalla del estado suspendido del sistema operativos Windows CE.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Existe un Sistema RTOS, que hasta hace poco no era tan conocido el cual es el QNX, <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">adquirido recientemente por la RIM, fabricantes de los equipos Blackberry, <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">con el cual pretenden relanzar sus productos, como el Blackberry Playbook <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">y la nueva generacion de telefonos inteligentes Blackberry.

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">El siguiente es un video demostrativo de dicho sistema: <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">media type="file" key="Blackberry-QNX-Playbook.flv" width="360" height="270"

<span style="font-family: Arial,Helvetica,sans-serif; font-size: 20.8px;">ALEXANDRA HERNANDEZ 2005-0057 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 20.8px;">ALBA PERALTA 2008-0525 <span style="font-family: Arial,Helvetica,sans-serif; font-size: 20.8px;">REY MEJIA 2008-1797
 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 130%;">Participantes: **