Publicado el 14 de Enero del 2017
1.061 visualizaciones desde el 14 de Enero del 2017
160,8 KB
7 paginas
Creado hace 11a (14/10/2013)
Master en Computación
Programación Concurrente
Bloque II: Programación concurrente en POSIX
Tema 1.
Introducción al estándar POSIX
Tema 2. Sistema Operativo MaRTE OS
Tema 3. Gestión de Threads
Tema 4. Gestión del Tiempo
Tema 5. Planificación de Threads
Tema 6. Sincronización
Tema 7. Señales
Tema 8. Temporizadores y Relojes de Tiempo de Ejecución
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
© M. Aldea, M. González
oct.-13
Tema 2. Sistema Operativo MaRTE OS
2.1. Sistemas operativos de tiempo real
2.2. Uso de Linux para Tiempo Real
2.3. Linux con doble núcleo
2.4. Mercado de los RTOSs
2.5. MaRTE OS
1
© M. Aldea, M. González
oct.-13
2
2.1 Sistemas operativos de tiempo real
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
2.1 Sistemas operativos de tiempo real
En el pasado, muchos sistemas de tiempo real no necesitaban
sistema operativo
Hoy en día, muchas aplicaciones requieren servicios de sistema
operativo tales como:
• programación concurrente, redes de comunicación, sistema de
ficheros, etc.
El comportamiento temporal de un programa depende fuertemente
del comportamiento del sistema operativo
Durante el curso utilizaremos los sistemas operativos
• MaRTE OS
• Linux
Programación Concurrente
© M. Aldea, M. González
oct.-13
3
Tema 2. Sistema Operativo MaRTE OS
Características de los RTOS
Los S.O. de Tiempo Real (RTOS) tienen características especiales
• ya que su comportamiento temporal afecta al de la aplicación
2.1 Sistemas operativos de tiempo real
S.O. de Tiempo Compartido vs. RTOS:
S.O. de Tiempo Compartido
Capacidad
Respuesta
Temporal
Sobrecarga
Potencia de cálculo
Rápida respuesta en promedio
Reparto Equitativo
RTOS
Planificabilidad
Respuesta de peor caso
garantizada
Estabilidad
Según el estándar POSIX la definición de tiempo real en sistemas
operativos es:
• “La habilidad del sistema operativo para proporcionar el nivel
de servicio requerido con un tiempo de respuesta acotado.”
© M. Aldea, M. González
oct.-13
4
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
2.1 Sistemas operativos de tiempo real
Limitaciones para TR de los SOs convencionales
• No tienen políticas y protocolos de tiempo real
• Tiempos de respuesta no acotados para algunos servicios
• planificador O(n)
• memoria dinámica
• ...
• “Swapping”
• Latencia a interrupciones no acotada
• un driver “mal escrito” puede deshabilitar interrupciones por
un intervalo de tiempo arbitrariamente grande
• IRQs compartidas
• Baja resolución del temporizador (p.e. 10ms)
• Uso de “spinlocks”
© M. Aldea, M. González
oct.-13
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
2.2 Uso de Linux para Tiempo Real
2.2 Uso de Linux para Tiempo Real
Linux es un sistema operativo ampliamente utilizado (PCs,
supercomputadores, servidores, ...)
• este auge condujo a su utilización también en TR
• originalmente con muchas limitaciones
Mejoras en el núcleo 2.6 para eliminar las limitaciones para TR:
• mayor grado de implementación de la interfaz POSIX de TR
• mayor grado de expulsión en las llamadas al sistema
• planificador O(1)
• posibilidad de deshabilitar la memoria virtual
• ...
Parches aún no incluidos en las distribuciones estándares
• "Complete Preemption Patch"
Programación Concurrente
© M. Aldea, M. González
oct.-13
5
6
Tema 2. Sistema Operativo MaRTE OS
2.2 Uso de Linux para Tiempo Real
Uso de Linux para Tiempo Real (cont.)
Cualquier distribución incluye el kernel 2.6: Ubuntu, Fedora,
openSUSE, Debian, etc.
Distribuciones comerciales para tiempo real
- Red Hat Enterprise MRG Realtime
- SUSE Linux Enterprise Real Time Extension
El núcleo 2.6 con el “Complete Preemtion Patch”
- permite utilizar Linux en aplicaciones de tiempo real laxo
Aún así sigue teniendo importantes limitaciones:
- servicios con respuesta no acotada (memoria dinámica)
- drivers “mal escritos” para TR
El esfuerzo de adaptación de Linux a TR parece que va a continuar
• ¿alcanzará la conformidad con el perfil de Sistema de Tiempo
Real Multi-Propósito en los próximos años?
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
2.3 Linux con doble núcleo
Arquitecturas basadas en doble núcleo
© M. Aldea, M. González
oct.-13
7
2.3 Linux con doble núcleo
• micronúcleo que se incrusta en el núcleo de Linux
• asume el control de las interrupciones hardware
• Wind River Real-Time Core for Linux, RTLinux Free
Arquitecturas de doble núcleo basadas en virtualización
• La virtualización da preferencia al micronúcleo de tiempo real
• RTAI, Xenomai (utilizan Adeos)
En ambos casos los threads con requisitos de tiempo real ejecutan
bajo el control del micronúcleo
- con preferencia sobre cualquier aplicación de Linux
Apropiado para aplicaciones con requisitos de TR estricto
• únicamente para los threads controlados por el micronúcleo
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
© M. Aldea, M. González
oct.-13
Arquitectura de doble núcleo
2.3 Linux con doble núcleo
Navegador
Editor de texto
Compilador
otras...
Espacio de
direcciones del
usuario
Interfaz del SO
Linux
Manejadores de Dispositivos
Espacio de
direcciones
del núcleo
T1
T2
T3
Threads
de tiempo
real
Máquina virtual
API POSIX
micronúcleo
Planificador de tiempo real
Hardware
Programación Concurrente
© M. Aldea, M. González
oct.-13
8
9
Tema 2. Sistema Operativo MaRTE OS
2.4 Mercado de los RTOSs
2.4 Mercado de los RTOSs
VxWorks, Debian, Red Hat Linux y QNX (entre
otros) soportan el estándar POSIX
© M. Aldea, M. González
oct.-13
10
2.5 MaRTE OS
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
2.5 MaRTE OS
Características principales:
• Conforme con el perfil mínimo
- Concurrencia a nivel de threads
• Todos los servicios tienen tiempos de respuesta acotados
- también acotada la latencia de atención a interrupciones
• Único espacio de direcciones compartido por el núcleo y la
aplicación
• Núcleo monolítico
• Escrito en Ada (pequeñas partes en C y ensamblador)
• Permite ejecutar aplicaciones concurrentes C, C++ y Ada
• Portable a diferentes plataformas (x86, MC68332 y Linux)
• Desarrollado en el grupo CTR. Código libre (GPL):
http://marte.unican.es
© M. Aldea, M. González
oct.-13
11
2.5 MaRTE OS
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
Entorno de desarrollo
En un RTOS debemos diferenciar los siguientes aspectos:
• núcleo (o kernel) del sistema operativo
• librerías y drivers
• entorno de desarrollo
El entorno de desarrollo es un conjunto de herramientas para:
• editar
• compilar y enlazar
• depurar
• realizar medidas temporales
• diseñar y analizar la aplicación
• cargar la aplicación (sistemas empotrados)
• ...
Programación Concurrente
© M. Aldea, M. González
oct.-13
12
Tema 2. Sistema Operativo MaRTE OS
2.5 MaRTE OS
Entorno de desarrollo cruzado
Los sistemas operativos de tiempo real se usan principalmente en
aplicaciones empotradas
• utilizan un entorno de desarrollo cruzado
Equipo empotrado
• ejecuta la aplicación
© M. Aldea, M. González
oct.-13
13
Entorno de desarrollo cruzado
(Arquitectura x86)
Equipo de Desarrollo
2.5 MaRTE OS
Ethernet
(Descarga de la
aplicación)
Equipo de desarrollo
• ejecuta el entorno de
desarrollo
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
Entorno cruzado:.
• Host: PC con Linux
• Target: PC desnudo
Creación de aplicaciones:
• Basada en GCC y GNAT
• mgcc y mgnatmake
$ mgcc -g fich.o prog.c
$ mgnatmake prog.adb
Carga de la aplicación:
• Ethernet
• Dispositivo de arranque
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
RS-232
(depuración)
Equipo
Empotrado
GNAT
GCC
GDB
MaRTE OS:
Núcleo
Librerías
Herramientas
procesador 386 o superior
Dispositivo de arranque (Disquete, Flash, ...)
© M. Aldea, M. González
oct.-13
14
2.5 MaRTE OS
(cont.)
t
o
o
b
r
e
h
t
E
carga de la aplicación
Programa
Ejecutable
Inicializa
el sistema
Ejecuta programa
del usuario
Entorno de desarrollo cruzado
(Arquitectura x86)
Computador de desarrollo
Computador de ejecución
#include <stdio.h>
int main()
{
printf ("Hola");
return 0;
}
compilación
Núcleo
MaRTE OS
Librerías
Código
objeto
Drivers
MaRTE OS
Inicialización
plataforma
Ethernet
enlazado
Programa
Ejecutable
Programación Concurrente
© M. Aldea, M. González
oct.-13
15
Tema 2. Sistema Operativo MaRTE OS
Arquitecturas "x86" y "Linux Lib"
2.5 MaRTE OS
Aplicación C
Interfaz POSIX-C (ficheros *.h)
Interfaz POSIX
Núcleo de MaRTE OS
Librería
estándar C
(libmc)
Aplicación C
Ficheros *.h de MaRTE OS
(POSIX Threads)
Interfaz POSIX
Núcleo de MaRTE OS
Interfaz Abstracta con el Hardware (PC)
Drivers de
Dispositivos
Interfaz Abstracta con el Hardware (Linux)
PC con procesador 386 o superior
Aplicación C ejecutando sobre
MaRTE OS para PC
Linux
Aplicación C ejecutando sobre
MaRTE OS para Linux
Linux
*.h
Librerías
Linux
(libc y
otras)
File
System
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
Generación de aplicaciones
(Arquitectura "Linux_lib")
© M. Aldea, M. González
oct.-13
16
2.5 MaRTE OS
#include <stdio.h>
int main()
{
printf ("Hola");
return 0;
}
compilación
Código
objeto
Núcleo de MaRTE OS:
- Threads
- Variables condicionales
- Mutexes
- Señales
- Relojes y temporizadores
libc
libm
Librerías estándar
de Linux
otras...
Programación Concurrente
Tema 2. Sistema Operativo MaRTE OS
Enlazado
Programa ejecutable
Linux
(a.out)
ejecución
$ a.out
Hola
$
© M. Aldea, M. González
oct.-13
17
2.5 MaRTE OS
Limitaciones de la arquitectura "Linux Lib"
No se puede lograr comportamiento de tiempo real estricto
• Aplicaciones controladas por el planificador de Linux
• Afectadas por “swapping”, otras actividades del núcleo de
Linux, etc.
Medida del tiempo de ejecución de las tareas
• No se tienen en cuenta los cambios de contexto con otros
procesos Linux
Operaciones de E/S bloq
Comentarios de: Programación Concurrente - Bloque II: Programación concurrente en POSIX - Tema 2. Sistema Operativo MaRTE OS (0)
No hay comentarios