Universidad Nacional del Nordeste
Facultad de Ciencias Exactas y Naturales y Agrimensura
Cátedra: Sistemas Operativos
Año: 2015
Introducción a los sistemas de tiempo real
Alumnos: Ramos María Agustina
DNI/LU: 47357
Resumen Sintético
Los sistemas de computación se encuentran en cualquier parte. Es probable
que nadie se sorprenda al saber que millones de sistemas de computación son
producidos y vendidos cada año, como por ejemplo computadores de
escritorios o computadores personales. Sin embargo, sorprende saber que
billones de sistemas de computación de propósito específico son construidos y
vendidos cada año; los sistemas embebidos se encuentran alrededor de
nuestras vidas, en forma de teléfonos móviles, equipos médicos, sistemas de
navegación aérea, reproductores MP3, impresoras, automóviles, etc.
Cada vez que se mira alrededor es posible identificar un dispositivo que
contiene un microprocesador, y probablemente se ha encontrado un sistema
embebido. Por estas razones resulta conveniente estudiarlos.
En este documento se abordarán conceptos pertinentes a sistemas embebidos
y parte del software que se ejecuta en ellos.
Resumen Extendido
Actualmente, ante los retos que presentan la globalización y la fuerte presión
de los mercados emergentes, todos los sectores están inmersos en una espiral
de esfuerzos que les permitan aumentar sus cuotas de competitividad.
La gran aplicabilidad de los Sistemas Embebidos en cualquier ámbito sectorial,
así como el valor añadido que aportan los mismos a los productos que los
contienen, hace que el desarrollo de estos sistemas sea un área estratégica
preferente para muchas empresas que buscan precisamente este aumento de
su competitividad.
Así, los Sistemas Embebidos van a jugar un papel vital en nuestra sociedad y
se supone revolucionarán los sectores de actividad, como son el sector médico,
el de medios de transporte o el de automatización industrial, entre otros.
Un sistema embebido consiste en un sistema de computación cuyo hardware y
software están específicamente diseñados y optimizados para resolver un
problema concreto eficientemente. El término "embebido" (también se le
conoce como “empotrado”) hace referencia al hecho que la electrónica o el
sistema electrónico de control es una parte integral del sistema en que se
encuentra. La característica principal que diferencia a los “embebidos” de los
demás sistemas electrónicos es que, por estar insertados dentro del dispositivo
que controlan, están sujetos en mayor medida a cumplir requisitos de tamaño,
fiabilidad, consumo y coste, y su existencia puede no ser aparente.
Tabla de contenido
Capítulo 1 ..................................................................................................................................................... 7
1. Introducción ...................................................................................................................... 7
1.2. ¿Qué es un Sistemas Embebido? .......................................................................... 8
1.3 Algo de Historia ..................................................................................................... 9
1.4 Sistema Embebido Integrado .............................................................................. 11
2. Estructura y Componentes de un Sistema Embebido ..................................................... 12
2.1. Características ..................................................................................................... 12
2.2. Componentes de un Sistema Embebido ............................................................. 12
2.3 Hardware de Sistemas Embebidos ...................................................................... 13
2.4 Software de Sistemas Embebidos ....................................................................... 15
3. Aplicaciones de un Sistema Embebido ........................................................................... 16
3.1. Sistemas Operativos Embebidos ......................................................................... 16
3.2 Vigencia ............................................................................................................... 17
3.3 ¿Por qué Usar un Sistema Operativo Embebido? ............................................... 17
3.4 Características .................................................................................................... 17
3.5 Núcleo (kernel) .................................................................................................... 18
3.6 Implementación de S.O. en Tiempo Real ............................................................ 18
3.7 Planificación con Prioridades .............................................................................. 19
3.8 Kernel Apropiativo .............................................................................................. 19
3.9 Tiempo de Latencia ............................................................................................. 20
3.10 Latencia de Interrupción ..................................................................................... 21
3.11 Latencia de despacho .......................................................................................... 22
4. Planificación para los Sistemas de Tiempo Real Estrictos ............................................... 24
4.1 Planificación por Prioridad Monótona en Tasa (Rate-Monitonic Scheduling) .... 24
4.2 Planificación por Prioridad en Finalización de Plazo ........................................... 24
4.3 Planificación con Cuota Proporcional ................................................................. 25
Referencias .................................................................................................................................. 25
7
Índice de Figuras
Fig. 1.1: Ejemplos de sistemas embebidos [2] ......................................................................... 7
Fig. 1.2.1: Un sistema embebido típico [6] ................................................................................ 9
Fig. 1.3.1 Sistema embebido NASA [7].................................................................................. 10
Fig. 2.2.1 Estructura de un SRT (sistema de tiempo real) [8] ................................................. 13
Fig. 2.3.3.1 Ejemplo de Monitoreo con sensores tiempo real [13] .......................................... 15
Fig. 3.7.1: Lista de procesos listos [19] ................................................................................... 19
Fig. 3.8.1: Núcleo Kernel [20] ................................................................................................. 20
Fig. 3.9.1 Tiempo de Latencia [21] .......................................................................................... 21
Fig.3.10.1 Latencia de Irrupción [22] ....................................................................................... 21
Fig. 3.11.1 Tiempo de despacho [23]...................................................................................... 22
Índice de Tablas
Tabla. 3.2.1: Ejemplos de sistemas operativos Embebidos vigentes en la actualidad [18] ... 17
Capítulo 1
1. Introducción
Cualquier sistema en el que el tiempo en el que se produce la salida es significativo,
es un sistema de tiempo real, es generalmente porque la entrada corresponde a algún
movimiento en el mundo físico, y la salida está relacionada con dicho movimiento.
El intervalo entre el tiempo de entrada y el de salida debe ser lo suficientemente para
una temporalidad aceptable.
Un sistema de tiempo real es aquel al que se le solicita que reaccione a estímulos del
entorno (incluyendo el paso de tiempo físico) en intervalos del tiempo dictados por el
entorno [1].
Los sistemas embebidos se encuentran disponibles a cada momento de nuestra vida.
El horno microondas, el auto, el ascensor, el equipo de audio, el avión son controlados
por computadoras que normalmente no poseen una pantalla, un teclado o disco rígido,
y no responden a lo que comúnmente denominamos PC (Ver Fig. 1.1).
Fig. 1.1: Ejemplos de sistemas embebidos [2]
1.2. ¿Qué es un Sistemas Embebido?
Existen numerosas definiciones de sistemas embebidos, algunas son:
“Un sistema embebido es cualquier dispositivo que incluye un computador
programable, pero en sí mismo no es un computador de propósito general” [3].
“Un sistema embebido es un sistema electrónico que contiene un
microprocesador o micro controlador; sin embargo, no pensamos en ellos como
un computador” [4].
“Las personas usan el término sistema embebido para referirse a cualquier
sistema de cómputo escondido en algún producto o dispositivo” [5].
Los sistemas embebidos suelen tener en una de sus partes una computadora con
características especiales conocida como microcontrolador que viene a ser el cerebro
del sistema.
Este no es más que un microprocesador que incluye interfaces de entrada/salida en el
mismo chip. Normalmente estos sistemas poseen un interfaz externa para efectuar un
monitoreo del estado y hacer un diagnóstico del sistema.
Además cabe reseñar que el uso de sistemas embebidos en productos complejos
implica un desafío de la seguridad en TI para proteger la información contenida en el
sistema embebido y también la que es transmitida desde y hacia el dispositivo por
redes privadas o Internet. Por tanto cabe incluir funciones criptográficas, diseño de
protocolos y consultoría en análisis y verificación así como servicios de pruebas de
seguridad y evaluaciones específicas para sistemas embebidos.
Las personas que trabajan en el campo del diseño de sistemas de tiempo real
distinguen frecuentemente entre sistemas de tiempo real estrictos (hard) y no estrictos
(soft), los sistemas de tiempo real estrictos son aquéllos en los que es absolutamente
imperativo que las respuestas se produzcan dentro del tiempo límite especificado.
Un ejemplo claro de un sistema de tiempo estricto real es el control de tráfico aéreo.
Los sistemas de tiempo real no estrictos son aquéllos en los que los tiempos de
respuesta son importantes pero el sistema seguirá funcionando correctamente aunque
los tiempos límite no se cumplan ocasionalmente Se puede observar en la Fig. 1.2.1
la configuración típica de un sistema embebido.
Fig. 1.2.1: Un sistema embebido típico [6]
El software que controla las operaciones del sistema puede estar escrito en módulos
que reflejan la naturaleza física del entorno.
Normalmente habrá una notación específica que contenga los algoritmos necesarios
para controlar físicamente los dispositivos, un módulo responsable del registro de los
cambios de estado del sistema, un módulo para recuperar y presentar dichos cambios,
y un módulo para interaccionar con el operador.
1.3 Algo de Historia
El primer sistema embebido reconocido fue el sistema de guía de Apolo desarrollado
por el laboratorio de desarrollo del MIT para las misiones Apolo hacia la Luna.
Cada vuelo hacia este destino, tenía dos de estos sistemas. La función era manejar el
sistema de guía inercial de los módulos de excursión lunar. En un comienzo fue
considerado como el elemento que más riesgo presentaba en el proyecto Apolo. Este
sistema de cómputo fue el primero en utilizar circuitos integrados y utilizaba una
memoria RAM magnética, con un tamaño de palabra de 16 bits.
El software fue escrito en el lenguaje ensamblador propio y constituía en el sistema
operativo básico, pero capaz de soportar hasta ocho tareas simultáneas.
El primer sistema embebido producido en masa, fue el computador guía del misil
norteamericano Minuteman II en 1962 (Ver Fig.1.3.1) El principal aspecto de diseño
del computador del Minuteman, es que además de estar construido con circuitos
integrados, permitía reprogramar los algoritmos de guía del misil para la reducción de
errores, y permitía realizar pruebas sobre el misil ahorrando así el peso de los cables y
conectores.
Fig. 1.3.1 Sistema embebido NASA [7]
1.4 Sistema Embebido Integrado
Se entiende por sistemas embebidos a una combinación de hardware y software de
computadora, sumado tal vez a algunas piezas mecánicas o de otro tipo, diseñado
para tener una función específica. Es común el uso de estos dispositivos pero pocos
se dan cuenta que hay un procesador y un programa ejecutándose que les permite
funcionar.
Muchas veces un sistema embebido es un componente de un sistema mucho más
grande, como por ejemplo los sistemas de frenos o el sistema de inyección de
combustible, en automóviles actuales son sistemas embebidos.
Esta combinación de software y hardware puede ser reemplazada en muchos casos
por un circuito integrado que realice la misma tarea. Pero una de las ventajas de los
sistemas embebidos es su flexibilidad. Ya que a la hora de realizar alguna
modificación resulta mucho más sencillo modificar unas líneas de código al software
del sistema embebido que reemplazar todo el circuito integrado.
2. Estructura y Componentes de un Sistema Embebido
2.1. Características
Las principales características de un sistema embebido son el bajo costo y consumo
de potencia. Dado que muchos sistemas embebidos son concebidos para ser
producidos en miles o millones de unidades, el costo por unidad es un aspecto
importante.
Otras Características:
Funcionamiento específico. Un sistema embebido usualmente ejecuta un
programa específico de forma repetitiva.
Manipulación de números reales.
Reactivos y tiempo real. Muchos sistemas embebidos deben ser reactivos o
reaccionar ante cambios en el ambiente, además de realizar algunos cálculos
en tiempo real sin ningún retraso, es decir, se deben tener resultados en
tiempos fijos ante cualquier eventualidad.
Interacción con interfaces de hardware.
Implementación eficiente y entorno de ejecución a tener en cuenta en la etapa
de diseño.
2.2. Componentes de un Sistema Embebido
Un sistema embebido posee hardware de computador junto con software embebido
como uno de sus componentes más importantes. Es un sistema computacional
dedicado para aplicaciones o productos. Puede ser un sistema independiente o parte
de un sistema mayor, y dado que usualmente su software está embebido en ROM
(Read Only Memory) no necesita memoria secundaria como un computador.
Un sistema embebido tiene tres componentes principales:
Hardware.
Un software primario o aplicación principal. Este software o aplicación lleva a cabo
una tarea en particular, o en algunas ocasiones una serie de tareas.
Un sistema operativo que permite supervisar la(s) aplicación(es), además de
proveer los mecanismos para la ejecución de procesos. En muchos sistemas
embebidos es requerido que el sistema operativo posea características de tiempo
real.
En la figura 2.2.1 se encuentra una estructura típica de un SRT conocido como
sistema en tiempo real:
Fig.2.2.1 Estructura de un SRT (sistema de tiempo real) [8]
2.3 Hardware de Sistemas Embebidos
El término hardware en cualquier sistema se refiere a los componentes físicos que lo
forman o constituyen; estos componentes permiten realizar un conjunto de tareas al
ejecutar programas o software.
Los componentes físicos de un sistema embebido por lo general difieren en algunos
aspectos de los que conforman un sistema de propósito general, como un computador
de escritorio en: tamaño, capacidad de cómputo, requerimientos de energía, etc. Por
esta razón es de gran importancia conocer el funcionamiento del hardware para poder
desarrollar sistemas embebidos y las aplicaciones que se ejecutarán en él.
La tecnología de procesadores trata de la arquitectura del núcleo computacional usado
para implementar las funcionalidades deseadas de un sistema [9]. En particular, un
microprocesador “es un componente LSI que realiza una gran cantidad de funciones o
tareas en una sola pieza de circuito integrado” [10].
El término LSI (Large Scale Integration) se refiere a la tecnología que permite integrar
varios miles de transistores en un solo circuito integrado. Otra definición de
microprocesador podría ser “componente LSI que asocia en una sola pieza de circuito
integrado las funciones de una unidad aritmético-lógica y la unidad de control
asociada” [10].
2.3.1 Un Procesador de Propósito General o
Microprocesador
Es un dispositivo programable adaptable a una gran variedad de aplicaciones. Una
característica de ellos es que poseen memoria para la ejecución de programas, este
componente es necesario ya que no se conoce a prioridad cuál programa será
ejecutado. Otra característica es que poseen un camino de datos genérico,
conformado por varios registros y una o varias ULAs (Unidad Lógica Aritmética). Todo
esto hace posible la ejecución de aplicaciones de diversos propósitos [11].
2.2.2 Procesadores de Propósito Específico
Un procesador de propósito específico es un circuito digital diseñado para ejecutar
exactamente un programa. Por ejemplo un codificador/decodificador JPEG, el cual
ejecuta un programa que comprime y descomprime marcos de video. Un sistema
embebido frecuentemente utiliza este tipo de procesadores, ya que se ajusta
completamente a las funcionalidades requeridas. A menudo este tipo de procesadores
es denominado coprocesador, acelerador y/o periférico [12].
2.3.3 Sensores
Un sensor es un dispositivo eléctrico y/o mecánico que convierte magnitudes físicas en
valores medibles de dicha magnitud. Los sensores van a aportar información tanto del
entorno como del estado interno del componente que mide [12].
La señal medida usualmente debe transformarse para poder ser interpretada. Este
proceso se realiza en tres fases:
• Un fenómeno físico es captado por un sensor, como consecuencia, muestra en su
salida una señal eléctrica equivalente al fenómeno captado.
• La señal eléctrica es modificada por un sistema de acondicionamiento de señal, cuya
salida es un voltaje que será convertido usando un convertidor analógico/digital (A/D)
para ser tratado.
• El convertidor A/D es sensible sólo a rangos limitados de tensiones, frecuentemente
0 a 5V.
El convertidor hace que la salida continua se convierta en una salida discreta.
En sistemas embebidos suelen utilizarse diversos tipos de sensores como por
ejemplo, sensores de luz, sensores de contacto, sensores de temperatura, etc.
Un ejemplo de la nueva tendencia de Smart Cities (Ciudades Inteligentes) con
sistemas de monitoreo, se muestra en la fig. 2.3.3.1.
Fig. 2.3.3.1 Ejemplo de Monitoreo con sensores tiempo real [13]
2.4 Software de Sistemas Embebidos
En lo que se refiere al software, se tendrán requisitos específicos según la aplicación.
En general para el diseño de un SE no se dispone de recursos ilimitados sino que la
cantidad de memoria será escasa, la capacidad de cálculo y dispositivos externos será
limitada, etc. Se puede hablar de las siguientes necesidades:
- Trabajo en tiempo real.
- Optimizar al máximo los recursos disponibles.
- Disponer de un sistema de desarrollo específico para cada familia de
microprocesadores empleados.
3. Aplicaciones de un Sistema Embebido
3.1. Sistemas Operativos Embebidos
Un sistema operativo es un programa que se ejecuta continuamente en un dispositivo,
brindando una capa de abstracción para los usuarios facilitándole el uso del
dispositivo; además de ocultar el hardware del sistema y encargarse de la
administración de sus recursos [14].
Un sistema operativo embebido es un sistema operativo que se ejecuta sobre un
sistema embebido, los cuales han sido descritos previamente. Los sistemas operativos
embebidos generalmente se ejecutan sobre dispositivos que difieren de un
computador común, como televisores, hornos microondas, y teléfonos móviles.
Usualmente tienen algunas características de sistemas de tiempo real, pero a la vez
tienen restricciones de tamaño, memoria y energía que los hacen especiales.
Algunas definiciones alternativas de sistemas operativos embebidos se listan a
continuación:
• “Algunos sistemas embebidos incluyen un sistema operativo, que se conoce como
sistema operativo embebido. Este puede ser un sistema de software muy pequeño
desarrollado específicamente para ser usado con un algún sistema embebido en
particular, o en ocasiones puede ser una versión reducida de algún sistema operativo
que se utiliza en una computadora de propósito general” [15].
• “Un sistema operativo es definido como una capa de software que permite
multiplexar abstracciones de hardware como: memoria volátil, ciclos de procesador,
dispositivos de entrada salida, etc., para los programas de aplicación. Un sistema
operativo embebido debe realizar las operaciones expuestas anteriormente, pero en
un ambiente donde los programas de aplicaciones poseen numerosas restricciones,
particularmente en cuanto a consideraciones de tiempo y energía” [16].
• “Un sistema operativo para un sistema embebido usualmente es diseñado para una
aplicación específica, y por lo tanto es más estático que un sistema operativo de
propósito general” [17].
3.2 Vigencia
En la Tabla 3.2.1 se muestra un resumen de algunos sistemas operativos embebidos
vigentes en la actualidad, resaltando características de interés.
Tabla 3.2.1. Ejemplos de Sistemas Operativos Embebidos vigentes en la actualidad [18]
3.3 ¿Por qué Usar un Sistema Operativo Embebido?
Porque permite la multitarea y utilizar diferentes soluciones ya desarrolladas
(dependiendo el sistema a usar) para la solución de problemas, en vez de tener que
desarrollar heurísticas para cada sistema embebido que se desarrolle. Son robustos y
personalizables y tienen soporte en la web.
3. 4 Características
Algunas características son:
Fiabilidad y seguridad: Un fallo en un sistema de control puede hacer que el sistema
controlado se comporte de forma peligrosa o antieconómica. Es importante asegurar
que si el sistema de control falla lo haga de forma que el sistema controlado quede en
un estado seguro, hay que tener en cuenta los posibles fallos o excepciones en el
diseño.
Eficiencia: Gran parte de los sistemas de control deben responder con gran rapidez a
los cambios en el sistema controlado.
Interacción con dispositivos físicos: Los sistemas empotrados interaccionan con su
entorno mediante diversos tipos de dispositivos que normalmente no son
convencionales (teclados, impresoras): convertidores A/D y D/A entradas y salidas
digitales paralelo y serie, (interfaces con sensores, actuadores, periféricos
especiales). Los componentes del software que controlan el funcionamiento de estos
dispositivos son, en general, dependientes del sistema concreto.
Robustez: Embarcados en sistemas con movimiento o que pueden ser transportados,
sujetos a vibraciones e incluso impactos (coches, robots, instrumentación portátil). No
siempre trabajan en condiciones óptimas de temperatura, humedad, y limpieza.
3.5 Núcleo (kernel)
El núcleo (o kernel) es el responsable del manejo de los procesos y la comunicación
entre estas. El servicio fundamental que provee el kernel es el cambio de contextos. El
uso de un kernel de tiempo real generalmente simplifica el diseño de un sistema al
permitir que la aplicación sea dividida en múltiples tareas que el kernel maneja.
Las características de un núcleo de tiempo real son limitadas, porque los sistemas de
tiempo real normalmente cumplen una única tarea.
El sistema permite pocas tareas, que generalmente esperan entradas que deben ser
recibidas de dispositivos de hardware.
Hay restricciones de espacio para procesadores potentes o memorias grandes.
Hay limitaciones de costo.
Existen dos métodos para gestionar los procesos críticos de un sistema operativo, los
kerneles apropiativos y lo kerneles no apropiativos.
3.6 Implementación de S.O. en Tiempo Real
Cuando la CPU queda inactiva, el sistema operativo debe seleccionar uno de los
procesos que se encuentran en la cola de procesos preparados para ejecución. El
planificador a corto plazo lleva a cabo esa selección del proceso. El planificador elige
uno de los procesos que están en memoria preparados para ejecutarse y asigna la
CPU a uno de ellos.
Las principales características necesarias para implementar estos sistemas operativos
son:
Planificación Apropiativa.
Kernel Apropiativo.
Latencia Minimizada.
3.7 Planificación con Prioridades
La planificación con prioridades está basada en asignar una prioridad a cada tarea y
decidir en cada momento qué tarea se debe ejecutar en base a la tarea más prioritaria
que esté pendiente de ejecución. La prioridad de una tarea se expresa normalmente
por un número entero. Es decir, la mayor prioridad corresponderá al valor 0 y la
prioridad será menor según aumente su valor. Cuando se hable de una tarea de mayor
prioridad se querrá decir que su valor es menor, y viceversa, a mayor valor menor será
la prioridad. En la figura 3.7.1 se puede observar la lista de procesos listos, el
procesador quita el proceso desposeído y lo coloca al final de la lista de procesos
listos.
Fig. 3.7.1: Lista de procesos listos [19].
3.8 Kernel Apropiativo
Un kernel apropiativo permite desalojar una tarea que se está ejecutando.
En los sistemas de tiempo real estrictos es de fundamental importancia utilizar el
kernel apropiativo (ver Fig.3.8.1).
El diseño de un kernel apropiativo puede resultar bastante difícil y las aplicaciones
tradicionales orientadas al usuario, no requieren esos rápidos tiempos de respuesta.
Sin embargo, para satisfacer los requisitos de temporización de los sistemas de tiempo
real (en particular de los sistemas de tiempo real estrictos) resulta obligatorio utilizar un
kernel apropiativo. En caso contrario una tarea de tiempo real podría tener que espera
un periodo de tiempo arbitrariamente largo, mientras hubiera otra tarea activa en el
kernel.
Existen diversas estrategias para hacer que un kernel sea apropiativo. Una de ella
consiste en insertar puntos de desalojo en las llamadas al sistema de larga duración.
En cada punto de desalojo se comprueba si existe la necesidad de ejecutar un
proceso de alta prioridad. Cuando un proceso de alta prioridad termine de ejecutarse,
el proceso interrumpido continuará con su llamada al sistema.
Una segunda estrategia para hacer que un kernel sea apropiativo consiste en utilizar
mecanismos de sincronización. Con este método, el kernel siempre puede ser
apropiativo, porque cualquier dato del kernel que se esté actualizando estará protegido
frente a posibles modificaciones por parte del proceso de alta prioridad.
Fig. 3.8.1: Núcleo Kernel [20]
3.9 Tiempo de Latencia
Denominamos latencia del suceso a la cantidad de tiempo que transcurre desde el
momento que tiene lugar el suceso hasta el momento en el que se le da servicio.
Como se puede observar en el Fig. 3.9.1 el tiempo que transcurre entre que un suceso
ocurre y es atendido.
Fig. 3.9.1 Tiempo de Latencia [21]
3.10 Latencia de Interrupción
Es el periodo de tiempo que transcurre entre la llegada de una interrupción a la CPU,
al instante en el comienza a rutina de servicio de dicha interrupción.
Se debe minimizar la latencia de interrupción.
Se puede observar en la figura 3.10.1 el funcionamiento del tiempo de interrupción.
Fig.3.10.1 Latencia de Irrupción [21]
3.11 Latencia de despacho
Es la cantidad de tiempo requerida para que el despachador de planificación detenga
un proceso e inicie otro.
Para minimizar la latencia de despacho se debe tener un kernel apropiativo.
Se puede observar en la Fig. 3.11.1 un ejemplo representativo del tiempo de
despacho, que transcurre entre el evento ocurre y el momento que se responde al
mismo.
Fig. 3.11.1 Tiempo de despacho [22]
La fase de conflicto en la latencia de despacho tiene 2 componentes importantes:
1- El desalojo de cualquier proceso que se esté ejecutando en el kernel.
2- La liberación por parte de los procesos de baja prioridad de los recursos
necesarios para el proceso de alta prioridad.
Se puede afectar a la latencia de despacho cuando un proceso de mayor prioridad
necesita leer o modificar datos de kernel a los que esté actualmente accediendo un
proceso de menor prioridad.
El proceso de menor prioridad tendrá que esperar a que los otros de mayor prioridad
finalicen con el uso del recurso, de esta forma el proceso de menor prioridad es
desalojado a favor de otro proceso que tenga una prioridad mayor.
4. Planificación para los Sistemas de Tiempo Real Estrictos
4.1 . Planificación por Prioridad Monótona en Tasa (Rate-Monitonic Scheduling)
Es un algoritmo de programación utilizado en los sistemas operativos de tiempo real
con prioridad estática. Las prioridades estáticas se asignan en función de la duración
del trabajo. El trabajo más corto tiene mayor prioridad.
Si se está ejecutando un proceso de menor prioridad y otro de mayor pasa a estar
disponible para la ejecución, el proceso desaloja al de menor prioridad, a cada tarea
periódica se le asigna una prioridad en función inversa a su periodo, cuando más corto
sea el periodo, mayor la prioridad y viceversa.
4.2 Planificación por Prioridad en Finalización de Plazo
Es un algoritmo de programación utilizado en sistemas operativos en tiempo real para
colocar los procesos en una cola de prioridad. Cada vez que un evento de
programación se produce, se buscara en la cola el proceso más cercano a su fecha
límite. Este proceso es el siguiente en ser programado para su ejecución.
Cuando más próximo esté él plazo mayor será la prioridad y cuando más lejano esté el
plazo, menor será la misma, un proceso ejecutable debe anunciar sus requisitos de
plazo al sistema.
Esta planificación no requiere que los procesos sean periódicos, ni que necesiten de
una cantidad constante de tiempo de CPU por cada ráfaga de ejecución.
La planificación EDF (Menor tiempo de respuesta primero (Earliest deadline first
scheduling)) resulta óptima desde un punto de viste teórico, porque permite planificar
los procesos de forma de poder cumplir los requisitos de plazos de ejecución y la
utilización de la CPU será del 100%. Sin embargo desde el punto de vista práctico es
imposible cumplir con la utilización máxima de la CPU debido a los cambios de
contexto entre procesos y al coste del tratamiento de las interrupciones.
4.3 Planificación con Cuota Proporcional
Este es un algoritmo que funciona asignando T cuotas entre todas las aplicaciones,
donde cada aplicación puede recibir N cuotas de tiempo garantizando así que las
aplicaciones tengas N/T del tiempo total del procesador.
Referencias
[1] Randall, GE, Amón, CJ y Owens, TJ .“Estimación tensor Momento utilizando sismogramas
regionales de un despliegue de red portátil meseta tibetana” Geophysical Research Letters 22.
(1995).
[2] Jonathan W. Valvano. “Embedded Microcomputer Systems: Real Time Interfacing”. Third
Edition”. 2007.
[3] Wolf, W. “Computers as Components: Principles or Embedded Computing System Design”.
Second Edition. Morgan Kaufmann. 2008.
[4] Morton, T. “Embedded Microcontrollers”. Prentice Hall. 2000.
[5] Simon, D. “And Embedded Software Primer”. Addison-Wesley Professional. 1999.
[6] Jonathan W. Valvano. “Introducción a los sistemas embebidos”. México, D.F.: Thomson,
2004.
[7] Kistler Aerospace Corporation. “K-1_Flight_Experiments_Design_Requirements”. 2002.
[8] Sistemas operativos en el tiempo real (SORT). Website. Última visita 29/09/2015
http://www.isa.uniovi.es/docencia/TiempoReal/Recursos/temas/sotr.pdf
[9] Vahid, F. & Givargis, T. “Embedded System Design”. John Wiley & Sons, Inc. 2002.
[10] Zazks, R. “Microprocessors: From Chips to Systems”. Sybex Inc. 1981.
[11] Hallinan, C. “Embedded Linux”. Prentice Hall. 2006.
[12] Díaz, E. et al. “Introducción al Diseño de Microrobots Móviles”. Universidad de Alcala.
2006.
[13] CTO Sofia2. Website. Última Visita 29/09/2015. http://www.indracompany.com/
[14] Silberschatz, et al. “Operating System Concepts”. Seventh Edition. John Wiley & Sons.
2005.
[15] The Linux Information Project (LINFO). “Embedded System Definition”. 2006.
http://www.linfo.org/embedded_system.html.
[16] Che-Mou, An operating system architecture for embedded Systems – design and
implementation: Departament of electrical Engneering. National Taiwan University. 1999.
[18] CONTEXTO NACIONAL E INTERNACIONAL II. Website. Ultima visita 29/09/2015.
https://allabutkpop.wordpress.com/sistemas-operativos-de-sistemas-embebidos.
[19] Lista de procesos listos. Website. Última visita 27/09/2015.
http://www.angelfire.com/droid/sistemasoperativos/procesador.htm.
[20] Nucleo Kernel. Website. Última visita 27/09/2015.
http://hardmante.blogspot.com.ar/2011/04/kernel.html.
[21] Luis Duran Rodriguez. “El Gran Libro del PC interno: programación de Sistemas de
hardware a fondo”. Primera Edición. MARCOMBO ALFAOMEGA. 2007.
[22] Latencia de Despacho. Website. Ultima Visita 26/09/2015.
https://chsos20141909547.wordpress.com/2014/05/06/latencia-de-despacho
Top Related