c + + programação em um sistema operacional Linux em tempo real

4

Existe alguma programação em C ++ de Realce do getcha (espaço do usuário e drivers do linux) no kernel do Linux RT em comparação com o kernel do std linux?

O patch do Linux RT aplica mudanças no agendador de kernel, semáforos, muteces, etc, e eu estou querendo saber se essas mudanças são transparentes para o desenvolvedor? ou seria necessário ter um cuidado especial ao escrever tal pedido?

    
por fduff 15.10.2012 / 22:41

2 respostas

5

Depende - se você realmente desenvolver drivers de espaço do kernel que usam mutexes e semáforos, deve dar uma revisão rápida aos patches. Como desenvolvedor que é sua responsabilidade, nenhuma resposta em um site resolverá esse problema.

Se você estiver desenvolvendo principalmente um software de espaço de usuário, essas mudanças não afetarão você, já que você apenas discute as interfaces do kernel, que devem ser estáveis.

Tenha em mente que os aplicativos de espaço do usuário geralmente não são recomendados para requisitos strongs em tempo real.

Devido ao fato de que a maioria das principais distribuições fornecem um kernel RT eu concluo: Não, nada de especial além do divertimento RT é requerido - geralmente tenha em mente as coisas: link

    
por 15.10.2012 / 23:13
0

Não tenho experiência em programar aplicações RT com C ++: usei Ada; também, Erlang pode se encaixar. (Há também RT Java, mas eu não tenho experiência disso.)

Em princípio, o uso de C ++ não deve ser um problema, considerando as ferramentas para IPC (como você mencionou) e para multiprogramação: fork , etc. O gerenciamento explícito de memória estará sujeito a erros até você dominá-lo. / p>

O RT Linux é uma extensão do Linux comum. (Isso é comum para muitos RTOSs - eles são extensões para sistemas operacionais não-RT, mas de tempo compartilhado, OSs.)

Para que as tarefas de RT coexistam com os processos não-RT, o RTOS toma certas medidas: por exemplo, ele bloqueia as tarefas na memória, ou atribui-lhes prioridades mais altas que os processos. O objetivo é garantir que nenhum processo não RT bloqueie uma tarefa de RT (possivelmente levando a que ela não cumpra seu prazo - e o objetivo dos RTSs é evitar que isso aconteça).

No caso do RT Linux, ele irá atribuir ao kernel Linux a menor prioridade.

O RT Linux está abaixo do kernel do Linux, logo acima do hardware. Mas o kernel do Linux ficará indiferente a isso: ele perceberá o hardware e o RT Linux como um (isto é, como hardware). No entanto, todas as interrupções de hardware serão interceptadas pelo kernel do RT Linux, e algumas (aquelas relacionadas a tarefas de RT) serão tratadas pelo RTOS (o restante será passado para o kernel comum do Linux).

O RT Linux usa algoritmos de escalonamento RT que garantem um comportamento "previsível" (na linguagem RT), ou seja, que todas as tarefas cumprem seus prazos. Isso difere do Linux, que não pode fazer tais garantias. Além disso, o RT Linux não suporta a memória virtual, já que isso (alternando e alternando) levaria a interruptores de contexto muito mais longos (sem limites) e, portanto, tempos de atraso imprevisíveis. (Na verdade, todas as tarefas do RT Linux têm acesso total ao hardware.)

    
por 15.10.2012 / 23:28