Cosa significa "Windows non è un sistema operativo in tempo reale"?


19

Mi sono imbattuto in un'applicazione chiamata LatencyMon , che apparentemente esegue il monitoraggio della latenza.

Ho sempre capito che più un carico viene caricato sul processore, meno reattivo o più latente diventa il sistema. Tuttavia, nella seconda sezione della pagina LatencyMon, la prima frase dice "Windows non è un sistema operativo in tempo reale" (RTOS). Mi ha fatto pensare. Voglio dire, è diverso da qualsiasi altro sistema operativo come Linux, Unix o Mac OS X?

Esistono sistemi operativi "in tempo reale"? O è semplicemente uno schema di marketing per farti acquistare il loro prodotto?

MODIFICARE:

Inoltre, ci sono esempi di RTOS là fuori?


4
QNX è in tempo reale, ad esempio.
nuovo123456

Risposte:


21

Wikipedia in realtà ha una sorprendente ricchezza di informazioni qui.

Un sistema operativo in tempo reale (RTOS) è un sistema operativo (SO) destinato a soddisfare le richieste di applicazioni in tempo reale.

Una caratteristica chiave di un RTOS è il livello della sua coerenza per quanto riguarda il tempo necessario per accettare e completare l'attività di un'applicazione; la variabilità è jitter. Un sistema operativo in tempo reale difficile ha meno jitter rispetto a un sistema operativo in tempo reale morbido. L'obiettivo principale del progetto non è la produttività elevata, ma piuttosto la garanzia di una categoria di prestazioni soft o hard. Un RTOS che può generalmente o generalmente rispettare una scadenza è un sistema operativo in tempo reale morbido, ma se è in grado di rispettare una scadenza in modo deterministico è un sistema operativo in tempo reale difficile.

Un RTOS ha un algoritmo avanzato per la pianificazione. La flessibilità dell'utilità di pianificazione consente una più ampia orchestrazione del sistema per computer delle priorità di processo, ma un sistema operativo in tempo reale è più frequentemente dedicato a un ristretto insieme di applicazioni. I fattori chiave in un sistema operativo in tempo reale sono la latenza di interruzione minima e la latenza di commutazione thread minima; un sistema operativo in tempo reale è valutato più per la velocità o la prevedibilità con cui può rispondere che per la quantità di lavoro che può eseguire in un determinato periodo di tempo.

Questo è qualcosa che fanno davvero pochi sistemi operativi, perché per molti carichi di lavoro è semplicemente meno efficiente. Nessuno dei principali sistemi operativi di consumo è ora (o per quanto ne sappia lo sia mai stato) in tempo reale. Sfortunatamente, ciò significa che a volte le cose in un ambiente non in tempo reale devono sedersi in attesa di altre cose. Questo diventa un problema solo quando qualcosa non cede in un ragionevole lasso di tempo, in generale.

Attualmente i sistemi operativi in ​​tempo reale più noti, più diffusi sono:

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

Consulta l' elenco dei sistemi operativi in ​​tempo reale per un elenco completo.


6
I sistemi operativi in ​​tempo reale vengono normalmente utilizzati in ruoli molto dedicati come sistemi di controllo estremamente precisi in cui una decisione / calcolo / ecc. Devono essere completati in tempi molto precisi.
Lamar B

Ci sono esempi di RTOS? Aggiornamento della domanda a questo proposito.
Chad Harrison,


Cosa dice @ ta.speot.is: ce ne sono alcuni nell'articolo già collegato. Ne modificherò alcuni, però.
Shinrai,

Non ho fatto fino alla fine della pagina Wiki ... Mi dispiace che: /
Chad Harrison

19

I sistemi operativi in ​​tempo reale sono spesso utilizzati per i sistemi embedded, dove potrebbero essere responsabili di qualcosa come guida o monitoraggio del sistema. La cosa fondamentale da ricordare su un sistema in tempo reale (e ciò che lo differenzia da un sistema non in tempo reale) è che in un sistema in tempo reale, se una risposta è in ritardo, è sbagliato. Puoi facilmente vedere come funziona pensando di aggiungere una serie di figure in Excel (dove se l'operazione è ritardata, non c'è alcun impatto reale) rispetto all'applicazione di un freno in un'auto (dove un ritardo potrebbe essere catastrofico).


10

Fondamentalmente, un RTOS può garantire che può servire un IRQ (richiesta di interruzione) in un periodo di tempo specifico (generalmente basso). I sistemi operativi standard non hanno tale garanzia.

Nella maggior parte dei sistemi moderni, la maggior parte dei dispositivi può generare un IRQ. Ciò provoca l'arresto (ovvero l'interruzione di) della CPU da parte della CPU e l'esecuzione di un programma di servizio di interruzione. L'idea è che questo programma di servizio fa tutto ciò di cui il dispositivo ha bisogno, ovvero estrae i dati dal dispositivo e nella RAM, dice al dispositivo cosa fare dopo, ecc.

Su x86, poiché ha solo 1 linea IRQ sulla CPU, quando riceve un interrupt, ulteriori interrupt vengono automaticamente disabilitati (tranne NMI, RESET e SMI) fino a quando la CPU non riconosce la sorgente di interrupt e li riattiva nuovamente. Quindi i buoni driver di dispositivo con i386 / amd64 standard Windows eseguiranno un'elaborazione minima in questo stato, quanto basta in modo che sia possibile riattivare gli interrupt, quindi rimandare l'elaborazione completa dell'interruzione a un momento successivo (poiché il sistema può tecnicamente servire solo 1 interruzione per CPU core alla volta). Non ne sono sicuro ma credo che Linux faccia lo stesso. Tuttavia, non vi è alcuna garanzia concreta del tempo in cui l'interrupt verrà sottoposto a manutenzione.

Per la maggior parte dei dispositivi PC, come dischi, tastiere, schede NIC, se si verifica un leggero ritardo nella manutenzione del loro IRQ, non accadrà nulla di grave se non una perdita di prestazioni. Questo può essere più un problema per dispositivi come l'ingresso audio e video, in cui il dispositivo non esegue il buffer di nulla e il PC deve davvero tenere il passo con il flusso di dati in entrata.


Potresti spiegare cosa intendi con "x86 ha solo 1 linea IRQ"? L'ultima volta che ho avvolto in filo metallico un computer 80186 (certamente decenni fa), mi sembra di ricordare che il PIC 8259 ha 8 canali e che al momento il PC nominale avesse un secondo a cascata, per un totale di 15 canali, escluso il NMI?
Glenn Slayden il

È necessario il PIC proprio perché l'x86 ha solo una linea IRQ Ma se gli interrupt x86 sono disabilitati, il PIC può solo attendere fino a quando la CPU li riattiva e IIRC fa proprio questo. Le altre CPU IIRC come la 68000 avevano 3 pin di interruzione e si aspettavano un livello di priorità codificato 0-7 proprio sulla CPU stessa. Anche se ora che lo considero davvero, forse il 68000 disabilita tutti gli interrupt alla ricezione di qualsiasi IRQ - Non ho mai programmato il 68000.
LawrenceC

Ah sì, ora mi ricordo. E IIRC l'aspetto 'prioritario' del design del chip 8259 - consentendo la gestione nidificata di IRQ - avrebbe dovuto incoraggiare il sistema operativo a disabilitare gli interruzioni il meno possibile o per niente, ma le linee di interruzione del PC erano assegnate a casaccio, sconfiggendo che approccio? Ad ogni modo, sicuramente chiamare qualsiasi quantità sostanziale di codice sotto CLI ... STI non è mai stata l'intenzione.
Glenn Slayden,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.