La mia domanda è piuttosto ampia, lo so, ma mi sono interrogato su questo a lungo.Un dispositivo USB difettoso potrebbe causare un crash di un kernel Linux privo di errori?
Un po 'di background. Lavoro in un laboratorio di fisica dove tutti i computer di laboratorio eseguono Debian (mix di vecchia versione e Lenny) o più recentemente Ubuntu 10.4 LTS. Abbiamo scritto un sacco di software personalizzati per interfacciarsi con l'hardware di esperimento e altri computer.
Abbiamo molte schede FPGA che controllano varie parti dell'esperimento, queste sono collegate tramite USB a diversi computer. Dopo aver aggiornato un computer che controlla un esperimento, abbiamo iniziato a vedere arresti anomali/blocchi del computer che eseguivano tutti i laser. Questo era completamente stabile.
La mia domanda è questa: se l'intero computer si blocca a causa di un problema con il a) Python/GTK software GUI b) driver di periferica USB o c) Il dispositivo reale questo può essere imputato al Linux kernel (o altri livelli del sistema operativo)?
È ingiusto chiedere al kernel di Linux di non farsi prendere dal panico anche se commetto errori nella mia implementazione di software/hardware.
La mia ipotesi: qualsiasi applicazione a livello di utente non dovrebbe mai essere in grado di arrestare l'intero sistema poiché dovrebbe avere accesso solo alle proprie cose.
Qualsiasi driver di periferica diventa parte del kernel stesso e pertanto sarà in grado di bloccarlo. Il mio ragionamento suona?
Domanda bonus: C'è un modo per isolare dispositivo e kernel in qualche modo tale che Linux continuerà a funzionare felicemente, non importa quali stupidi errori siano stati fatti con l'hardware. Ciò sarebbe molto utile per due motivi: 1) il debug è più facile con un sistema in esecuzione, 2) Ai fini dell'esperimento abbiamo davvero bisogno di lunghi periodi di inattività e avere solo una parte del crash del sistema è infinitamente migliore degli arresti anomali in uno parte del sistema si sta propagando al resto.
Qualsiasi link e materiale di lettura su questo argomento sarebbe apprezzato. Grazie.
Non sono esperto in arresti anomali, ma direi che hai ragione nelle tue ipotesi. Per quanto riguarda la domanda bonus, gli errori _logical_ (cioè cattivo protocollo) dovrebbero essere gestiti dal kernel senza ulteriori problemi; ma gli errori _phisical_ (cioè cortocircuito, sovracorrente, ecc.) non possono essere, in generale, gestiti dal kernel e provocano diversi livelli di disastro. – rodrigo