커널스레드

포스트: 4|아이템:커널스레드(4)
Tags

Posts

4 posts

[리눅스커널] 프로세스: 커널 스레드는 어떻게 생성할까?

Guillermo Austin Kim|2020년 2월 29일

이어서 커널 스레드를 생성하는 과정에서 호출되는 함수를 소개하고 세부 코드를 분석하겠습니다. 커널 스레드가 생성되는 과정은 크게 2단계로 나눌 수 있습니다. 1) 1단계: kthreadd 프로세스에게 커널 스레드 생성을 요청  kthread_create() kthread_create_on_node() 2) 2단계: kthreadd 프로세스가 커널 스레드를 생성  kthreadd()  create_kthread() 각 단계별로 실행되는 함수를 살펴보겠습니다. 1단계: kthreadd 프로세스에게 커널 스레드 생성 요청 유저 프로세스를 생성하려면 fork() 함수를 호출해야 하듯이, 커널 스레드를 생성하려면 kthread_create() 커널 함수를 호출해야 합니다. 먼저 kthreadd 프

[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?

Guillermo Austin Kim|2019년 1월 13일

이번에는 커널 스레드 생성 요청과 커널 스레드를 생성하는 코드 흐름을 살펴봅시다. 커널 스레드를 생성하려면 다음과 같이 kthread_create() 함수를 호출해야 합니다.1 #define kthread_create(threadfn, data, namefmt, arg...) \2 kthread_create_on_node(threadfn, data, NUMA_NO_NODE, namefmt, ##arg)34 struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),5 void *data, int node,6 const char namefmt[],7 ...) 먼저 이 함수에 전달하는 인자부터 살펴봅시다.

[라즈베리파이] 프로세스 - 커널 스레드 종류

Guillermo Austin Kim|2018년 10월 29일

리눅스 커널에서 구동중인 대표적인 커널 스레드를 알아보기 위해 라즈베리파이에서 다음 명령어를 입력합시다.root@raspberrypi:/home/pi# ps -ejH1 PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND2 0 2 0 0 ? -1 S 0 0:00 [kthreadd]3 2 4 0 0 ? -1 I< 0 0:00 \_ [kworker/0:0H]4 2 7 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]5 2 10

[리눅스커널] 프로세스 - 커널 프로세스 생성 시 do_fork() 함수 흐름

Guillermo Austin Kim|2018년 10월 22일

커널 공간에서 시스템 리소스(메모리, 전원) 관리를 수행하는 프로세스를 커널 스레드라고 합니다. 커널 스레드는 어떻게 생성할까요? 다음과 같이 kthread_create() 함수에 적절한 인자를 전달하면 됩니다. 커널 스레드를 생성하는 코드를 같이 봅시다. [https://elixir.bootlin.com/linux/v4.14.70/source/drivers/vhost/vhost.c#L334]1 long vhost_dev_set_owner(struct vhost_dev *dev)2 {3 struct task_struct *worker;4 int err;...5 /* No owner, become one */6 dev->mm = get_task_mm(current);7 worker = kthread_c