PDF de programación - Programación Concurrente - Bloque II: Programación concurrente en POSIX - Tema 2. Sistema Operativo MaRTE OS

Imágen de pdf Programación Concurrente - Bloque II: Programación concurrente en POSIX - Tema 2. Sistema Operativo MaRTE OS

Programación Concurrente - Bloque II: Programación concurrente en POSIX - Tema 2. Sistema Operativo MaRTE OSgráfica de visualizaciones

Publicado el 14 de Enero del 2017
964 visualizaciones desde el 14 de Enero del 2017
160,8 KB
7 paginas
Creado hace 10a (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
  • Links de descarga
http://lwp-l.com/pdf1090

Comentarios de: Programación Concurrente - Bloque II: Programación concurrente en POSIX - Tema 2. Sistema Operativo MaRTE OS (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad