저는 현재 LFCS에 대해 배우고 있는데, 사용자 생성 프로세스와 커널 생성 프로세스의 차이점에 대해 알아봤습니다. 커널에 의해 생성된 프로세스 중에서 두 가지 프로세스 하위 유형을 정의합니다.
- 내부 커널 프로세스
- 외부 사용자 프로세스
그들은 버퍼를 디스크로 플러시하고 로드가 CPU 전체에 고르게 분산되도록 하는 등의 내부 커널 프로세스의 예를 제시했습니다. 그러나 외부 사용자 프로세스에만 지정됩니다.
이러한 프로세스는 일반 응용 프로그램처럼 사용자 공간에서 실행되지만 커널에 의해 시작됩니다. 이들은 수가 적고 일반적으로 수명이 짧습니다.
내 첫 번째 생각은 이러한 것들이 systemd와 같은 init 시스템에서 실행될 것이라는 것이었지만, 일반적으로 임시적이라고 언급했기 때문에 내 직감은 아마도 그렇지 않을 것이라고 말했습니다.
외부 사용자 프로세스의 예는 무엇입니까?
답변1
- 프로그램이 호출됩니다
/proc/sys/kernel/hotplug
. /sbin/v86d
커널 모듈에서 사용되는 도우미 루틴uvesafb
.
추가 읽기
- 조나단 데보인 폴라드(2017).
plug-and-play-event-handler
. 스낵 가이드. 소프트웨어.
답변2
"외부 사용자 프로세스"의 예는 입니다 init
. 커널은 init
사용자 공간의 요청 없이(즉, 응답 fork()
이나 관련 시스템 호출이 아닌) 프로세스를 시작합니다. 당신의 생각은 역할 systemd
때문에 합리적입니다 .systemd
init
커널은 특정 이벤트에서 사용자 공간 프로세스의 실행을 트리거할 수도 있습니다. 예를 들어, 역사적으로 hotplug
커널은 장치가 추가되거나 제거될 때 사용자 공간 실행 파일을 실행했습니다. 이 프로세스는 수명이 짧습니다. (이것은 가능한 예이지만 요즘 이 사용 사례에는 이 접근 방식이 사용되지 않는 것 같습니다.)