Quali sono i vantaggi della programmazione su un sistema operativo rispetto al dirigente bare metal?

3

Supponiamo che ti venga presentata un'applicazione di sistema integrata da programmare, in C, in un ambiente multi-core (pensa a Cavium o Tilera) e devi scegliere tra due ambienti:

Codifica l'applicazione sotto Linux in modalità SMP o codifica l'applicazione sotto un sottile esecutivo bare metal (qualcosa come un RTOS molto minimale), magari con un singolo core che esegue UP Linux che può servire alle attività di controllo.

Ai fini di questa domanda, supponiamo che entrambi gli ambienti forniscano lo stesso livello di garanzie sulle prestazioni in tutti gli aspetti misurabili delle prestazioni del tempo di esecuzione, incluso il numero di azioni significative al secondo, jitter, latenza, considerazioni in tempo reale. (e sì, mi rendo conto che non è affatto un'assunzione banale, nuda con me).

Come giustificherebbe andare con una soluzione basata su SMP Linux piuttosto che una soluzione esecutiva thin metal nuda?

La domanda potrebbe sembrare sciocca. Sicuramente mi sembra ovvio, ma devo convincere qualcuno che non pensa la stessa cosa. Potresti aiutare a stilare una lista di argomenti a favore della scelta di un vero SO compatibile con SMP (Linux) rispetto a un dirigente bare metal assumendo che le garanzie di performance NON siano un problema?

Grazie mille

    
posta gby 26.08.2012 - 12:31
fonte

2 risposte

6

Alcuni vantaggi iniziali includono:

  • Sicurezza del codice perché il sistema operativo può imporre la protezione della memoria ed eseguire alcune attività in modalità supervisore e altre in modalità utente. Alcuni anni fa, quando ho avuto una lezione per un RTOS molto popolare, sono rimasto scioccato nel vedere che utilizzava uno spazio di memoria piatto e condiviso. Non sono sicuro se questo è comune, ma sembra un grosso salto all'indietro.
  • Disponibilità di un ampio supporto per molte periferiche tramite i driver.
  • Se un dispositivo non è disponibile, un driver può implementare solo le funzionalità necessarie per adattarsi a uno stack corrispondente, piuttosto che tutto ciò che è necessario avere il dispositivo. In genere almeno un dispositivo simile è stato scritto e può essere utilizzato come esempio.
  • Potrebbe esserci il supporto del compilatore o del livello di libreria per il supporto thread-safe per Linux. Se hai un dirigente, potresti non averlo e potresti doverlo fornire tu stesso. Se l'esecutivo ha una base di utenti attiva, potrebbe esserci una combinazione di librerie disponibili per l'acquisto o tramite open source, ma la qualità potrebbe dipendere dall'ampio e profondo supporto fornito dalla comunità. Scegli la tua comunità con cura.
  • Se inizi senza il bagaglio che viene fornito con un sistema operativo reale, per quanto tempo non puoi andare avanti senza quelle funzioni extra? Chi scrive, li integra e li mantiene?

Spero che questo aiuti.

    
risposta data 26.08.2012 - 13:32
fonte
3
  1. Portabilità
  2. Supporto per la filettatura
  3. Ci saranno meno errori se riutilizzi il codice del sistema operativo maturo piuttosto che se sostituisci parti (ad es. driver di dispositivo) del sistema operativo con il tuo codice.
  4. Molto, molto più facile da ottenere / creare le librerie C.
  5. Molto più facile trovare le risposte ai problemi se usi un sistema operativo popolare come Linux.

Detto questo, se fossi il ragazzo che stavi cercando di convincere, non sarei impressionato se mi dicessi che potresti ottenere la stessa identica performance che puoi ottenere con il codice bare metal. Non ha senso.

Potresti, d'altra parte, convincermi che le differenze sarebbero abbastanza piccole da non avere importanza per la particolare applicazione, o anche che le differenze sarebbero importanti, ma i vantaggi del sistema operativo sono abbastanza significativi che sarebbe ancora valga la pena. Riconoscere che ci saranno differenze, però. Se non lo fai, perché dovrebbe fidarsi della tua analisi?

    
risposta data 25.09.2012 - 19:54
fonte

Leggi altre domande sui tag