Interpretación | Tarjeta de concepto de sistema operativo en tiempo real

¿Qué es un RTOS? En una comprensión profunda de los sistemas operativos en tiempo real, encontraremos que el principio básico de RTOS es lograr un rendimiento en tiempo real a través del procesamiento de interrupciones y la programación de tareas. Los subprocesos y la programación son los dos conceptos más importantes en RTOS.

Este artículo primero explica estos dos conceptos y luego brinda otros términos relacionados de RTOS, que simplemente se dividen en términos relacionados de clase de núcleo y clase de subproceso. Comprender estos conceptos básicos es una parte clave del aprendizaje de RTOS. El kernel aquí se refiere a la parte central del RTOS, que es el programa provisto por el fabricante del RTOS, y el subproceso se refiere al programa compilado por el diseñador de la aplicación, que se ejecuta bajo la programación del kernel.

Significado básico de hilo y programación

Thread y scheduling son dos conceptos básicos inseparables e importantes en RTOS Una comprensión profunda de ellos es crucial para el aprendizaje de RTOS.

1. El significado básico de hilo.

Thread es uno de los conceptos más importantes en RTOS. Bajo RTOS, un proyecto de aplicación integrado complejo se descompone en pequeños proyectos con funciones claras de acuerdo con ciertas reglas, y luego las reglas de operación de cada pequeño proyecto se establecen y se entregan a RTOS para su gestión. Esta es la idea básica de RTOS- programación basada. Estos pequeños proyectos se denominan subprocesos (Thread), y RTOS administra estos subprocesos, lo que se denomina programación (Scheduling).

No es muy fácil dar una definición precisa y completa de subprocesos en RTOS, y los subprocesos se pueden entender desde diferentes perspectivas. Desde la perspectiva de la programación de subprocesos, se puede considerar que el subproceso en RTOS es un pequeño programa con funciones claras, que es la unidad básica de la programación de RTOS; desde la perspectiva del diseño de software RTOS, es necesario dividir la colección A de programas independientes e interactivos, tal colección de programas se llama subproceso, y a cada subproceso se le da cierta prioridad; desde la perspectiva de la CPU, bajo una sola CPU, en un momento determinado, la CPU solo procesará (ejecutará) Uno subproceso, o sólo un subproceso ocupa la CPU. La función clave del kernel RTOS es asignar tiempo (programación) para cada subproceso en el sistema de manera razonable para que pueda ejecutarse.

De hecho, de acuerdo con un RTOS específico, un hilo puede llamarse tarea (Tarea), o pueden usarse otros sustantivos. El significado puede ser ligeramente diferente, pero la esencia sigue siendo la misma, y ​​no hay necesidad de gastar demasiado energía en su semántica precisa, porque aprender RTOS La clave es dominar el método de diseño de subprocesos, comprender el proceso de programación, mejorar la solidez de la programación, comprender el principio impulsor subyacente, mejorar la estandarización del programa, la portabilidad y la reutilización, y mejorar la capacidad de desarrollo real de sistemas embebidos, etc. Para comprender y dominar realmente el uso de subprocesos para el desarrollo de software integrado basado en RTOS, es necesario comprender desde las perspectivas del estado, la estructura, la prioridad, la programación, la sincronización, etc. de los subprocesos, que se explicarán en los capítulos siguientes.

2. El significado básico de la programación

En un sistema de subprocesos múltiples, el kernel RTOS (Kernel) es responsable de administrar los subprocesos o asignar tiempo de CPU para cada subproceso y es responsable de la comunicación entre subprocesos.

La programación es decidir qué subproceso es su turno de ejecutar, y es la responsabilidad más importante del núcleo. A cada hilo se le da cierta prioridad de acuerdo a su importancia. Los diferentes algoritmos de programación tienen un gran impacto en el rendimiento de RTOS. El algoritmo de programación basado en prioridades es un algoritmo de programación de uso común para RTOS. Su idea central es dejar siempre que el subproceso con la prioridad más alta en el estado listo se ejecute primero. Sin embargo, cuando un subproceso de alta prioridad tiene el derecho de usar la CPU está determinado por el tipo de kernel utilizado.Existen dos tipos de kernels basados ​​en prioridad: no interrumpibles y interrumpibles.

