papers final 1

Upload: irvin-fernando-mendoza-rosado

Post on 06-Jul-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Papers Final 1

    1/20

     

    Universidad  Nacional De Ingeniería 

    Facultad de Ingeniería Industrial y de SistemasEscuela Profesional de Ing. De Sistemas

    ASIGNATURA

    :Sistemas Operativos 

    FACULTAD: FIIS 

    ESCUELA: EPIS

    PROFESOR: Dr. /Ing. Ismael Salazar 

    TEMA: Sistema en Tiempo Real: Real Time Linux

    INTEGRANTES

    :

      Mendoza Rosado Irvin Fernando 

    1415250014

     

    BELLAVISTA CALLAO

    2016

    “Año de la consolidación del Mar de Grau”  

  • 8/17/2019 Papers Final 1

    2/20

    Sistemas Operativos  Universidad Nacional del Callao 

    1

    SISTEMAS EN TIEMPO REAL: REAL-TIME LINUX

    Resumen:  este trabajo trata sobre el tema de Sistemas en Tiempo Real donde veremos la

     programación bajo Real-Time Linux. Nuestro trabajo será específicamente práctico y para ello se

    utilizara ejemplos particulares para poder tener un mejor entendimiento sobre el manejo. Este trabajo

    está centrado para estudiantes con conocimiento de programación tales como ingeniería de sistemas,

    ingeniería informática, ingeniería de software entre otros que cursen últimos ciclos. Este trabajo será

    de gran aporte para aquellos que pretendan hacer una tesis en el área relacionada a sistemas

    operativos.

    Palabras claves:  RT-Linux, Programación, Proceso, Hilo, Tarea, FIFO, Sistema Tiempo Real,

    Modulo.

    Abstract:  this work will to deal about the topic of Systems in Real Time where we will see the programming under Real-Time Linux. Our work will be practical specificly and it needs to use

     particular examples to can have a better understanding about how to operation. This work is focused

    for students with knowledge about programming such as engineering of Systems, Computing

    engineering, engineering of Software among other careers that study last cycles. This work will be

    great contribution for anyone that pretends to make a thesis in the area related to operative Systems.

    Key words: RT-Linux, Programming, Process, Thread, Task, FIFO, Real Time System, Kernel

    Module.

    1. 

    Introducción

    Para desarrollar este trabajo es necesario definir que es Tiempo Real. “Un sistema de tiempo real es

    aquel sistema informático en el que la corrección del sistema no solo depende de los resultados lógicos

    de los algoritmos, sino que también depende del momento en el que estos se producen”.

    Además tenemos que tener claro que el RT-Linux es un sistema operativo de tiempo real que ejecuta

    Linux como un thread (hilo de ejecución) de menos prioridad que las tareas de tiempo real.

    En el presente trabajo se busca realizar una introducción a los sistemas basados en tiempo real, donde

    mostraremos los pasos para utilizar el RT-Linux 2.3 versión avanzada libre, será netamente práctico

     para tener un mejor entendimiento.

    1.1.Sistemas Basados en Tiempo Real

    Sistema basado en tiempo real lo definiremos como un sistema (informático) que interacciona con suentorno, sobre el cual realiza acciones de control que se realizan en intervalos de tiempo bien

    definidos, no solo dependiendo el correcto funcionamiento del resultado lógico de la computadora,

    sino del tiempo en el cual se produce el resultado. Así pues este sistema debe responder a estímulos

    externos con suficiente rapidez para evitar que el sistema evolucione a un estado indeseable.

     No es suficiente que los resultados obtenidos sean correctos, sino que tienen que obtenerse dentro de

    un intervalo de tiempo específico. Observa que de esta definición no se deduce que un sistema de

    tiempo real tenga que ser necesariamente rápido, como quizás se pudiera pensar.

  • 8/17/2019 Papers Final 1

    3/20

    Sistemas Operativos  Universidad Nacional del Callao 

    2

    Por ejemplo: el sistema de guiado de un barco puede parecer en principio que no es de tiempo real,

     pues la velocidad del barco es baja y normalmente se dispone de bastante tiempo para tomar las

    decisiones del control. Pero sí que es un sistema de TR según la definición anterior.

    Observa que lo que se ha def inido es un sistema “de tiempo-real” y no un sistema “en tiempo-real”.

    Un sistema “en tiempo-real” es lo que normalmente se entiende por un sistema rápido, capaz de dar

    impresión de realidad.

    El sistema basado en tiempo real podrá mantener la comunicación durante una sesión de video chat

    obteniendo un tiempo de respuesta aceptable, que es sistema domótica de una casa pueda responder

    inmediatamente ante un asalto de intrusos, detección de humo o diversas anomalías o estará presente

    en el sistema electrónico de un vehículo para garantizar una rápida respuesta en el caso de una

    determinada avería o accidente.

    El tiempo de ejecución es una de las características más importantes de un sistema basado en tiempo

    real procederemos a clasificarlos por dicha características:

    a) 

    Incrementales:  su respuesta debe depender del tiempo disponible para su cálculo, si este

    tiene más tiempo se obtendrá una respuesta mejor. b)  No Esenciales: sus actividades no tienen impedimentos temporales.

    c)  Crítico (Hard Real Time Systems): el tiempo de respuesta deberá garantizarse a toda costa,

    teniendo una respuesta tardía consecuencias fatales.

    d)  Esenciales (Soft Real Time Systems): no producen graves daños las respuestas tardías pero

    si un desperfecto en el funcionamiento global.

    e) 

    Firmes (Firm Real Time Systems): Estos sistemas descartan las respuestas dadas fuera de

    tiempo.

    1.2. Real Time Linux

    Ha sido desarrollado en el departamento de informática en el Instituto de Minería y Tecnología de

     Nuevo México, por Víctor Yodaiken y Michael Barabanov. RT-Linux fue el trabajo de Michael paracompletar su Master of Computer Science in Computer Science (algo así como el proyecto fin de

    carrera). La última versión disponible es la 0.6. Por ahora está disponible para la arquitectura Intel.

    RT-Linux resuelve el problema de una forma radicalmente distinta. En lugar de modificar el núcleo

    de Linux para ofrecer nuevas llamadas al sistema y que sea predecible, lo que hace es construir

    directamente sobre el procesador (i386) un pequeño núcleo (que no tiene nada que ver con el núcleo

    de Linux) con un planificador. Sobre este núcleo el S.O Linux se ejecuta como una tarea más. Linux

    se ejecuta compartiendo el procesador con otras tareas. Más concretamente: Linux se ejecuta en

     background, cuando no hay otras tareas que ejecutar.

    Aunque a simple vista pueda parecer que RT-Linux es un sistema operativo independiente basado en

    Linux, no es cierto, consistiendo en realidad en un conjunto de herramientas que modifican el núcleode Linux, convirtiéndolo en un sistema operativo en tiempo real crítico, consistiendo estas

    herramientas en:

    a)  Parche sobre el código fuente de Linux.

     b)  Módulos del sistema cargables.

  • 8/17/2019 Papers Final 1

    4/20

    Sistemas Operativos  Universidad Nacional del Callao 

    3

    Ahora mencionamos las diferencias entre Linux y RT-Linux:

      RT-Linux no añade nuevas llamadas al sistema ni modifica las existentes.

      RT-Linux crea una máquina virtual entre el Hardware y Linux.

      Linux se ejecuta como una tarea en 2° plano, siendo la tarea de menor prioridad (tan pronto

    como las funciones de RT-Linux hayan sido procesadas y haya recursos se permite que el

     proceso Linux se ejecute, de esta forma, se favorece que en el sistema se puedan ejecutaraplicaciones como adquisición de datos, control, robótica, etc…, mientras sirve como una

    estación de trabajo Linux estándar.

      RT-Linux es una extensión a Linux para permitirle manejar tareas con tiempos de respuesta

    críticos.

      RT-Linux en lugar de modificar el núcleo de Linux para hacerlo predecible, se construye

    como un pequeño núcleo de tiempo real duro sobre el procesador que comparte uno o más

     procesadores con Linux estándar.

      En RT-Linux las interrupciones son manejadas por el núcleo de Tiempo Real, y pasadas a

    Linux (que recordemos que se ejecuta como una tarea poco prioritaria) solo cuando no existen

    más tareas de Tiempo Real que procesar.

    El nuevo sistema núcleo Linux + RT-Linux dispone de las siguientes características principales:

      Comunicación con procesos Linux y tareas RT mediante memoria compartida y PIPES

    (tuberías).

     

    Estructura modular para crear sistemas pequeños.

      Eficiente gestión de tiempos; en el peor de los casos se dispone de una resolución próxima al

    microsegundo (para un i486).

      Sistema Operativo de Tiempo Real Crítico.

      Extensiones para entorno multiprocesador SMP(x86)

      Planificador de prioridades estáticas (no protegido contra planificaciones imposibles), aun

    así hay otros posibles planificadores (EDF, RMS,…) 

  • 8/17/2019 Papers Final 1

    5/20

    Sistemas Operativos  Universidad Nacional del Callao 

    4

      Soporte para arquitecturas x86 y PPC.

      Acceso directo al Hardware (puertos e interrupciones)

      Las tareas con memoria estática carecen de paginación y no tienen protección de direcciones

    en memoria.

     

    Facilidades para incorporar nuevos componentes: relojes, dispositivos de E/S y planificadores.

      API (Application Program Interface) próximo al de POSIX threads, disponible de un

     planificador expulsivo por prioridades fijas, señales, sistema de archivos POSIX (open, close,

    etc…), semáforos y variables condición. 

      Permite depuración de código mediante la herramienta GDB (GNU Debugger)

    2.  Pasos para Utilizar RT-Linux

    Para utilizar el RT-Linux comenzaremos con la instalación, las primeras versiones del RT-Linux eran

    libres pero hoy en día este sistema operativo no es libre, es por ello que necesitamos la licencia para

    instalarlo. En este artículo se instalara la versión RT-Linux 3.2 que es libre y la más avanzada.

    Para la instalación es necesario que la versión del núcleo de Linux sea compatible con la versión que

    se va utilizar y seguir los siguientes pasos:

      Parchear el núcleo compatible

      Configurar el núcleo para soportar todas las opciones de RT-Linux

      Compilar el núcleo

      Instalar los restantes módulos de RT-Linux sobre el núcleo modificado.

    Este proceso no es completamente trivial, en este trabajo no se busca la instalación como objetivo,

     para tener un mejor entendimiento podemos encontrar en la red muchos manuales para poder instalar

    el RT-Linux. Como referencia principal podemos tener la siguiente página del fabricante, fsmlabs,

    http:fsmlabs.com/developers/.man._pages.  

    Acabado de instalar el RT-Linux, tendremos que tener una noción sobre los módulos cargables de

    Linux los cuales serán importantes para implementar aplicaciones de tiempo real en este sistema

    operativo.

    2.1  Módulos Cargables Linux

    Los módulos son trozos de sistema operativo, en forma de ficheros objeto especial (.ko), que se

     pueden insertar y extraer en tiempo de ejecución. Dichos ficheros .ko se obtienen como resultado de

    la compilación con un fichero makefile con una sintaxis especial creado por GNU con el fin de

    facilitar la tarea de compilar los módulos.

    Un módulo lo definimos como parte del sistema operativo, tiene la capacidad de controlar diversos

    dispositivos o servicios, además que se puede insertar y extraer en tiempo de ejecución. Sin necesidad

    de recompilar el núcleo puede controlar los recursos del sistema.

  • 8/17/2019 Papers Final 1

    6/20

    Sistemas Operativos  Universidad Nacional del Callao 

    5

    Cuando el modulo está cargado esta forma parte del sistema operativo, tiene capacidad de:

    a.  Ejecución con el máximo nivel de privilegio del procesador, pudiéndose realizar cualquier

    acceso Entrada/Salida y ejecutar instrucciones privilegiadas.

     b.  Inmune a fallos de página durante la ejecución, ya que tanto la memoria de programa como

    de datos esta mapeada directamente sobre memoria física, no pudiéndose realizar paginación.

    c. 

    Hacer uso de todas las funciones y acceder a todas las variables y estructuras de datos delnúcleo.

    Crearemos un módulo como un fichero fuente *.c  en el cual utilizaremos las librerías propias del

    núcleo, siendo necesario tener los privilegios de administrador para poder compilarlo y ejecutarlo.

    Un ejemplo de un módulo de sistema es el código siguiente que se muestra, el cual se cargara en el

    sistema, imprime el valor de una variable pasada como parámetro.

  • 8/17/2019 Papers Final 1

    7/20

    Sistemas Operativos  Universidad Nacional del Callao 

    6

    Compilando:

    # gcc – I /usr/src/Linux/include/Linux -02 – wall – D__KERNEL__ modulo.c

    Compilado correctamente será generado el fichero objeto modulo.o, con lo que se podrá cargar el

    núcleo con lo siguiente:

    # insmod modulo.o output=2

    Cargando el modulo en el sistema se ejecutara el código de la función int init_module ( ) 

    , la cual deberá devolver 0 en caso de que cargar correctamente el modulo.

    A causa de que el núcleo no dispone de salida estándar no será posible utilizar la función printf. Para

     poder imprimir mensajes por salida el núcleo dispone de la función printk, la cual es análogo a la

    anterior con la diferencia que la impresión se realiza sobre un buffer circular de mensajes donde se

    escriben todos los mensajes del núcleo, el sistema operativo guarda ese buffer en /proc/kmsg, al cual

    se pondrá acceder también mediante el comando:

    # demesg

    …. 

    Output=2 

    Podemos verificar que el modulo está cargado en el sistema:

    # lsmod

    Module Pages Used by:

    Modulo 1 0

    Sb 6 1

    uart401 2 [sb] 1

    sound 16 [sb uart401] 0 (autoclean)

    Se podrá descargar cuando no es necesario el modulo para nuestra aplicación o dispositivo, liberando

    esos recursos del núcleo:

    # rmmod modulo

    # dmesg

    …. 

    Adiós!

    Al contrario que cuando cargamos un módulo deberemos pasar al comando como argumento el

    nombre del módulo (conforme se denomina, accesible mediante lsmod), no el fichero objeto, además

    como pertenece al núcleo no será necesario especificar ninguna ruta. Una vez se indique la descarga

    del módulo se procederá a ejecutar el código de la función void cleanup_module (). 

  • 8/17/2019 Papers Final 1

    8/20

    Sistemas Operativos  Universidad Nacional del Callao 

    7

    Otra funcionalidad que tenemos es la forma de paso de parámetros a los módulos, que se realiza a

    través de la macro MODULO_PARM, debiendo todos los parámetros declararse como una variable

    static.

    Ya sabiendo esta definiciones nosotros podemos afrontar la implementación de nuestra primera tarea

    de tiempo real duro con RT-Linux, para entender más sobre los módulos del núcleo cargables se

    recomienda revisar [3].

    2.2  Primera Tarea en Tiempo Real con RT-Linux

    Estudiaremos la implementación de una tarea que se ejecute en tiempo real duro que periódicamente

    lea un fichero de audio reproduciéndolo por el puerto de sonido del PC.

     Nos enfocaremos en dos funcionalidades básicas de tiempo real sobre RT-Linux para el ejemplo:

      Comunicación entre Tareas: Real Time FIFOs es el medio de comunicación más utilizado

    entre una tarea RT-Linux y otra tarea RT-Linux o Linux, las cuales serán análogas a las

    PIPES de Unix (la comunicación es por flujo de datos, sin ninguna estructura determinada),

    consistiendo en un buffer de tamaño fijo sobre el que se podrá leer y escribir, vaciándose

    durante cada lectura.

      Tareas Periódicas: estos están implementadas a través de los threads  periódicos de RT-

    Linux, que son una variación de los threads comunes, consistiendo en una tarea que se ejecuta

     periódicamente con periodo T bajo tiempo real duro.

    Realizaremos la lectura periódica mediante una tarea periódica bajo tiempo real duro en nuestro

    ejemplo, utilizando para la lectura desde el fichero de audio una RTFIFO:

  • 8/17/2019 Papers Final 1

    9/20

    Sistemas Operativos  Universidad Nacional del Callao 

    8

  • 8/17/2019 Papers Final 1

    10/20

    Sistemas Operativos  Universidad Nacional del Callao 

    9

  • 8/17/2019 Papers Final 1

    11/20

    Sistemas Operativos  Universidad Nacional del Callao 

    10

    Esta tarea periódica reproduce por el puerto de sonido los datos de audio que se encuentran

     previamente en la RTFIFO rtf0.

    Respecto a la gestión del puerto de sonido, cabe destacar, que se realiza a través de las primitivas

    Outb_p(reg,val), outb(reg,val) de escritura en registros e inb_p(reg), inb(reg) de lectura, debido a que

    la tarea se ejecuta en el núcleo de sistema se puede acceder “directamente” a esos registros.  

    Para una reproducción correcta será necesario ajustar el periodo de la tarea de reproducción de audio,

    en este caso se deberá ajustar la frecuencia del puerto de sonido de PC (8192 Hz) para que la

    reproducción sea correcta.

    A través de la función pthread_setschedparam (pthread_self ( ), POLICY, &pthread) estableceremos

    el planificador a tipo FIFO (SCHED_FIFO), el cual es el único disponible para la versión utilizada

    de RT-Linux (3.2).

    Con la función pthread_make_periodic_np (id, activation, period) conseguiremos que el planificador

    envié una señal wake_up cada periodo en nanosegundos (1 = 10). Esta señal despierta al hilo

    que la recibe del estado suspendido en el que se encuentra. Por tanto, para implementar la tarea

     periódica bastara con establecer un bucle infinito, donde al inicio de cada iteración el hilo ejecute pthread_wait_np ( ) para quedarse en estado suspendido, de esta forma en cada periodo se ejecutara

    el código del bucle infinito.

    La comunicación de la tarea de tiempo real con el fichero a reproducir la realizaremos a través de la

    RTFIFO rtf0, la cual será creada durante la carga del módulo, rtf_create (idFIFO, tamaño),

    destruyéndose al descargar el modulo, rtf_destroy (RTFIFO), mientras que durante cada periodo T se

     procede a la lectura de parte de la misma, rtf_get (idFIFO, &dato, sizeof (dato)), leyendo durante cada

     periodo un tamaño en bytes fijado por dato.

    Para probar el funcionamiento deberemos volcar el contenido del fichero de audio a probar en la

    RTFIFO/dev/rtf0 y cargar el módulo.

  • 8/17/2019 Papers Final 1

    12/20

    Sistemas Operativos  Universidad Nacional del Callao 

    11

    3. 

    Comparación de Prestaciones en Tiempo No Real

    Comparando el proceso Linux no sujeto a tiempo real con los beneficios de la tarea en tiempo real

    que hemos implementado.

    Ahora vamos a realizar la implementación de una tarea Linux convencional que lea un fichero,

    reproduciéndolo por el de sonido del PC.

  • 8/17/2019 Papers Final 1

    13/20

    Sistemas Operativos  Universidad Nacional del Callao 

    12

  • 8/17/2019 Papers Final 1

    14/20

    Sistemas Operativos  Universidad Nacional del Callao 

    13

    La gestión del puerto de sonido se realizara de manera estándar a la tarea anterior, aunque obviamente

    se deberá contar de permisos especiales ya que al trabajar desde un proceso Linux corriente nos

    encontramos en el espacio de usuario, solucionaremos este problemas mediante la función ioperm

    (from, number, on), podemos encontrar referencia completa de estas funciones tanto en [2] como en

    las páginas man de nuestro distribución de Linux.

    La simulación de tarea periódica será realizada por la función fun ( ), que se encargara de leer elcontenido byte a byte de la entrada estándar a medida que lo saca por el puerto de sonido, para que

    se reproduzca correctamente se fijara un periodo de reproducción, el cual será establecido por la

    función espera (num). 

    Compilaremos y ejecutaremos el programa

    Podemos comprobar que la reproducción del sonido esta sobreacelerada al ejecutar esta tarea, esto

    quiere decir que no estamos dando bastante tiempo al puerto de sonido para una reproducción correcta

    (recordemos que la función de reproducción es 8129 Hz, lo cual equivale a un periodo de =

    10 8129⁄    ). Una vez realizado el cambio (#define PERIOD1000000000/8129) comprobamos

    que la reproducción es correcta.

    Vamos a suponer por un momento que queremos reproducir sonido mientras nuestro PC está

    realizando importantes cálculos, ¿Qué ocurrirá? Lo simularemos mediante otra tarea Linux que

    cargue el sistema, por ejemplo con operaciones aritméticas, o cualquier programa de benckmarking,

    como la función de Ackermann:

  • 8/17/2019 Papers Final 1

    15/20

    Sistemas Operativos  Universidad Nacional del Callao 

    14

    Podemos observar como el sonido se reproduce entrecortado, ya que el planificador del sistema

    operativo atiende el programa de carga y la tarea de reproducción de sonido simultáneamente con lo

    cual las prestaciones decaen terriblemente.

    Sin embargo debido a nuestros requisitos queremos que la reproducción de audio sea fluida,

    asegurando que cada byte salga por el puerto de sonido a la frecuencia correcta, por lo cual es

    necesario el uso del tiempo real, pudiendo asegurarse estas prestaciones nuestra tarea RT-Linux.

  • 8/17/2019 Papers Final 1

    16/20

    Sistemas Operativos  Universidad Nacional del Callao 

    15

    Se procede pues a ejecutar la tarea en tiempo real y el programa de carga

    Como resultado de la experimentación comprobamos que las prestaciones de la reproducción de

    sonido no se ven vulneradas, debido a la ejecución de esta como una tarea de tiempo real.

    4.  Conclusiones

    Antes de aparecer el RT-Linux la mayor parte de los ingenieros que necesitaban trabajar con sistemas

    de tiempo real tenían que o bien utilizar el MS-DOS y tener que construir todos los drivers que

    necesitaban. En el presente disponen de todo un completo S.O. para desarrollar las aplicaciones de

    tiempo real y sobre el mismo sistema que se van a ejecutar.

    De la misma manera se anima a que el lector profundize mas en este atrayente campo, explorando

    más sobre, un muy buen sistema basado en tiempo real duro, RT-Linux, u otros, de los cuales se

     puede citar diversos ejemplos: QNX, FreeRTOS ,Java Real Time System, etc.

    Referencias:

    [1] “RT-Linux Manual Project”, RT-Linux Documentation Group, http:///www.rtlinux.org

    [2] “Real-Time Linux (RT-Linux)” I. Ripoll, http:///www.linuxfocus.org.org 

    [3] J. Corbet, A. Rubini and G. Kroah-Hartman, Linux Device Drivers, (O’ Reilly 2000) 

    [4] V. Yodaiken, The RTLinux Manifiesto

    [5] Página Principal de QNX http://www.qnx.com

    [7] “Programacion Linux 2.0, API de sistema y funcionamiento del nucleo”, Remy Card, Eric Dumas

    y Franck Mevel. Ed: Eyrolles, Ediciones Gestión 2000.

    [8] Página Principal de FreeRTOS http://www.freertos.org

    [9] Página Principal de la librería en código libre de Tiempo Real para Java http://javolution.org 

    [10] Portal RT-Linux de la Universidad Politécnica de Valencia http://rtportal.upv.es/

    [11] A. Burns, Sistema de Tiempo real y Lenguaje de Programación (Addisson Wesley 2003)

    [12] I. Ripoll, Tutorial de RT-Linux  http://rtportal.upv.es/tutorial/index.shtml 

    [13] Página Principal de RTAI http://www.rtai.org 

    [14] F. Pla, Apuntes de la asignatura II75 http://www.vision.uji.es/-sotoca/ii75/

    [15] Pthreads Information. http://www.cs.ucr.edu/sshah/ptreads/

    http://www.rtlinux.org/http://www.rtlinux.org/http://www.linuxfocus.org.org/http://www.linuxfocus.org.org/http://www.qnx.com/http://www.qnx.com/http://www.freertos.org/http://www.freertos.org/http://javolution.org/http://javolution.org/http://rtportal.upv.es/http://rtportal.upv.es/tutorial/index.shtmlhttp://rtportal.upv.es/tutorial/index.shtmlhttp://www.rtai.org/http://www.rtai.org/http://www.vision.uji.es/-sotoca/ii75/http://www.vision.uji.es/-sotoca/ii75/http://www.cs.ucr.edu/sshah/ptreads/http://www.cs.ucr.edu/sshah/ptreads/http://www.cs.ucr.edu/sshah/ptreads/http://www.vision.uji.es/-sotoca/ii75/http://www.rtai.org/http://rtportal.upv.es/tutorial/index.shtmlhttp://rtportal.upv.es/http://javolution.org/http://www.freertos.org/http://www.qnx.com/http://www.linuxfocus.org.org/http://www.rtlinux.org/

  • 8/17/2019 Papers Final 1

    17/20

    Sistemas Operativos  Universidad Nacional del Callao 

    16

    RT-Linux nació del trabajo de Michael Baravanov y Víctor Yodaiken en la universidad de Nuevo

    México. Hoy en día continúan activamente con su desarrollo desde su propia empresa (FSM Labs)

    desde la que ofrecen soporte técnico.

    RT-Linux se distribuye bajo GPL (GNU Public License). Actualmente la original arquitectura en que

    se basa RT-Linux esta patentada por Victor Yodaiken. Actualmente RT-Linux funciona sobre

    arquitecturas powerPC, i386, y Alpha.

    Las primeras versiones de RT-Linux ofrecían un API muy reducido sin tener en cuenta ninguna de

    los estándares de tiempo real: como POSIX Real-Time extensions, Pthreads (POSIX Threads), etc.

    A partir de la versión 2.0 Victor Yodaiken decide reconvertir el API original a otra que fuera

    compatible con el API de Pthreads. Además existe una versión para multiprocesadores con la

     posibilidad de asignar tareas a distintos procesadores.

    El objetivo de este articulo ha sido causar una agradable impresión de los sistemas basados en tiempo

    real, centrándonos en la vertiente de los mismo como sistemas informáticos, teniendo en cuenta quecada día son utilizados en un mayor rango de aplicaciones, si bien en un principio se puede pensar

    que su aplicación solo sería clara para sistemas en los cuales son criticas las restricciones temporales,

    cada vez esta aplicación se hace más extensiva a muchos rasgos de nuestra vida cotidiana gracias al

    avance de la electrónica y las comunicaciones.

  • 8/17/2019 Papers Final 1

    18/20

    Sistemas Operativos  Universidad Nacional del Callao 

    17

    Aunque el concepto sistema puede tomar diversos significados (parte mecánica y lógica), le daremos

    un sentido puramente lógico, centrándonos en Sistemas Operativos Basados en Tiempo Real.

    Si bien en un principio este tipo de sistemas estaban principalmente enfocados a aplicaciones

    militares, de aviónica o proyectos muy ambiciosos (y por consiguiente caros), conforme fue

    introduciéndose la electrónica y la informática en la vida cotidiana estos sistemas fueron creciendo

    siendo diversificándose sus aplicaciones principales a sistemas de telecomunicaciones, aplicacionesmultimedia, y sistemas de control empotrados.

    Generalmente los procesos en los cuales participara el sistema no serán atómicos ni únicos, siendo

    necesario elegir que instrucción ejecutar para cumplir las restricciones temporales. Así pues en estos

    sistemas tomara mucha importancia la planificación de tareas, cuyos objetivos principales serán los

    siguientes:

    1)  Proporcionar un algoritmo para ordenar los recursos del sistema

    2) 

    Ser capaz de predecir que ocurrirá en el peor caso posible

      QNX: Sistema basado en tiempo real basado en Unix, compatible con POSIX,

      FreeRTOS: Un mini núcleo en tiempo real que permite crear un sistema basado en tiempo

    real empotrado,

      RTAI:  Consiste en un interfaz de programación que permite escribir aplicaciones con

    restricciones temporales estrictas,

  • 8/17/2019 Papers Final 1

    19/20

    Sistemas Operativos  Universidad Nacional del Callao 

    18

      Java Real Time System:  consiste en un conjunto de tecnologías que permiten escribir

     programas que cumplen los requisitos del tiempo real en un lenguaje tan versátil como Java.

    Finalmente se recomienda al lector cursar la asignatura II75 “Sistemas Basados en Tiempo Real” 

    la cual le será muy útil para conocer todos estos conceptos.

    en el presente artículo, está basado en la primera práctica de la asignatura II75 sistemas en tiempo

    real y tiene como objetivo realizar una pequeña introducción a la programación de sistemas en tiempo

    real, más concretamente a la programación bajo RT-Linux. Esta introducción procura ser

    fundamentalmente práctica, puesto que su desarrollo se basa en ejemplos concretos, que pueden ser

    fácilmente ejecutados y manipulados por los lectores. El artículo, está orientado a alumnos de

    informática que tengan un cierto conocimiento en programación de procesos, por lo que se

    recomienda haber cursado asignaturas II11 Sistemas Operativos para una perfecta comprensión de

    los conceptos e ideas que son expuestos en el artículo. Además, debido a la naturaleza optativa de la

    asignatura II75 Sistemas en Tiempo Real, el presente artículo puede resultar muy recomendable para

    titulados o estudiantes de últimos cursos de Informática, que no hayan cursado dicha asignatura.

    Instalación del RT-Linux:  para transformar a Linux en RT-Linux hay que aplicar al código del

    kernel un parche que viene con la distribución de RT-Linux y luego recompilar el kernel. Aquí está

    la receta para hacerlo. Suponga que has bajado el fichero rtlinux-0.6-2.033.tgz el directorio /usr/src y

    lo has extraído en ese mismo directorio con lo que ahora los fuentes están en /usr/src/rtlinux-0.6.

    El primer paso antes de empezar a utilizar RT-Linux será proceder con su instalación. Aunque las

    versiones más actuales de RT-Linux no son libres, esto significa que será necesario adquirir lacorrespondiente licencia para poder instalarlo en un equipo. Sin embargo las primeras versiones sí

    que eran libres, por lo que procederemos a instalar la versión más avanzada dentro de las libres (RT-

    Linux 3.2).

    the following paper is based on subject II75 “Real-Time Systems” first practice, and it’s objective is

    show a briefly introduction to Real Time Operative Systems programming, mainly RT-Linux

     programming. This introduction focus in the practical sense of programming, because of it’s

    development is based on concrete examples, upon which can be easily executed and modified by the

    reader. Moreover this paper is oriented to computer students with a certain knowledge about process

     programming and Operating Systems, so that we recommend that the reader have learned subject II11

    “Operating Systems”, in order to reach a good comprehension of concepts and ideas exposed on it.

    Furthermore, due to II75 “Real-Time Systems” subject optative nature the following pa per may behighly recommended for computer bachelors and last course students than haven’t learned this

    subject.

    Podemos ver un módulo como parte del sistema operativo que se puede insertar y extraer en tiempo

    de ejecución, el cual dota al mismo de la capacidad para controlar diversos dispositivos o servicios,

     pudiendo controlar dinámicamente los recursos del sistema sin necesidad de recompilar el núcleo.

  • 8/17/2019 Papers Final 1

    20/20

    Sistemas Operativos  Universidad Nacional del Callao 

    Una vez un módulo ha sido insertado (denominado comúnmente cargado) pasa a formar parte del

    Sistema Operativo, teniendo capacidad de: