kthread_run을 사용하는 아래 코드 조각을 볼 수 있습니다. 커널 스레드에는 로컬 정보를 관리하는 데 사용하는 자체 스택이 있습니다. 함수는 kthread 코드에 의해 반복적으로 호출됩니다(필요한 경우). 그것은 필요한 경우 수면, 할 지정된 모든 작업을 수행 할 수 있습니다. 그러나 이 함수는 신호 상태를 확인하고 신호가 보류 중인 경우 반환해야 합니다. 커널 스레드는 종종 특정 프로세서에서 실행되도록 만들어집니다. 이 효과를 얻으려면 스레드가 생성된 후 kthread_bind()를 호출합니다: 한 프로세스에는 여러 스레드가 있을 수 있으며 각 스레드는 서로 다른 코드를 동시에 실행하는 동시에 데이터를 공유하고 협력 프로세스보다 훨씬 쉽게 동기화할 수 있습니다. 스레드는 프로세스보다 적은 시스템 리소스를 필요로 하며 더 빠르게 시작할 수 있습니다. 경량 공정이라고도 하는 스레드. 먼저 void * 인수가 있고 int 값을 반환해야하는 스레드를 만들어야합니다.

스레드 함수의 몇 가지 조건을 따라야 합니다. 그것의 것이 좋습니다. void kthread_bind(구조체 task_struct *k, 서명되지 않은 int cpu); signal_pending(전류)까지 실행되는 스레드: threadfn – 스레드를 만들고 시작하는 편리한 기능도 있습니다. Rusty Russell은 프로세서가 오고 갈 수 있을 때 관련 커널 스레드를 임의의 시간에 시작하거나 중지해야 합니다. 그의 인생을 더 쉽게 하기 위해, 그는 작업을 크게 단순화 하는 커널 스레드 프리미티브의 새로운 집합을 구현. struct task_struct * kthread_create (int (* threadfn (void * 데이터) 누군가가 kthread_stop을 호출하면 깨어나고 true가 반환됩니다. 그런 다음 반환해야 하며 반환 값은 kthread_stop으로 전달됩니다. kthread_should_stop을 설정하여 k가 true를 반환하고, 절전 모드해제하고, 종료될 때까지 기다립니다. 이 함수를 사용하는 경우 threadfn이 do_exit 자체를 호출해서는 안됩니다! 이것은 또한 wake_up_process를 호출하는 대신 kthread_create 후에 호출할 수 있습니다: 스레드는 threadfn을 호출하지 않고 종료됩니다. 우리가 스레드를 만들 때마다, 그것은 누군가에 의해 망가워야합니다. 그래서 관리는 아래와 같이 다음과 같습니다.

커널 스레드를 user[land] 스레드와 비교하기 때문에 다음과 같은 의미를 의미한다고 가정합니다. wake_up_process가 호출되지 않은 경우 threadfn 또는 -EINTR의 결과를 반환합니다. 이 도우미 함수는 커널 스레드를 만들고 이름을 지정합니다. 그러나 우리는 수동으로 그 스레드를 깨워야합니다. 깨어났을 때 스레드는 데이터를 인수로 사용하여 threadfn()을 실행합니다. 커널 스레드 커널 스레드는 프로세스 컨텍스트에서 커널 코드를 실행할 필요성에서 나타났습니다. 커널 스레드는 워크큐 메커니즘의 기초입니다.