Sistemi Operativi in Tempo Reale: incidenti famosi E.Mumolo
Alcuni incidenti famosi in applicazioni spaziali dovuti a errori software Missione Pathfinder + Sojourner 6 mesi di viaggio 4 Luglio 1997 atterraggio su Marte 15 luglio 1997 il sistema si auto resetta per time-out Il robot cessa di funzionare 16 luglio 1997 ricerca delle cause 17 luglio 1997 viene identificato un evento di sovraccarico del Sistema Operativo che aveva una probabilità di verificarsi pari a 1/106 e che non era stato previsto
Missione Pathfinder Architettura del sistema
Missione Pathfinder Missione Pathfinder + Sojourner 6 mesi di viaggio 4 Luglio 1997 atterraggio su Marte 15 luglio 1997 il sistema si auto resetta per time-out Il robot cessa di funzionare Ogni reset provoca perdita di dati
Missione Pathfinder Caratteristiche del sistema Il SO realizza schedulazione pre-emptive dei thread le priorità vengono assegnate in base alla urgenza relativa dei thread Il BUS è un tipo di memoria comune usata per scambiare informazioni tra le differenti componenti del sistema Task: Alta priorità: gestione del bus BCT. Laccesso al bus viene sincronizzato con semafori binari (mutex) Media priorità: comunicazione radio SCT Bassa priorità: acquisizione di dati metereologici MT. Loperazione di pubblicazione dei dati avviene mediante acquisizione di un mutex, scrittura su bus e rilascio del mutex
Missione Pathfinder Problema di inversione di priorità Evento infrequente: interrupt che schedula il task a media priorità (comunicazioni) mentre il task ad alta priorità (gestione del bus) è bloccato su un mutex in attesa del bus (in attesa della acquisizione di dati meteo) Il task di comunicazione, a media priorità, ha maggiore priorità rispetto alla acquisizione dati blocco delle acquisizioni blocco del task di gestione del bus. Time-out del task di gestione del bus conclude che cè un grave errore del sistema reset
Missione Pathfinder Soluzione adottata: uso dellalgoritmo Priority inheritance Sistema operativo: luso o meno della priority inheritance viene introdotto mediante un flag: il S.O. Inviato su Marte aveva il flag settato ad off Il flag viene cambiato da terra
Missione Pathfinder Schedulazione senza conflitti Priorità
Missione Pathfinder Conflitto su una sezione critica PrioritàB
Missione Pathfinder Conflitto su una sezione critica Priorità B
Missione Pathfinder Protocollo Non Preemptive (NPP) Elimina le interruzioni nelle sezioni critiche Implementazione: quando un task entra in una sezione critica, la sua priorità viene aumentata al valore massimo PROBLEMA: i task ad alta priorità che non usano la sezione critica possono bloccarsi
Missione Pathfinder Schedulazione con NPP Priorità
Missione Pathfinder Priority Inheritance PrioritàB del task MT
Missione Mars Climate Orbiter MCO: per orbitare intorno a Marte e raccogliere informazioni metereologiche (11/12/98) 9 mesi di viaggio. Era stata programmata anche la possibilità di comunicare con MPL che doveva essere lanciato qualche mese più tardi Il 23 settembre 99 MCO interruppe le comunicazioni Probabilmente lorbita venne mancata per un errore nel calcolo dellangolo di ingresso. Langolo era calcolato da due grandezze fornite da due moduli software sviluppati da due gruppi diversi. Si scoprì che I due gruppi usavano diverse unità di misura: uno usava unità inglesi e laltro usava unità metriche. Il sistema aveva accumulato errori durante il viaggio e arrivò alla atmosfera con un angolo sbagliato. Quindi: causa dellincidente: inadeguata comunicazione tra diversi gruppi di sviluppo software e insufficiente test del sistema.
Lancio: 11 dicembre mesi di viaggio, 4 correzioni di rotta Arrivo il 23 settembre Manovre di immissione nellorbita Missione MCO
Missione MPL gennaio 99 tre sistemi spaziali: il Mars Polar Lander (MPL) e due sistemi Deep Space (DP2). MPL doveva atterrare su Marte, mentre DP2 doveva semplicemente raccogliere dati cadendo attraverso latmosfera. I tre sistemi dovevano sospendere le comunicazioni prima di entrare nella atmosfera e riprenderle dopo essere arrivati sul pianeta. La comunicazione non venne più ristabilita. Probabilmente la causa sono stati dei segnali elettromagnetici di disturbo acquisiti durante la discesa. disturbo interpretato erroneamente come atterraggio con conseguente spegnimento dei motori Non cera nessuna specifica di progetto per considerare disturbi di quel tipo, test successivi mostrarono che le cablature potevano acquisire disturbi di quel tipo Inoltre non erano stati predisposti test software per risolvere quel tipo di problema Quindi: causa dellincidente: progetto hardware/software inadeguato e insufficiente test del sistema.
Lancio: 3 gennaio mesi di viaggio, 4 correzioni di rotta Arrivo il 3 dicembre Apertura paracaduta Accensione razzi di frenatura Atterragio Comunicazone attraverso MCO Missione MPL
Missione Mars Rover Lancio: giugno 2003 Il robot Spirit usa una CPU R6000, 120 MB di Ram e 256 MB di disco a stato solido Il sistema operativo viene caricato completamente in RAM e il disco viene usato per memorizzare dati. Quando vengono creati abbastanza file, inizia la trasmissione verso la terra e eventualmente la ritrasmissione se alcuni dati sono mancanti. Quando la trasmissione termina i file vengono cancellati. 19 giorni dallatterraggio Spirit cercò di creare più file di quanti potessero essere memorizzati eccezione Spirit entra in un ciclo infinito di caricamento del sistema operativo ed eccezione. Spirit interrompe le comunicazioni Ipotizzando una mancanza di spazio sul disco viene inviato uno script che cancella circa 1000 file, risolvendo il problema