Jak zabić wątek jądra? I czy naprawdę chcę to zrobić?

8

Jak się dowiedziałem z tego pytania , [bracketed]procesy wymienione w ps auxpoleceniu są wątkami jądra. Czy istnieje sposób na zabicie ich z wiersza poleceń? Jeśli nie, myślę, że powodem tego jest uratowanie użytkownika przed większym ryzykiem wystąpienia paniki jądra, prawda?

matematyka
źródło

Odpowiedzi:

9

Nie można zabijać wątków jądra ani żadnego procesu zablokowanego w stanie D, ponieważ sygnały są dostarczane tylko wtedy, gdy jądro powraca do trybu użytkownika. Oprócz technicznych ograniczeń dostarczania sygnału, zabicie wątku w środku kodu jądra spowodowałoby uszkodzenie systemu, ponieważ kod jądra mógł w tym czasie przechowywać ważne zasoby, takie jak blokada spinania lub muteks, a zabicie go zapobiegłoby zasoby z uwolnienia.

Jeśli masz proces, który utknął w stanie D przez dłuższy czas, oznacza to, że masz błąd jądra. Zobacz https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies, aby uzyskać wskazówki dotyczące zgłaszania tego.

psusi
źródło
2

Wątki jądra są niezbędnymi wątkami tworzonymi przez jądro do zarządzania systemem.

Nie wszystkie są konieczne, ale wszystkie (najbardziej) wszystkie są korzystne i nie wymagają przeważnie żadnych dodatkowych zasobów, nie ma powodu, dla którego w normalnych warunkach można by pomyśleć o zabiciu wątku jądra.

Jądro Linuksa może zniszczyć te wątki, gdy jest to konieczne, nie powinieneś się tym martwić, a zabijanie w większości przypadków nie jest czymś, co możesz zrobić.

Bruno Pereira
źródło
Co się stanie, jeśli mam wątek, który jest w trybie nieprzerwanego uśpienia, który blokuje zasób systemowy, taki jak urządzenie zamontowane z montażem lub inny sprzęt, który chcę zwolnić, zabijając wątek?
matematyka,
1
Zgłoś błąd, jeśli uważasz, że jest on użyteczny (a nie usterka w twoim systemie) i masz nadzieję, że wkrótce zostanie rozwiązany.
Bruno Pereira,
Próbowałem dowiedzieć się, co jest nie tak z montażem, zanim zdecydowałem, że rozwiązaniem jest zabijanie wątków jądra.
Bruno Pereira,
Nie jestem hakerem jądra, ale użytkownikiem niektórych sterowników jądra. Oczywiście powinienem zgłosić błąd, jeśli jakieś urządzenie nie działa poprawnie, ale muszę poczekać co najmniej pół roku, więc następne Ubuntu przynosi tę poprawkę. Myślę, że jest to prawidłowy scenariusz, a jądro linuksa powinno mieć możliwość przerwania określonej akcji i zwolnienia zasobów (jeśli jakieś były zajęte).
matematyka,
nie rozumiesz, że najprawdopodobniej wątek jądra został zainicjowany przez inny proces, więc prawdopodobnie nie ma nic złego w tym wątku jądra oprócz procesu, który zaczął zapominać go zamknąć. Rozumiem, co mówisz, ale nie sądzę, aby zabijanie wątków jądra było wskazane.
Bruno Pereira,