Per definire "soft real-time", è più facile confrontarlo con "hard real-time". Di seguito vedremo che il termine "tempo reale dell'azienda" costituisce un malinteso riguardo al "tempo reale morbido".
Parlando in modo casuale, la maggior parte delle persone ha implicitamente un modello mentale informale che considera le informazioni o un evento come "in tempo reale"
• se, o nella misura in cui, si manifesta loro con un ritardo (latenza) che può essere correlato alla sua valuta percepita
• cioè, in un lasso di tempo in cui l'informazione o l'evento ha un valore accettabilmente soddisfacente per loro.
Esistono numerose e differenti definizioni ad hoc di "hard real-time", ma in quel modello mentale, hard real-time è rappresentato dal termine "if". In particolare, supponendo che le azioni in tempo reale (come le attività) abbiano scadenze di completamento, il valore accettabilmente soddisfacente dell'evento che tutte le attività completano è limitato al caso speciale in cui tutte le attività rispettano le loro scadenze.
I sistemi hard real-time fanno l'ipotesi molto forte che tutto ciò che riguarda l'applicazione, il sistema e l'ambiente sia statico e noto a priori, ad esempio quali attività, che sono periodiche, i loro tempi di arrivo, i loro periodi, le loro scadenze, che hanno vinto non ci sono conflitti di risorse e, nel complesso, l'evoluzione temporale del sistema. In un sistema di controllo del volo di un aeromobile o in un sistema di frenatura automobilistica e in molti altri casi, tali presupposti possono essere generalmente soddisfatti in modo da rispettare tutte le scadenze.
Questo modello mentale è deliberatamente e molto utilmente abbastanza generale da comprendere sia hard che soft in tempo reale - soft è adattato dalla frase "nella misura in cui". Ad esempio, si supponga che l'evento di completamento dell'attività abbia un valore non ottimale ma accettabile if
- non più del 10% delle attività non rispettano le scadenze
- oppure nessuna attività è in ritardo di oltre il 20%
- o il ritardo medio di tutte le attività non è superiore al 15%
- o il ritardo massimo tra tutte le attività è inferiore al 10%
Questi sono tutti esempi comuni di casi soft in tempo reale in moltissime applicazioni.
Considera l'applicazione single-task di andare a prendere tuo figlio dopo la scuola. Questo probabilmente non ha una scadenza effettiva, invece c'è un valore per te e tuo figlio in base al momento in cui si verifica l'evento. Troppo presto spreca risorse (come il tuo tempo) e troppo tardi ha un valore negativo perché tuo figlio potrebbe essere lasciato solo e potenzialmente in pericolo (o almeno disturbato).
A differenza del caso speciale hard real-time statico, il soft real-time fa solo le ipotesi specifiche dell'applicazione minime necessarie sulle attività e sul sistema e sono previste incertezze. Per andare a prendere tuo figlio, devi andare a scuola in auto e il tempo per farlo è dinamico a seconda del tempo, delle condizioni del traffico, ecc. Potresti essere tentato di rifornire eccessivamente il tuo sistema tempo di guida nel caso peggiore) ma ancora una volta questo è sprecare risorse (il tuo tempo e occupare il veicolo di famiglia, forse negandone l'uso da parte di altri membri della famiglia).
Questo esempio potrebbe non sembrare costoso in termini di risorse sprecate, ma considera altri esempi. Tutti i sistemi di combattimento militari sono soft in tempo reale. Ad esempio, considera di eseguire un attacco aereo su un veicolo terrestre ostile usando un missile guidato con aggiornamenti mentre il bersaglio manovra. La massima soddisfazione per il completamento delle attività di aggiornamento del corso si ottiene con un colpo distruttivo diretto sul bersaglio. Ma un tentativo di fornire risorse eccessive per accertarsi di questo risultato è solitamente troppo costoso e può anche essere impossibile. In questo caso, potresti essere meno ma sufficientemente soddisfatto se il missile colpisce abbastanza vicino al bersaglio da disabilitarlo.
Ovviamente gli scenari di combattimento hanno molte possibili incertezze dinamiche che devono essere soddisfatte dalla gestione delle risorse. I sistemi soft real-time sono anche molto comuni in molti sistemi civili, come l'automazione industriale, sebbene ovviamente quelli militari siano i più pericolosi e urgenti in cui ottenere un valore accettabilmente soddisfacente.
La chiave di volta dei sistemi in tempo reale è la "prevedibilità". Il caso difficile in tempo reale è interessato solo a un caso speciale di prevedibilità, ovvero che tutti i compiti rispettino le loro scadenze e che l'evento raggiunga il massimo valore possibile. Quel caso speciale è denominato "deterministico".
Esiste uno spettro di prevedibilità. Il deterministico (determinismo) è un punto finale (massima prevedibilità) nello spettro di prevedibilità; l'altro punto finale è la minima prevedibilità (massimo non determinismo). La metrica e gli endpoint dello spettro devono essere interpretati in termini di un modello di prevedibilità scelto; tutto ciò che si trova tra questi due punti finali è gradi di imprevedibilità (= gradi di non determinismo).
La maggior parte dei sistemi in tempo reale (ovvero quelli soft) hanno una prevedibilità non deterministica, ad esempio, dei tempi di completamento delle attività e quindi dei valori ottenuti da quegli eventi.
In generale (in teoria), la prevedibilità, e quindi un valore accettabilmente soddisfacente, può essere resa il più vicino possibile al punto finale deterministico, ma a un prezzo che può essere fisicamente impossibile o eccessivamente costoso (come in combattimento o forse anche in andare a prendere tuo figlio a scuola).
Il soft real-time richiede una scelta specifica dell'applicazione di un modello di probabilità (non il modello frequentista comune) e quindi un modello di prevedibilità per il ragionamento sulle latenze degli eventi e sui valori risultanti.
Facendo riferimento all'elenco di eventi sopra riportato che forniscono un valore accettabile, ora possiamo aggiungere casi non deterministici, come
- la probabilità che nessuna attività manchi la sua scadenza di oltre il 5% è maggiore di 0,87. (Notare il numero di criteri di programmazione qui espressi.)
In un'applicazione di difesa missilistica, dato che in combattimento l'offesa ha sempre il vantaggio sulla difesa, quale di questi due scenari di elaborazione in tempo reale preferiresti:
poiché la distruzione perfetta di tutti i missili ostili è molto improbabile o impossibile, assegna le tue risorse difensive per massimizzare la probabilità che molti dei missili ostili più minacciosi (ad esempio, in base ai loro obiettivi) vengano intercettati con successo (l'intercettazione ravvicinata conta perché può spostare il missile ostile fuori rotta);
lamentarsi del fatto che questo non è un problema di elaborazione in tempo reale perché è dinamico anziché statico e i concetti e le tecniche tradizionali in tempo reale non si applicano e suona più difficile dello statico difficile in tempo reale, quindi non ti interessa .
Nonostante le varie incomprensioni sul soft real-time nella comunità dei real-time computing, il soft real-time è molto generico e potente, sebbene potenzialmente complesso rispetto all'hard real-time. I sistemi soft real-time come riassunti qui hanno una lunga storia di utilizzo di successo al di fuori della comunità informatica in tempo reale .
Per rispondere direttamente alla domanda OP:
Un sistema hard real-time può fornire garanzie deterministiche - più comunemente che tutte le attività rispetteranno le loro scadenze, il tempo di risposta all'interruzione o alla chiamata di sistema sarà sempre inferiore a x, ecc. - SE E SOLO SE vengono fatte ipotesi molto forti e corrette che tutto ciò che conta è statico e noto a priori (in generale, tali garanzie per sistemi hard real-time sono un problema di ricerca aperta tranne che per casi piuttosto semplici)
Un sistema soft real-time non fornisce garanzie deterministiche, è inteso a fornire la migliore tempestività probabilistica analiticamente specificata e compiuta e la prevedibilità della tempestività che siano fattibili nelle attuali circostanze dinamiche, secondo criteri specifici dell'applicazione.
Ovviamente hard real-time è un semplice caso speciale di soft real-time. Ovviamente le assicurazioni analitiche non deterministiche di soft real-time possono essere molto complesse da fornire, ma sono obbligatorie nei casi in tempo reale più comuni (inclusi quelli critici per la sicurezza più pericolosi come il combattimento) poiché la maggior parte dei casi in tempo reale non sono dinamici statico.
"Firm real-time" è un caso speciale mal definito di "soft real-time". Non è necessario questo termine se il termine "soft real-time" è compreso e utilizzato correttamente.
Ho una discussione più dettagliata e molto più precisa su real-time, hard real-time, soft real-time, prevedibilità, determinismo e argomenti correlati sul mio sito web real-time.org.