2012-01-10 12 views
9

Ho lavorato su VxWorks 5.5 molto tempo fa ed è stata la migliore esperienza di lavoro sul miglior sistema operativo in tempo reale del mondo. Da allora non ho mai avuto la possibilità di lavorarci di nuovo. Ma una domanda continua a saltarmi addosso, ciò che rende è così veloce e deterministico?Cosa rende VxWorks così deterministico e veloce?

Non sono riuscito a trovare molti riferimenti per questa domanda tramite Google.

Così, ho solo cercato di pensare ciò che rende un normale sistema operativo non-deterministico:

  1. di allocazione della memoria/de-allocazione: - Wiki dice RTOS utilizzo fisso blocchi di dimensioni, in modo che questi blocchi possono essere indicizzati direttamente ma ciò causerà la frammentazione interna e sono sicuro che questo non è affatto auspicabile nei sistemi mission critical in cui la memoria è già limitata.

  2. Paging/segmentazione: - Il suo tipo di legato al punto 1

  3. gestione degli interrupt: - Non sono sicuro di come VxWorks lo implementa, in quanto questo è qualcosa di VxWorks gestisce molto bene il passaggio

  4. Contesto: - credo in VxWorks 5.5 tutti i processi utilizzati per eseguire in kernel spazio di indirizzamento, quindi la commutazione di contesto abituato a coinvolgere solo salvare i valori del registro e niente di PCB (blocco di controllo di processo), ma ancora non sono sicuro al 100%

  5. processo algoritmi di schedulazione: - Se Windows implementa la pianificazione preventiva (priorità/round robin), allora la pianificazione della elaborazione sarà veloce come in VxWorks? Non lo penso. Quindi, in che modo VxWorks gestisce la pianificazione?

Si prega di correggere la mia comprensione ovunque richiesto.

+0

Qualsiasi acquirente per questo ?? –

risposta

11

Credo che il seguente spiegherebbe un sacco di differenza:

No Paging/Scambio

Un deterministico RTOS semplicemente non può pagine di memoria di swap su disco. Questo ucciderebbe il determinismo, dal momento che in qualsiasi momento potresti dover scambiare la memoria dentro o fuori. VxWorks richiede che l'applicazione entra completamente nella RAM

nessun processo

In VxWorks 5.5, ci sono attività, ma nessun processo come Windows o Linux. Le attività sono più simili ai thread e il contesto di commutazione è un'operazione relativamente economica. In Linux/Windows, il processo di commutazione è piuttosto costoso.

Si noti che in vxWorks 6.x, è stato introdotto un modello di processo che aumenta un sovraccarico, ma principalmente correlato alla transizione dalla modalità Utente alla modalità Supervisore. Il tempo di commutazione delle attività non è necessariamente influenzato direttamente dal nuovo modello.

priorità fissa

In VxWorks, le priorità delle attività sono impostate dallo sviluppatore e sono a livello di sistema. L'attività con la priorità più alta in un dato momento sarà quella in esecuzione. È quindi possibile progettare il sistema in modo che le attività con la scadenza più stretta vengano eseguite sempre prima degli altri.

In Linux/Windows, in generale, mentre si ha il controllo sulla priorità dei processi, lo scheduler alla fine consentirà l'esecuzione di processi con priorità inferiore anche se il processo con priorità più elevata è ancora attivo.

+0

Sono d'accordo con la maggior parte dei tuoi punti, ma poi come si cura degli accessi non validi alla memoria. Applica un costrutto che prima dell'avvio di un'attività, deve richiedere la quantità di memoria che utilizzerà? Bcoz è l'unico modo, VxWorks può impostare le aree di confine di un'attività. –

+2

I 5.5 non esiste "accesso alla memoria non valido" a meno che il sistema non acceda realmente a un indirizzo in cui non viene mappato nulla. Quindi viene chiamato un gestore di eccezioni. Le attività hanno accesso all'intera memoria. Anche altri compiti o persino strutture dati del kernel. 6.x Il modello di processo limita l'accesso alla memoria nello spazio del processo utilizzando la MMU. – Benoit

+1

La parte di scambio può essere di fatto il caso per RTOS "grande", ma non è affatto una necessità. Un RTOS deve semplicemente garantire le scadenze dei tuoi processi e fintanto che non viola questa regola, è in tempo reale. Se il processo critico deve essere eseguito entro 5 minuti e si può garantire che lo scambio avvenga al massimo 3 minuti e ci vuole 1 minuto per funzionare nel peggiore dei casi, si sta bene. – lambdapower

Problemi correlati