Noticias

Linux de baja latencia para sistemas embebidos industriales – Parte I

¡Bienvenido a esta mini serie de blogs sobre el kernel de Linux de baja latencia para sistemas integrados industriales!

El parche en tiempo real, que es todavía no completamente aguas arribaha hecho que muchos desarrolladores se pregunten acerca de las alternativas estables para sus proyectos que adoptan un Linux embebido sistema operativo (SO) con requisitos de latencia en el rango de milisegundos. El kernel Ubuntu Linux de baja latencia de Canónico es menos costoso de mantener que las alternativas en tiempo real. PREEMPT_RT es un conjunto de parches intrusivo que puede no ser compatible con todos los controladores requeridos y puede requerir depuración/reelaboración, mientras que la baja latencia es un tipo de configuración de la línea principal.

El kernel de Ubuntu de baja latencia tiene la preferencia máxima actualmente disponible en la línea principal (ADELANTARSE A), junto con cuatro veces la granularidad del temporizador del núcleo genérico de Ubuntu (HZ_1000 para baja latencia vs HZ_250 para genéricos).

Si esta oración es muy clara para usted y si está familiarizado con los conceptos, es posible que desee pasar a los dos blogs restantes de esta serie de blogs de tres partes. La Parte I de la serie es para aquellos que están comenzando su viaje de aprendizaje. Aquí, proporcionaremos una introducción básica a los procesos prioritarios en sistemas multiusuario, y la segregación de memoria en el kernel y el espacio del usuario. Sobre la base de este conocimiento, abordaremos la prioridad y la frecuencia de la interrupción del temporizador en la Parte II.

Finalmente, la Parte III de esta serie de blogs de tres partes reunirá todo y profundizará en las consideraciones detrás de la adopción de Ubuntu de baja latencia para sus aplicaciones integradas.

LEER  Doctor Compasivo | Ubuntu

Tenemos mucho que cubrir, así que comencemos.

Sistemas embebidos industriales

Mientras se ejecutan, los programas de un sistema integrado industrial compiten por recursos como el Unidad Central de Procesamiento (CPU).Mientras que algunos sistemas integrados industriales comprenden CPU y grandes huellas de memoria, muchos tienen recursos limitados y tienen bajo consumo de energía. CPUDe ello se deduce tener una protección aplicada por hardware de los recursos del sistema (UPCmemoria, E/S) y es particularmente relevante para aplicaciones industriales integradas de Linux.

Pero no nos adelantemos y volvamos a lo básico.

El kernel de Linux adopta consideraciones de diseño y arquitectura de la familia de kernels de Unix. Aquí, no nos preocupamos por las partes internas de Unix, pero debemos mencionar algunas de sus características para una comprensión adecuada del kernel de Ubuntu de baja latencia.

Unix es un sistema multiusuario con procesos prioritarios que imponen la protección de hardware de los recursos del sistema. Como tal, varios procesos, o instancias de un programa en ejecución, pueden ocurrir simultáneamente y competir por esos recursos, el UPC siendo uno de ellos.

Los procesos de un sistema multiusuario deben ser prioritarios en el sentido de que el sistema operativo realiza un seguimiento de cuánto tiempo cada uno de ellos mantiene el UPC y periódicamente activa el planificador. Por otro lado, sólo un proceso utiliza el UPC en sistemas monoprocesador, con solo un flujo de ejecución progresando a la vez.Los programas en los núcleos de Unix se ejecutan en dos estados: el Modo de usuario y el Modo de núcleo.

Espacio del kernel vs espacio del usuario

Como la memoria del sistema en Linux se segrega en el espacio del núcleo y el espacio del usuario, sigue el UPC de un sistema operativo Linux integrado puede ejecutarse en modo de usuario o en modo kernel. UPC no puede acceder directamente a las extensiones del kernel ni a las estructuras de datos cuando el software de la aplicación se ejecuta en el espacio del usuario (o en el espacio del usuario) debido a los dominios de protección jerárquica (también conocidos como anillos).

El espacio del kernel con acceso protegido es el área de memoria reservada para ejecutar el núcleo del sistema operativo (Anillo 0 en la arquitectura x86), mientras que el espacio del usuario es la memoria del sistema, donde se ejecutan los procesos del usuario (Anillo 3 en la jerga de anillos de protección Linux x86).

Un programa generalmente se ejecuta en el modo de usuario en el espacio del usuario y activa una rutina del kernel solo cuando solicita uno de sus servicios. Una vez que el kernel de Linux ha atendido la solicitud, reanuda la ejecución en el espacio de direcciones del usuario. Los procesos cambian al modo kernel cuando, por ejemplo, , emitiendo llamadas al sistema o debido a que los dispositivos invocan una señal de interrupción.

En la época de Linux 1.x, cuando una instancia de un programa emitía una llamada al sistema que requería cambiar al espacio de direcciones del kernel, no se podía programar ninguna otra tarea para ejecutarse hasta que el kernel atendiese la solicitud original. Porque Linux introdujo la preferencia del kernel solo con la versión 2.5.4.

La prioridad juega un papel central en el equilibrio entre latencia y rendimiento.Cuando los proveedores consideran adoptar un tiempo real sistema operativo han evaluado, la latencia es más importante que el rendimiento.Por otro lado, el kernel Ubuntu Linux de baja latencia permite una solución bien equilibrada que reduce los gastos generales y mantiene la capacidad de respuesta.

Al enviar un kernel apropiable, Linux permitió que los procesos de mayor prioridad forzaran la interrupción de los de menor prioridad que ya se estaban ejecutando en el espacio del kernel, a pesar de que sus solicitudes aún no habían sido atendidas.

¿Cuáles son los modelos de preferencia disponibles en el kernel de Linux? ¿Y qué opción de configuración adopta el kernel de Ubuntu de baja latencia? ¡Sumérjase directamente en la Parte II de esta miniserie para averiguarlo!

Conclusión

El kernel de Ubuntu Linux de baja latencia atiende de manera eficiente la mayoría de las cargas de trabajo de baja latencia y baja fluctuación del mundo real, logradas a través de la preferencia máxima disponible en la línea principal junto con una tasa del controlador de interrupción del temporizador más alta que en un kernel genérico.

El significado de estos conceptos se entenderá mejor en la siguiente parte de esta serie de blogs de tres partes.En esta parte, buscamos una descripción general introductoria rápida sobre los procesos de un sistema multiusuario y la segregación de memoria en kernel y espacio de usuario.

La Parte II de la serie abordará la preferencia en Linux y la frecuencia de interrupción del temporizador del kernel de Ubuntu de baja latencia.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba