Upload
sebastiano-guidi
View
221
Download
1
Embed Size (px)
Citation preview
Sistemi Operativi in Tempo Reale: incidenti famosi
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 - 1997
Architettura del sistema
Missione Pathfinder - 1997Missione Pathfinder + Sojourner6 mesi di viaggio4 Luglio 1997 atterraggio su Marte15 luglio 1997 il sistema si auto resetta per time-outIl robot cessa di funzionareOgni reset provoca perdita di dati
Missione Pathfinder - 1997
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. L’accesso al bus viene sincronizzato con semafori binari (mutex)
Media priorità: comunicazione radio SCT Bassa priorità: acquisizione di dati metereologici MT. L’operazione di
pubblicazione dei dati avviene mediante acquisizione di un mutex, scrittura su bus e rilascio del mutex
Missione Pathfinder - 1997
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 - 1997
Soluzione adottata: uso dell’algoritmo Priority inheritance Sistema operativo: l’uso 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 - 1997
Schedulazione senza conflitti
Priorità
Missione Pathfinder - 1997
Conflitto su una sezione critica
Priorità B
Missione Pathfinder - 1997
Conflitto su una sezione critica
Priorità B
Missione Pathfinder - 1997
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 - 1997
Schedulazione con NPP
Priorità
Missione Pathfinder - 1997
Priority Inheritance
Priorità B
Priorità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 l’orbita venne mancata per un errore nel calcolo
dell’angolo di ingresso. L’angolo 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 l’altro usava unità metriche.
Il sistema aveva accumulato errori durante il viaggio e arrivò alla atmosfera con un angolo sbagliato.
Quindi: causa dell’incidente: inadeguata comunicazione tra diversi gruppi di sviluppo software e insufficiente test del sistema.
Lancio: 11 dicembre 1998
11 mesi di viaggio, 4 correzioni di rotta
Arrivo il 23 settembreManovre di immissione
nell’orbita
Missione MCO - 1998
Missione MPL - 1999 3 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 l’atmosfera. 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 c’era 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 dell’incidente: progetto hardware/software inadeguato e insufficiente test del sistema.
Lancio: 3 gennaio 1999
11 mesi di viaggio, 4 correzioni di rotta
Arrivo il 3 dicembreApertura paracaduta
Accensione razzi di frenatura
AtterragioComunicazone attraverso MCO
Missione MPL - 1999
Missione Mars Rover -2004
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 dall’atterraggio 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