
저는 커널 개발에 관심이 있고 프로세스를 종료하고 종료하는 방법을 찾으려고 노력하고 있습니다. 내가 아는 유일한 것은 해당 프로세스의 pid와 작업 설명자 값입니다.
즉, 커널의 task_struct에 대한 pid 또는 포인터를 사용하여 프로세스를 어떻게 종료할 수 있습니까?
답변1
참조할 수 있는 코드는 mm/oom_kill.c의 oom killer입니다.
https://github.com/torvalds/linux/blob/master/mm/oom_kill.c
이는 시스템에 메모리가 부족할 때 커널이 종료할 프로세스를 선택하는 메커니즘입니다.
Android LMK는 비교적 간단합니다. send_sig를 사용하고 있습니다. https://android.googlesource.com/kernel/arm64/+/android-9.0.0_r0.32/drivers/staging/android/lowmemorykiller.c
또는 기능을 사용할 수 있습니다
int kill_pid(struct pid *pid, int sig, int priv)
.