Mi pregunta es bastante amplia, lo sé, pero me he estado preguntando sobre esto durante mucho tiempo.¿Debería un dispositivo USB defectuoso bloquear un kernel Linux libre de errores?
Un poco de historia. Trabajo en un laboratorio de Física donde todas las computadoras de laboratorio ejecutan Debian (mezcla de la versión anterior y Lenny) o más recientemente Ubuntu 10.4 LTS. Hemos escrito una gran cantidad de software personalizado para interactuar con el hardware del experimento y otras computadoras.
Tenemos muchas placas FPGA que controlan varias partes del experimento, estas están conectadas a través de USB a diferentes computadoras. Después de actualizar una computadora que controlaba un experimento, comenzamos a ver bloqueos/bloqueos de la computadora que ejecutaba todos los láseres. Esto solía ser completamente estable.
Mi pregunta es la siguiente: si todo el ordenador se bloquea debido a un problema con a) Python/GTK software de interfaz gráfica de usuario b) controlador de dispositivo USB o c) El dispositivo real puede esto ser atribuido a la Linux kernel (u otros niveles del sistema operativo)?
¿Es injusto pedirle al kernel de Linux que no entre en pánico incluso si cometo errores en mi implementación de software/hardware.
Mi propia conjetura: Cualquier aplicación de nivel de usuario nunca debería ser capaz de bloquear todo el sistema, ya que solo deberían tener acceso a sus propios recursos.
Cualquier controlador de dispositivo se convierte en una parte del kernel mismo y, por lo tanto, será capaz de bloquearlo. ¿Mi razonamiento suena?
Pregunta de bonificación: ¿Existe alguna forma de aislar el dispositivo y el kernel de alguna manera para que Linux siga funcionando felizmente sin importar qué errores estúpidos se cometan con el hardware? Eso sería muy útil por dos razones: 1) la depuración es más fácil con un sistema en ejecución, 2) A los efectos del experimento realmente necesitamos tiempos de actividad prolongados y tener solo una parte del bloqueo del sistema es infinitamente mejor que los bloqueos en uno parte del sistema que se propaga al resto.
Cualquier enlace y material de lectura sobre este tema sería apreciado. Gracias.
No soy experto en accidentes, pero diría que tienes razón en tus conjeturas. Acerca de la pregunta de bonificación, los errores _logical_ (es decir, el protocolo incorrecto) deberían ser resueltos por el núcleo sin más problemas; pero los errores físicos (es decir, cortocircuito, sobreintensidad, etc.) no pueden, en general, ser gestionados por el kernel y provocarán diferentes niveles de desastre. – rodrigo