문제
다음 ( 괄호 ) 안에 들어갈 내용으로 알맞은 것은?
CentOS 7 리눅스에서는 부팅을 시작하면 커널이 systemd라는 프로세스를 생성시키고 PID 번호 값은 ( ㉠ )를 부여한다. 이후 시스템 운영에 필요한 데몬을 비롯한 다른 서비스들은 ( ㉡ ) 방식으로 systemd 프로세스의 자식 프로세스로 생성한다.
① ㉠ 0, ㉡ fork ② ㉠ 0, ㉡ exec ③ ㉠ 1, ㉡ fork ④ ㉠ 1, ㉡ exec
정답
3번
해설
정답: 3. 부팅 시 커널이 가장 먼저 띄우는 최초 프로세스(systemd)의 PID 는 1 이다. 이후 다른 서비스·데몬은 fork 방식으로 systemd 의 자식 프로세스로 생성된다. 따라서 ㉠=1, ㉡=fork.
오답 풀이
- 1번: ㉡ 이 fork 인 것은 맞지만 systemd 의 PID 는 0 이 아니라 1 이다(PID 0 은 스케줄러/스왑퍼 같은 커널 내부용).
- 2번: PID 0 도 틀리고, 자식 프로세스 생성 방식은 exec 가 아니라 fork 이다(exec 는 이미지 교체).
- 3번: PID 1 + fork 방식으로 모두 옳다.
- 4번: PID 1 은 맞지만 자식 프로세스 "생성"은 exec 가 아니라 fork 이다.
보충 개념 fork() 는 부모를 복제해 자식 프로세스를 만들고, exec() 는 만들어진 프로세스의 메모리 이미지를 새 프로그램으로 교체한다. PID 1 은 init/systemd 로, 모든 프로세스의 조상이 된다.