Comprender el problema
* Aplicaciones en tiempo real: Los sistemas en tiempo real requieren garantías de sincronización estrictas. Una tarea debe completarse dentro de una fecha límite específica, independientemente de otros procesos que se ejecuten en el sistema.
* Modo del núcleo: Cuando un proceso se ejecuta en modo kernel, tiene acceso directo al hardware y los recursos del sistema. Esto es necesario para tareas como manejar interrupciones o administrar dispositivos de E/S.
* Preención: La preferencia es la capacidad del sistema operativo para interrumpir un proceso de ejecución y cambiar a otro. En un sistema en tiempo real, la preferencia es crucial para garantizar que las tareas de alta prioridad no se retrasen por las tareas de menor prioridad.
Por qué la declaración es parcialmente verdadera
La declaración se centra en un tema crítico en los sistemas tradicionales de unix. El núcleo, aunque responsable de la programación, en sí no siempre es preventable. Esto significa que:
1. retrasos en el código del núcleo: Si una función del núcleo, incluso una de baja prioridad, lleva demasiado tiempo ejecutar, puede bloquear otras tareas, incluidas las tareas en tiempo real de alta prioridad.
2. Fallos perdidos: Si una tarea en tiempo real debe ejecutarse, pero una función del núcleo la está bloqueando, se podría perder la fecha límite para esa tarea.
Por qué se simplifica demasiado
* No todos los sistemas UNIX son los mismos: Hay variaciones en cómo los diferentes sistemas de tipo UNIX manejan la preferencia del núcleo. Algunos núcleos más nuevos, como Linux, han introducido técnicas para mejorar la preferencia, lo que los hace más adecuados para escenarios en tiempo real.
* Extensiones en tiempo real: Muchos sistemas similares a unix tienen extensiones en tiempo real (como Posix en tiempo real) que abordan esta limitación. Estas extensiones proporcionan:
* Programación basada en prioridad: A las tareas en tiempo real se les puede asignar prioridades más altas que los procesos normales.
* Tiempos y plazos: Las tareas en tiempo real pueden asociarse con plazos y temporizadores, lo que permite que el sistema haga cumplir las limitaciones de tiempo.
* kernels preventivos: Algunas extensiones en tiempo real incluyen núcleos preventivos para garantizar que las tareas de alta prioridad no se retrasen.
Conclusión
Si bien es cierto que la falta de código de núcleo preventable en algunas implementaciones tradicionales de UNIX fue un obstáculo significativo para las aplicaciones en tiempo real, no es una declaración completa de la situación. Los sistemas modernos similares a unix, particularmente con extensiones en tiempo real, han realizado mejoras significativas para abordar este problema. Sin embargo, para aplicaciones con requisitos estrictos en tiempo real, elegir un sistema con un núcleo preventivo y extensiones en tiempo real es crucial.