Otros conceptos básicos de la clase kernel

Al programar en el escenario RTOS, el proceso de inicio del chip primero ejecuta un código de programa llamado kernel RTOS.La función de este código es: abrir el entorno operativo para los subprocesos de usuario y prepararse para la programación de subprocesos. Un RTOS generalmente consta de un kernel y una extensión. La función principal del kernel es la programación de subprocesos, y la función principal de la extensión es proporcionar una interfaz de programación de aplicaciones (API). Otros conceptos básicos de la clase kernel incluyen principalmente: marcas de tiempo, secciones críticas de código, kernels no interrumpibles y kernels interrumpibles, conceptos relacionados con el tiempo real e indicadores RTOS en tiempo real.

1. marca de tiempo

El tictac del reloj (ClockTick), a veces traducido directamente como tictac del reloj, es una interrupción periódica específica, que es generada por un temporizador para que el kernel pueda determinar si un subproceso de mayor prioridad ha entrado en el estado listo.

2. sección crítica del código

La sección crítica del código también se denomina sección crítica, que se refiere al código indivisible durante el procesamiento. Una vez que esta parte del código comienza a ejecutarse, no se permite ninguna interrupción. Para garantizar la ejecución del código de la sección crítica, la interrupción debe apagarse antes de ingresar a la sección crítica y la interrupción debe abrirse inmediatamente después de que se ejecute el código de la sección crítica.

3. Kernels no prioritarios frente a kernels prioritarios

El kernel no preventivo (Non-PreemptiveKernel) requiere que cada subproceso renuncie voluntariamente al derecho de usar la CPU. El algoritmo de programación no preventivo también se denomina subprocesamiento múltiple cooperativo. Cada subproceso coopera entre sí para compartir una CPU. Sin embargo, los eventos asíncronos todavía son manejados por el servicio de interrupción. El servicio de interrupción puede cambiar el subproceso de alta prioridad del estado suspendido al estado listo. Renuncie al derecho de usar la CPU, y el nuevo subproceso de alta prioridad puede obtener el derecho a usar la CPU.

Cuando el tiempo de respuesta del sistema es importante, se debe usar un kernel preventivo (PreemptiveKernel). En un kernel interrumpible, un subproceso en ejecución se puede interrumpir para permitir que otro subproceso con una prioridad más alta esté listo para ejecutarse. Si la subrutina de servicio de interrupción hace que el subproceso de alta prioridad entre en estado listo, cuando se completa la interrupción, el subproceso interrumpido se suspende y el subproceso de alta prioridad comienza a ejecutarse.

4. Conceptos relacionados en tiempo real e indicadores RTOS en tiempo real

Hard real-time (HardReal-Time) requiere que la operación se complete dentro del tiempo especificado, que se garantiza cuando se diseña el sistema operativo. Por lo general, los sistemas RTOS con programación prioritaria, determinista en el tiempo y preventiva se denominan hard real-time (HardReal-Time). sistemas en tiempo real. . El tiempo real suave (SoftReal-Time) no es tan estricto, siempre que la operación se complete lo más rápido posible de acuerdo con la prioridad del hilo.

Lo que persigue RTOS es la programación en tiempo real, el tiempo de respuesta determinista y la alta confiabilidad del sistema. Un RTOS generalmente se puede evaluar desde varios aspectos, como la programación de subprocesos, la sobrecarga de memoria, el tiempo de respuesta del sistema y el retraso de interrupción.

(1) Indicadores de tiempo para la programación de subprocesos

Las capacidades de subprocesos múltiples y en tiempo real de RTOS dependen en gran medida de su mecanismo de programación de subprocesos. En la mayoría de los sistemas comerciales en tiempo real, para permitir que el sistema operativo obtenga rápidamente el derecho a usar el sistema cuando hay una emergencia, para responder al evento, la mayoría de ellos proporciona la función de "programación preventiva de subprocesos", es decir, el sistema operativo tiene el derecho de finalizar activamente la ejecución de la aplicación (subproceso de la aplicación) y otorgar el derecho de ejecución al subproceso con la prioridad más alta.

