Papers Final 1
-
Upload
irvin-fernando-mendoza-rosado -
Category
Documents
-
view
217 -
download
0
Transcript of Papers Final 1
-
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: