Un sistema operativo en tiempo real ( RTOS ) del es un sistema operativo polivalente previsto para los usos en tiempo real . Tales usos incluyen los sistemas encajados (termóstatos programables, los reguladores del aparato electrodoméstico, los teléfonos móviles ), la nave espacial industrial de las robustezas, el control industrial (véase el SCADA ), y el equipo de la investigación científica.
Un RTOS facilita la creación de un sistema en tiempo real, pero no la garantiza que el resultado final será en tiempo real; esto requiere el desarrollo correcto del software. Un RTOS no tiene necesario alto rendimiento de procesamiento ; algo, un RTOS proporciona las instalaciones que, si están utilizados correctamente, los plazos de la garantía se pueden resolver generalmente (el tiempo real suave ) o el determinista (tiempo real duro ). Un RTOS utilizará típicamente algoritmos de previsión especializados para proveer del revelador en tiempo real las herramientas necesarias producir el comportamiento determinista en el sistema final. Un RTOS se valora más para cómo rápidamente y/o fiable puede responder a un acontecimiento particular que para la cantidad de trabajo dada puede realizarse en un cierto plazo. Los factores claves en un RTOS son por lo tanto un estado latente mínimo de la interrupción y un estado latente mínimo de la conmutación del hilo de rosca.
Un ejemplo temprano de un sistema operativo en tiempo real del en grande era el " supuesto; controlar el program" convertido por el American Airlines y el IBM para el sistema de reservaciones de línea aérea de SABRE .
El discusión existe sobre qué constituye realmente el computacional en tiempo real.
(previsión de prioridad) solamente cuando un acontecimiento de una prioridad más elevada necesita servicio, llamadas prioridad con derecho preferente.
Tareas de tiempo compartido del interruptor de los diseños en una interrupción del reloj, y en los acontecimientos, llamados el petirrojo redondo .
El interruptor de tiempo compartido de los diseños encarga más a menudo que se necesita terminantemente, pero da el pulidor, trabajos m3ultiple más deterministas, dando la ilusión que un proceso o un usuario tiene único uso de una máquina.
La CPU temprana diseña necesitó muchos ciclos cambiar las tareas, durante las cuales la CPU no podría hacer nada útil. OSes tan temprano intentó reducir al mínimo perder tiempo CPU máximo evitando los tarea-interruptores innecesarios.
CPU más recientes llevan lejos menos tiempo para cambiar a partir de una tarea otra; el caso extremo es los procesadores del barril que cambian a partir de una tarea al siguiente en los ciclos cero. Un más nuevo reparto del tiempo del instrumento de RTOSes casi invariable que programa con la previsión con derecho preferente a base de prioridad.
La llave verdadera está diseñando el planificador. La estructura de datos de la lista lista en el planificador se diseña generalmente para reducir al mínimo la longitud del tiempo a lo peor pasada en la sección crítica del planificador, durante la cual se inhibe el derecho preferente de compra, y, en algunos casos, todas las interrupciones son lisiadas. Pero, la opción de la estructura de datos depende también del número de tareas máximo que puedan estar en el .dhanesh listo
El si nunca hay más que algunas tareas en la lista lista, después una lista encadenada bidireccional sin clasificar simple de tareas listas es probablemente óptimo. si la lista lista contiene generalmente solamente algunas tareas pero contiene de vez en cuando más, después la lista se debe clasificar por prioridad, de modo que encontrar la tarea de la prioridad más elevada de funcionar no requiera la iteración a través de la lista entera. La inserción de una tarea entonces requiere caminar la lista lista hasta alcanzar el extremo de la lista, o una tarea de una prioridad más baja que el de la tarea que es insertada. El cuidado se debe tomar para no inhibir el derecho preferente de compra durante esta búsqueda entera; deber dividir probablemente la sección crítica si no-larga en pequeños pedazos, para si, durante la inserción de una tarea de prioridad baja, una interrupción ocurre que hace una tarea prioritaria lista, que la tarea prioritaria se puede insertar y funcionamiento inmediatamente (antes de que se inserta la tarea de prioridad baja).
El tiempo de reacción crítico, llamado a veces el tiempo del tiempo de retorno del, es el tiempo que toma para hacer cola una nueva tarea lista y para restaurar el estado de la tarea de la prioridad más elevada. En un RTOS bien diseñado, alistar una nueva tarea tomará 3-20 instrucciones por entrada de la fila de procesos preparados, y la restauración de la tarea lista de la alto-prioridad tomará 5-30 instrucciones. En 20MHz un procesador 68000, los tiempos del interruptor de tarea funcionan con cerca de 20 microsegundos con dos tareas listas. 100 CPU del BRAZO del megaciclo cambian en algunos microsegundos.
En sistemas en tiempo real más avanzados, las tareas en tiempo real comparten recursos de computación con muchas tareas no en tiempo real, y la lista lista puede ser arbitrariamente larga. En tales sistemas, una lista lista del planificador ejecutada como lista encadenada sería inadecuada.
Los sistemas operativos de fines generales no permiten generalmente que los programas del usuario enmascaren interrupciones (de la neutralización), porque el programa de usuario podría controlar la CPU para mientras deseara. Las CPU modernas hacen el inaccesible mordida control de la neutralización de la interrupción (o instrucción) en el modo del usuario para permitir los sistemas operativos eviten que las tareas del usuario hagan esto. Muchos sistemas encajados y RTOSs, sin embargo, permiten el uso sí mismo funcione en el modo del núcleo para la mayor eficacia de la llamada de sistema y también permita que el uso tenga mayor control de las condiciones sin requerir la intervención del OS.
En sistemas del solo-procesador, si el uso funciona en el modo del núcleo y puede enmascarar las interrupciones, a menudo que es la mejor solución (de los gastos indirectos más bajos) a prevenir el acceso simultáneo a un recurso compartido. Mientras que se enmascaran las interrupciones, la tarea actual tiene uso exclusivo del de la CPU; ninguna otra tarea o interrupción puede tomar control, así que la sección crítica se protege eficazmente. Cuando la tarea sale su sección crítica, debe desenmascarar interrupciones; las interrupciones pendientes, eventualmente, entonces ejecutarán. Las interrupciones temporalmente que enmascaran deben ser hechas solamente cuando la trayectoria más larga a través de la sección crítica es más corta que el estado latente máximo deseado de la interrupción, o bien este método aumentará el estado latente máximo de la interrupción del sistema. Este método de protección se utiliza típicamente solamente cuando la sección crítica es apenas algunas líneas del código fuente de largo y no contiene ninguÌn lazo. Este método es ideal para los registros trazados una correspondencia de bits hardware de protección cuando los pedacitos son controlados por diversas tareas.
Cuando la sección crítica es más larga que algunas líneas del código fuente o implica la colocación muy larga, el programador encajado/en tiempo real debe recurrir a usar los mecanismos idénticos o similares a ésos disponibles en sistemas operativos de fines generales, tales como semáforos y mensajería entre procesos OS-supervisada. Tales mecanismos implican llamadas de sistema, e invocan generalmente el código del despachador del OS en la salida, así que pueden tomar muchos centenares de instrucciones de la CPU de ejecutar, mientras que las interrupciones que enmascaran pueden tomar únicamente tres instrucciones en algunos procesadores. Pero para secciones críticas más largas, no puede haber opción; las interrupciones no se pueden enmascarar por largos periodos sin el aumento del estado latente de la interrupción del sistema.
Se traba o se abre un semáforo binario . Cuando es bloqueado, una coleta de tareas puede esperar el semáforo. Una tarea puede fijar típicamente un descanso en su espera para un semáforo. Los problemas con el semáforo basaron diseños son bien sabido: Inversión de la prioridad y callejones sin salida
En la inversión de la prioridad del, esperas prioritarias de una tarea porque una tarea de prioridad baja tiene un semáforo. Una solución típica es tener la tarea que tiene un funcionamiento del semáforo en (heredar) la prioridad de la tarea que espera más alta. Pero este acercamiento simplista falla cuando hay niveles múltiples de esperar (A espera un semáforo binario trabado por B, que espera un semáforo binario trabado por C). La manipulación de niveles múltiples de herencia sin la introducción de inestabilidad en ciclos no es directa.
En un callejón sin salida, dos o más tareas traban un número de semáforos binarios y después esperan por siempre (ninguÌn descanso) otros semáforos binarios, creando un gráfico cíclico de la dependencia. El panorama más simple del callejón sin salida ocurre cuando dos tareas traban dos semáforos en lockstep, pero en la orden opuesta. El callejón sin salida es prevenido generalmente por diseño cuidadoso, o solando los semáforos (que pasan control de un semáforo a la tarea de una prioridad más elevada en condiciones definidas).
El otro acercamiento a la distribución de recurso está para que las tareas envíen los mensajes . En este paradigma, el recurso es manejado directo por solamente una tarea; cuando otra tarea quiere interrogar o manipular al recurso, envía un mensaje a la tarea de manejo. Este paradigma sufre de problemas similares como semáforos binarios: La inversión de la prioridad ocurre cuando una tarea está trabajando en un mensaje low-priority, y no hace caso de un mensaje de la alto-prioridad (o de un mensaje que origina indirectamente de una tarea prioritaria) en su en-caja. Los callejones sin salida del protocolo ocurren cuando dos o más tareas esperan uno a para enviar mensajes de respuesta.
Aunque su comportamiento en tiempo real sea menos quebradizo que sistemas del semáforo, los sistemas mensaje-basados simples no tienen generalmente peligros del callejón sin salida del protocolo, y mejor-se comportan generalmente que sistemas del semáforo.
En primer lugar, la velocidad de la asignación es importante. Un esquema de asignación estándar de memoria explora una lista encadenada de la longitud indeterminada para encontrar un bloque de memoria libre conveniente; sin embargo, esto es inaceptable pues la asignación de memoria tiene que ocurrir en un rato fijo en un RTOS.
En segundo lugar, la memoria puede convertirse en hecho fragmentos mientras que las regiones libres se separan por las regiones que son funcionando. Esto puede hacer un programa atascar, incapaz de conseguir memoria, aunque hay teóricamente bastante disponible. Los algoritmos de la asignación de memoria que acumulan lentamente la fragmentación pueden trabajar muy bien para el machines&mdash de escritorio; cuando el reanudó cada mes o so— pero ser inaceptable para los sistemas encajados que funcionan a menudo por años sin la reanudación.
El simple fijo-tamaño-bloquea trabajos del algoritmo de asombrosamente bien para los sistemas encajados simple
Otra fuerza verdadera de bloques de tamaño fijo es para los sistemas de DSP particularmente donde una base está realizando una sección de la tubería y la sección siguiente se está haciendo en otra base. En este caso, la gerencia de almacenador intermediario de tamaño fijo con una base que llena los almacenadores intermediarios y otro sistema de corazones que vuelven los almacenadores intermediarios es muy eficiente. Un RTOS optimizado DSP como el sistema operativo del unísono o el DSPnano RTOS proporciona estas características.
Ver la asignación de memoria para más detalles.
.
| Random links: | Alija Izetbegović | Estación de la entrada DLR de la torre | Medalla del honor (series) | Sacador (ingeniería) | Amy Clampitt |