O que significa "Windows não é um sistema operacional em tempo real"?


19

Me deparei com um aplicativo chamado LatencyMon , que aparentemente faz monitoramento de latência.

Sempre entendi que quanto mais carga você coloca no processador, menos responsivo ou mais latente, o sistema se torna. No entanto, na segunda seção da página LatencyMon, a primeira frase diz: "O Windows não é um sistema operacional em tempo real" (RTOS). Isso me fez pensar. Quero dizer, isso é diferente de qualquer outro sistema operacional como Linux, Unix ou Mac OS X?

Existem sistemas operacionais "em tempo real"? Ou é apenas um esquema de marketing para você comprar o produto deles?

EDITAR:

Além disso, existem exemplos de RTOS por aí?


4
O QNX é em tempo real, por exemplo.
313126

Respostas:


21

A Wikipedia, na verdade, tem uma riqueza surpreendente de informações aqui.

Um sistema operacional em tempo real (RTOS) é um sistema operacional (SO) destinado a atender solicitações de aplicativos em tempo real.

Uma característica fundamental de um RTOS é o nível de consistência referente à quantidade de tempo que leva para aceitar e concluir a tarefa de um aplicativo; a variabilidade é instável. Um sistema operacional rígido em tempo real tem menos instabilidade que um sistema operacional flexível em tempo real. O principal objetivo do projeto não é o alto rendimento, mas a garantia de uma categoria de desempenho suave ou difícil. Um RTOS que geralmente pode ou geralmente cumpre um prazo é um sistema operacional leve em tempo real, mas se ele pode cumprir um prazo deterministicamente, é um sistema operacional rígido em tempo real.

Um RTOS possui um algoritmo avançado para agendamento. A flexibilidade do agendador permite uma orquestração mais ampla do sistema de computador das prioridades do processo, mas um sistema operacional em tempo real é mais frequentemente dedicado a um conjunto restrito de aplicativos. Os principais fatores em um sistema operacional em tempo real são a latência mínima de interrupção e a latência mínima de troca de encadeamento; um sistema operacional em tempo real é mais valorizado pela rapidez ou previsibilidade de resposta do que pela quantidade de trabalho que pode realizar em um determinado período de tempo.

Isso é algo que poucos sistemas operacionais realmente fazem, porque para muitas cargas de trabalho é simplesmente menos eficiente. Nenhum dos principais sistemas operacionais para consumidores está agora (ou que eu saiba) em tempo real. Infelizmente, isso significa que, às vezes, as coisas em um ambiente não em tempo real precisam ficar esperando por outras coisas. Isso só se torna um problema quando algo não está cedendo em um período de tempo razoável, geralmente.

Atualmente, os sistemas operacionais mais conhecidos, mais amplamente implantados e em tempo real são:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Veja a lista de sistemas operacionais em tempo real para obter uma lista abrangente.


6
Os SOs em tempo real são normalmente usados ​​em funções muito dedicadas, como sistemas de controle extremamente precisos, nos quais uma decisão / cálculo / etc deve ser concluída em um prazo muito preciso.
Lamar B

Existem exemplos de RTOS? Atualizando a pergunta para esse respeito.
Chad Harrison


O que @ ta.speot.is disse - há alguns no artigo já vinculados. Vou editar alguns, no entanto.
Shinrai 30/03/12

Eu não cheguei ao final da página da Wiki ... Desculpe por isso: /
Chad Harrison

19

Os sistemas operacionais em tempo real são frequentemente usados ​​para sistemas embarcados, onde podem ser responsáveis ​​por algo como orientação ou monitoramento do sistema. A principal coisa a lembrar sobre um sistema em tempo real (e o que o diferencia de um sistema não em tempo real) é que, em um sistema em tempo real, se uma resposta está atrasada, está errado. Você pode ver facilmente como isso funciona pensando em somar uma série de números no Excel (onde se a operação atrasar, não houver impacto real) versus aplicar um freio em um carro (onde um atraso pode ser catastrófico).


10

Basicamente, um RTOS pode garantir que pode atender a um IRQ (solicitação de interrupção) em um período de tempo específico (geralmente baixo). Os sistemas operacionais padrão não têm essa garantia.

Na maioria dos sistemas modernos, a maioria dos dispositivos pode gerar um IRQ. Isso faz com que a CPU pare (ou seja, seja interrompida) o que está fazendo e execute um programa de serviço de interrupção. A idéia é que este programa de serviço faça o que o dispositivo precisar, ou seja, retire os dados do dispositivo e entre na RAM, diga ao dispositivo o que fazer em seguida, etc.

No x86, como ele possui apenas 1 linha de IRQ na CPU, quando recebe uma interrupção, outras interrupções são automaticamente desabilitadas (exceto NMI, RESET e SMI) até que a CPU reconheça a fonte de interrupção e as reative. Portanto, bons drivers de dispositivo no Windows i386 / amd64 padrão farão um processamento mínimo nesse estado, apenas o suficiente para reativar interrupções e adiar o processamento completo da interrupção até mais tarde (porque o sistema tecnicamente pode atender apenas 1 interrupção por CPU núcleo de cada vez). Não tenho certeza, mas acredito que o Linux faz o mesmo. No entanto, não há garantia garantida do tempo em que a interrupção será atendida.

Para a maioria dos dispositivos de PC, como discos, teclados, placas de rede, se houver um pequeno atraso na manutenção do IRQ, nada de ruim acontecerá além de uma perda de desempenho. Isso pode ser mais um problema para dispositivos como entrada de áudio e vídeo, onde o dispositivo não armazena nada em buffer e o PC realmente precisa acompanhar o fluxo de dados recebido.


Você poderia explicar o que você quer dizer com "x86 possui apenas 1 linha de IRQ"? Na última vez que envolvi um computador 80186 (reconhecidamente décadas atrás), lembro-me de que o 8259 PIC possui 8 canais, e o PC nominal da época tinha um segundo em cascata, para um total de 15 canais, sem incluir o NMI?
perfil completo de Glenn Slayden

Você precisa do PIC precisamente porque o x86 possui apenas uma linha de IRQ. Se as interrupções do x86 estiverem desativadas, o PIC poderá esperar apenas até que a CPU os reative, e o IIRC faz exatamente isso. Outras CPUs IIRC, como a 68000, tinham 3 pinos de interrupção e esperavam um nível de prioridade codificado de 0 a 7 na própria CPU. Embora agora que eu realmente considerá-lo, talvez os 68000 desactiva todas as interrupções ao receber qualquer IRQ bem - eu nunca programou a 68000.
LawrenceC

Ah sim, agora eu lembro. E o IIRC, o aspecto "prioritário" do design do chip 8259 - ao permitir o manuseio aninhado de IRQ - deveria incentivar o sistema operacional a desativar as interrupções o mínimo possível ou não, mas as linhas de interrupção do PC foram atribuídas ao acaso, derrotando isso. aproximação? De qualquer maneira, certamente chamar qualquer quantidade substancial de código sob o CLI ... STI nunca foi a intenção.
perfil completo de Glenn Slayden
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.