Você está certo, a afirmação de que o Unix não é adequado para aplicativos em tempo real, porque um processo que executa no modo kernel pode não ser antecipado é
parcialmente verdadeiro, mas precisa de algum esclarecimento . Vamos quebrar o porquê:
Entendendo o problema *
Aplicações em tempo real: Os sistemas em tempo real requerem garantias de tempo estritas. Uma tarefa deve concluir dentro de um prazo específico, independentemente de outros processos em execução no sistema.
* Modo
kernel: Quando um processo é executado no modo kernel, ele tem acesso direto ao hardware e recursos do sistema. Isso é necessário para tarefas como lidar com interrupções ou gerenciamento de dispositivos de E/S.
*
Preempção: Preempção é a capacidade do sistema operacional de interromper um processo em execução e mudar para outro. Em um sistema em tempo real, a preempção é crucial para garantir que as tarefas de alta prioridade não sejam atrasadas por tarefas de menor prioridade.
Por que a declaração é parcialmente verdadeira A declaração se concentra em uma questão crítica nos sistemas tradicionais do tipo UNIX. O kernel, apesar de responsável pela programação, nem sempre é preventável. Isso significa que:
1. Atrasos do código do kernel: Se uma função do kernel, mesmo uma baixa prioridade, leva muito tempo para executar, pode bloquear outras tarefas, incluindo tarefas em tempo real de alta prioridade.
2.
PRAZOS PERDIDOS: Se uma tarefa em tempo real precisar executar, mas uma função do kernel está bloqueando, o prazo para essa tarefa pode ser perdido.
Por que é simplificado demais *
nem todos os sistemas Unix são os mesmos: Existem variações em como diferentes sistemas semelhantes a UNIX lidam com a preempção do kernel. Alguns kernels mais novos, como o Linux, introduziram técnicas para melhorar a preempção, tornando-as mais adequadas para cenários em tempo real.
*
Extensões em tempo real: Muitos sistemas semelhantes ao UNIX têm extensões em tempo real (como POSIX em tempo real) que abordam essa limitação. Essas extensões fornecem:
*
agendamento baseado em prioridade: As tarefas em tempo real podem receber prioridades mais altas do que os processos normais.
*
Timers e prazos: As tarefas em tempo real podem ser associadas a prazos e temporizadores, permitindo que o sistema aplique restrições de tempo.
* kernels preventivos: Algumas extensões em tempo real incluem grãos preventivos para garantir que as tarefas de alta prioridade não sejam atrasadas.
Conclusão Embora seja verdade que a falta de código de kernel preemptável em algumas implementações tradicionais do UNIX foi um obstáculo significativo para aplicativos em tempo real, não é uma declaração completa da situação. Os sistemas modernos do tipo UNIX, particularmente com extensões em tempo real, fizeram melhorias significativas na abordagem desse problema. No entanto, para aplicações com requisitos rigorosos em tempo real, é crucial escolher um sistema com um kernel preventivo e extensões em tempo real.