Latencia de programación (SchedulingLatency): se refiere al tiempo entre el momento en que un subproceso de mayor prioridad está listo y el subproceso comienza a ejecutarse. En resumen, es el tiempo desde que está listo para comenzar a ejecutarse después de que se activa un subproceso.

Tiempo de cambio de subproceso (Context-SwitchingTime): cuando un subproceso sale por algún motivo, el RTOS guarda la información del sitio en ejecución, inserta la lista correspondiente y vuelve a seleccionar un nuevo subproceso de acuerdo con un determinado algoritmo de programación para ponerlo en funcionamiento. para el proceso se llama tiempo de cambio de hilo. Cuanto más corto sea el tiempo de cambio de hilo, mayor será el rendimiento del RTOS.

Tiempo de recuperación (RecoveryTime): se refiere al tiempo requerido para que el sistema responda para reanudar la ejecución del programa principal después de completar el hilo.

(2) sobrecarga mínima de memoria

En el proceso de diseño de RTOS, debido a las limitaciones de costos, la configuración de la memoria de los productos del sistema integrado generalmente no es grande, y no solo RTOS sino también los programas de usuario deben cargarse en el espacio de memoria limitado. Por lo tanto, la sobrecarga de memoria mínima es un indicador importante, que es una de las diferencias obvias entre el diseño de RTOS y el diseño de otro sistema operativo.

(3) Tiempo de respuesta del sistema

Tiempo de respuesta del sistema (System response time): se refiere al tiempo desde que el sistema envía una solicitud de procesamiento hasta que el sistema da una señal de respuesta, es decir, el intervalo de tiempo desde la generación de una solicitud de hilo hasta la finalización del hilo, que debe cumplir con ciertas limitaciones de tiempo. El control debe cumplir con ciertos requisitos de tiempo real, es decir, el tiempo de respuesta es menor que el tiempo crítico. El tiempo de respuesta del sistema consta de dos partes: tiempo de reacción y tiempo de procesamiento. El tiempo de reacción se refiere al tiempo en que se envía una interrupción externa a la CPU para comenzar a procesar, y el tiempo de procesamiento se refiere al tiempo que tarda la CPU en completar el procesamiento. La mejora del tiempo de respuesta del sistema puede comenzar con la reducción del tiempo de reacción y el tiempo de procesamiento. El tiempo de respuesta es el tiempo de conducción de las señales eléctricas, y para procesadores de diferentes velocidades, este tiempo no es muy diferente.

(4) Retardo de interrupción

Una interrupción es un mecanismo de hardware para notificar a la CPU que se ha producido un evento asíncrono. Una vez que la CPU reconoce una interrupción y guarda el contexto del subproceso, salta a la rutina de servicio de interrupción (ISR) para su ejecución. Después de procesar la interrupción, regresa al subproceso con la prioridad más alta en la lista lista para la ejecución. Cuando el RTOS se ejecuta en el estado central o ejecuta algunas llamadas al sistema, no ejecutará inmediatamente la rutina de servicio de interrupción debido a la llegada de la interrupción externa y solo responderá a la solicitud de interrupción externa cuando el RTOS regrese al estado de usuario. el tiempo máximo es el tiempo de inhabilitación de la interrupción.

Tiempo de latencia de interrupción (Interrupt latency): se refiere al tiempo que requiere el sistema para confirmar el inicio de la interrupción hasta que se ejecuta la primera instrucción de la rutina de servicio de interrupción y todo el proceso de procesamiento. Cuanto menor sea el tiempo de prohibición de interrupción, menor será el tiempo de retardo de interrupción y mayor será el rendimiento en tiempo real del sistema.

Otros conceptos básicos de la clase hilo

Aquí se resumen otros conceptos básicos de la clase de subprocesos: contexto de subprocesos y cambio de subprocesos, comunicación entre subprocesos, interbloqueo, prioridad de subprocesos, unidad de prioridad, inversión de prioridad, herencia de prioridad, recursos, recursos compartidos y exclusión mutua, etc.

1. Contexto de subprocesos y cambio de subprocesos

