커널 스레드를 어떻게 죽이나 요? 그리고 정말로 그렇게하고 싶습니까?


8

내가에서 배운대로 이 질문에 , [bracketed]에 의해 나열된 프로세스 ps aux명령은 커널 스레드입니다. 커맨드 라인에서 그들을 죽일 수있는 방법이 있습니까? 그렇지 않다면, 그 이유는 사용자가 커널 패닉을 당할 위험을 높이는 것입니다.

답변:


9

커널 스레드 또는 D 상태에서 차단 된 프로세스는 종료 할 수 없습니다. 커널이 사용자 모드로 돌아올 때만 신호가 전달되기 때문입니다. 신호 전달의 기술적 한계 외에도 커널 코드 중간에서 스레드를 종료하면 커널 코드가 스핀 락이나 뮤텍스와 같은 중요한 리소스를 보유하고 있기 때문에 시스템을 손상시킬 수 있습니다. 자원이 해제되지 않습니다.

오랫동안 D 상태에서 프로세스가 중단 된 경우 커널 버그가 있습니다. 보고에 대한 팁 은 https://wiki.ubuntu.com/KernelTeam/KernelTeamBugPolicies 를 참조 하십시오 .


2

커널 스레드는 시스템을 관리하기 위해 커널이 생성 한 필수 스레드입니다.

모두가 필요하지는 않지만 모두 (대부분) 모두 유익하고 대부분 추가 ​​자원이 필요하지는 않지만 정상적인 조건에서 커널 스레드를 종료하는 것에 대해 생각할 이유가 없습니다.

Linux Kernel은 필요할 때 해당 스레드를 파괴 할 수 있으므로 걱정할 필요가 없으며 대부분의 상황에서 죽이는 것은 할 수있는 일이 아닙니다.


마운트가 마운트 된 장치 또는 스레드를 강제 종료하여 해제하려는 다른 하드웨어와 같은 시스템 리소스를 차단하는 무정전 절전 상태의 스레드가있는 경우 어떻게합니까?
math

1
유용하다고 생각하고 시스템에 결함이 있다고 생각되면 버그를 제기하고 곧 해결되기를 바랍니다.
Bruno Pereira

커널 스레드를 죽이는 것이 해결책이라고 결정하기 전에 마운트에 어떤 문제가 있는지 알아 내려고 노력했습니다.
Bruno Pereira

나는 커널 해커가 아니라 특정 커널 드라이버 사용자입니다. 물론 일부 장치가 제대로 작동하지 않으면 버그 보고서를 작성해야하지만 적어도 반년을 기다려야하므로 다음 우분투 가이 버그 수정을 가져옵니다. 나는 이것이 유효한 시나리오라고 생각하며 리눅스 커널은 특정 작업을 중단하고 리소스를 점유 할 수있는 가능성을 제공해야합니다.
math

커널 스레드가 anogher 프로세스에 의해 시작되었다는 것을 이해하지 못했을 것이므로 아마도 커널 스레드를 닫는 것을 잊어 버린 프로세스를 제외하고는 해당 커널 스레드에 아무런 문제가 없습니다. 나는 당신이 말하는 것을 이해하지만 커널 스레드를 죽이는 것이 바람직하다고 생각하지 않습니다.
Bruno Pereira
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.