Moje pytanie jest dość szerokie, wiem, ale zastanawiam się nad tym od dłuższego czasu.Czy złe urządzenie USB może spowodować awarię jądra systemu Linux bezbłędnie?
Małe tło. Pracuję w laboratorium fizyki, w którym wszystkie komputery laboratoryjne pracują w systemie Debian (połączenie starej wersji i Lenny'ego) lub ostatnio Ubuntu 10.4 LTS. Napisaliśmy wiele niestandardowych programów do interfejsu ze sprzętem eksperymentalnym i innymi komputerami.
Mamy wiele kart FPGA, które kontrolują różne części eksperymentu, są one połączone przez USB z różnymi komputerami. Po uaktualnieniu komputera sterującego eksperymentem zaczęliśmy zauważać awarie/blokady komputera, na którym działają wszystkie lasery. To było w pełni stabilne.
Moje pytanie jest takie: Jeśli cała zamki Komputer się z powodu problemu z a) Python/GTK gui oprogramowanie b) sterownik urządzenia USB lub c) Rzeczywista urządzenie to może być obwiniany o Linuksie jądro (lub inne poziomy systemu operacyjnego)?
Czy to niesprawiedliwe, aby poprosić jądro Linuxa, aby nie wpadał w panikę, nawet jeśli popełniam błędy przy wdrażaniu oprogramowania/sprzętu.
Moje własne przypuszczenie: każda aplikacja na poziomie użytkownika nigdy nie powinna być w stanie awarię całego systemu, ponieważ powinny one mieć tylko dostęp do własnych rzeczy.
Dowolny sterownik urządzenia staje się częścią jądra i dlatego może go zawiesić. Czy moje rozumowanie brzmi?
Dodatkowe pytanie: czy istnieje sposób na izolację urządzenia i jądra w jakiś sposób, aby system Linux działał szczęśliwie bez względu na to, jakie głupie błędy zostały popełnione przy użyciu sprzętu. Byłoby to bardzo przydatne z dwóch powodów: 1) debugowanie jest łatwiejsze dzięki uruchomionemu systemowi, 2) Na potrzeby eksperymentu naprawdę potrzebujemy długich uptimes i mając tylko część awarii systemu jest nieskończenie lepiej niż awarie w jednym część systemu propaguje się do reszty.
Wszelkie linki i materiały do czytania na ten temat będą mile widziane. Dziękuję Ci.
Nie jestem ekspertem od awarii, ale powiedziałbym, że masz rację w swoich przypuszczeniach. O pytanie premiowe, _logiczne_ błędy (np. Zły protokół) powinny być poradzone sobie przez jądro bez żadnych dalszych problemów; ale błędy _phisical_ (np. zwarcie, przeciążenie itp.) nie mogą być w ogólności zarządzane przez jądro i będą powodować różne poziomy katastrofy. – rodrigo