Как убить поток ядра? И я действительно хочу это сделать?

8

Как я узнал из этого вопроса , [bracketed]процессы, перечисленные ps auxкомандой, являются потоками ядра. Так есть ли способ убить их из командной строки? Если нет, я думаю, причина этого в том, чтобы уберечь пользователя от более высокого риска паники ядра, верно?

математический
источник

Ответы:

9

Вы не можете уничтожить потоки ядра или любой процесс, заблокированный в состоянии D, поскольку сигналы доставляются только тогда, когда ядро ​​возвращается в режим пользователя. Помимо технических ограничений доставки сигнала, уничтожение потока в середине кода ядра может привести к повреждению системы, поскольку код ядра может в то время содержать важный ресурс, такой как спин-блокировка или мьютекс, а его уничтожение предотвратит это. ресурсы от освобождения.

Если у вас есть процесс, который застрял в состоянии D на длительный период времени, то у вас есть ошибка в ядре. См. Https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies для советов о том, как сообщить об этом.

psusi
источник
2

Потоки ядра - это необходимые потоки, созданные вашим ядром для управления вашей системой.

Не все являются необходимыми, но все (большинство) все полезны и не требуют, в основном, никаких дополнительных ресурсов, нет никаких причин, по которым в обычных условиях можно подумать об уничтожении потока ядра.

Ядро Linux может создавать и уничтожать эти потоки, когда это необходимо, вам не следует о них беспокоиться, и в большинстве случаев убивать нельзя.

Бруно Перейра
источник
Что если у меня есть поток, который находится в непрерывном спящем режиме, который блокирует системный ресурс, такой как устройство, подключенное с помощью mount, или другое оборудование, которое я хочу освободить, убив поток?
математика
1
Сообщите об ошибке, если считаете ее полезной (а не сбой в вашей системе) и надеетесь, что она скоро решится.
Бруно Перейра
Я бы попытался выяснить, что не так с монтированием, прежде чем решить, что решение проблемы - убить потоки ядра.
Бруно Перейра
Я не хакер ядра, а пользователь определенных драйверов ядра. Конечно, я должен сделать отчет об ошибке, если какое-то устройство не работает должным образом, но мне нужно подождать не менее полугода, поэтому в следующем Ubuntu появится это исправление. Я думаю, что это правильный сценарий, и ядро ​​Linux должно иметь возможность отменить определенное действие и освободить ресурсы (если они были заняты).
математика
вы понимаете, что, скорее всего, поток ядра был инициирован другим процессом, поэтому, вероятно, в этом потоке нет ничего плохого, кроме процесса, который начал забывать закрывать его. Я понимаю, что вы говорите, но я не думаю, что даже целесообразно убивать потоки ядра.
Бруно Перейра