문제
다음 (괄호) 안에 들어갈 내용으로 알맞은 것은?
하나의 프로세스가 다른 프로세스를 실행하기 위한 시스템 호출 방법에는 ( ㉠ )와 ( ㉡ )가 있다. ( ㉠ )는 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태로 기존의 프로세스는 그대로 실행되어 있다. 새롭게 생성된 프로세스는 원래의 프로세스랑 똑같은 코드를 기반으로 실행된다. ( ㉡ )는 원래의 프로세스를 새로운 프로세스로 대체하는 형태로 호출한 프로세스의 메모리에 새로운 프로세스의 코드를 덮어 씌워 버린다.
① ㉠ exec, ㉡ fork ② ㉠ fork, ㉡ exec ③ ㉠ background, ㉡ foreground ④ ㉠ foreground, ㉡ background
정답
2번
해설
정답: 2. ㉠은 부모를 그대로 둔 채 동일한 코드의 복사본 프로세스를 새로 만드는 fork, ㉡은 현재 프로세스의 메모리를 새 프로그램 코드로 덮어써 대체하는 exec 이다. 따라서 ㉠=fork, ㉡=exec 이다.
오답 풀이
- 1번: ㉠ exec, ㉡ fork 로 두 호출이 서로 뒤바뀌어 설명과 맞지 않다.
- 2번: ㉠ fork(복사본 생성), ㉡ exec(코드 대체)로 설명에 정확히 부합한다.
- 3번·4번: background/foreground 는 작업 제어 개념일 뿐, 프로세스를 생성·대체하는 시스템 호출이 아니다.
보충 개념 유닉스 프로세스 생성 모델은 fork()로 자식을 복제한 뒤 exec()로 자식의 코드를 원하는 프로그램으로 교체하는 'fork-exec' 방식이다. fork 는 PID 만 다른 동일 복사본을, exec 는 PID 를 유지한 채 프로그램만 교체한다.