El contexto del hilo (Context), es decir, los registros en la CPU. Cuando el kernel de subprocesos múltiples decide ejecutar otro subproceso, guarda el contexto actual del subproceso en ejecución, que se almacena en el área de almacenamiento de estado actual del subproceso (Task'sContextStorageArea) en la memoria de acceso aleatorio (RandomAccessMemory, RAM), que es el propia pila de subprocesos entre. Una vez que se completa el trabajo de apilamiento, el estado actual del siguiente subproceso que se ejecutará se vuelve a cargar desde su pila de subprocesos a los registros de la CPU, y el siguiente subproceso comienza a ejecutarse.Este proceso se denomina cambio de subproceso o cambio de contexto.

2. comunicación entre subprocesos

La comunicación entre subprocesos se refiere al intercambio de información entre subprocesos, y su función es realizar la sincronización y la transmisión de datos. La sincronización se refiere a coordinar el orden de ejecución de diferentes subprocesos de acuerdo con la relación de cooperación entre los subprocesos. Los métodos de comunicación entre subprocesos incluyen principalmente eventos, colas de mensajes, semáforos y mutexes. Los conceptos de comunicación entre subprocesos y los siguientes conceptos de inversión de prioridad, herencia de prioridad, recursos, recursos compartidos y exclusión mutua se elaborarán en capítulos posteriores.

3. punto muerto

Un interbloqueo es cuando dos o más subprocesos esperan indefinidamente el uno al otro para liberar sus recursos. Hay cuatro condiciones necesarias para el interbloqueo, a saber, acceso mutuo exclusivo de recursos, no preferencia de recursos, solicitud de retención de recursos y espera circular de subprocesos. La forma de resolver el problema del interbloqueo es destruir cualquier condición necesaria para el interbloqueo, como estipular que todos los recursos solo se asignan cuando el subproceso se está ejecutando y no se pueden asignar otros estados arbitrarios, lo que destruye sus características de retención de solicitudes de recursos.

4. Prioridad de subproceso, controlador de prioridad, inversión de prioridad, herencia de prioridad

En un sistema multihilo, cada hilo tiene una prioridad (Prioridad).

Controlado por prioridad: en un sistema de subprocesos múltiples, el subproceso en ejecución es siempre el subproceso con la prioridad más alta. En un momento dado, la CPU siempre se asigna al subproceso de mayor prioridad.

Priority-Inversion: Cuando un hilo se bloquea esperando que un hilo con menor prioridad libere recursos, este fenómeno se llama inversión de prioridad, el cual es un problema al que se debe prestar atención al momento de programar. La tecnología de herencia de prioridad puede resolver el problema de inversión de prioridad, y la mayoría de los sistemas operativos comerciales en el mercado utilizan actualmente la tecnología de herencia de prioridad.

Prioridad-Herencia: Prioridad-Herencia es una técnica utilizada para resolver el problema de inversión de prioridad. Cuando se produce una inversión de prioridad, la prioridad de un subproceso de menor prioridad aumenta temporalmente para coincidir con la prioridad de un subproceso de mayor prioridad. Esto permite que los subprocesos de menor prioridad se ejecuten lo más rápido posible y libera los recursos que necesitan los subprocesos de mayor prioridad.

5. recursos, recursos compartidos y exclusión mutua

Recursos (Resources): Cualquier entidad ocupada por un hilo puede llamarse recurso. Un recurso puede ser un dispositivo de entrada/salida, como una impresora, un teclado y un monitor, o puede ser una variable, una estructura o una matriz.

Recursos compartidos (SharedResources): los recursos que pueden ser utilizados por más de un subproceso se denominan recursos compartidos. Para evitar que se destruyan los datos, cada subproceso debe monopolizar los recursos cuando se trata de recursos compartidos, es decir, la exclusión mutua.

Exclusión mutua (MutualExclusion): La exclusión mutua es un mecanismo de sincronización utilizado para controlar el acceso secuencial de datos compartidos por múltiples subprocesos. En aplicaciones de subprocesos múltiples, cuando dos o más subprocesos acceden a la misma área de datos al mismo tiempo, se producirán conflictos de acceso y la exclusión mutua puede permitirles acceder a datos compartidos en secuencia sin causar conflictos.

Supongo que te gusta

Origin blog.csdn.net/Kyland2020/article/details/130946643
Recomendado
Clasificación