오늘은 부모 프로세스와 자식 프로세스가 어떻게 작동이 되는지 알아보겠습니다.
먼저, 자식 프로세스가 어떻게 생성되는지 알아보겠습니다.
fork()라는 함수를 통해 부모 프로세스와 동일한 내용을 가진 자식 프로세스의 메모리 공간이 생기게 됩니다.
부모 프로세스의 fork() 함수 return 값은 자식 프로세스의 pid이고, 자식 프로세스의 fork() 함수 return 값은 0 입니다.
(참고로, pid는 프로세스를 식별할 수 있는 고유 id라고 할 수 있습니다.)
fork() 함수로 자식 프로세스를 생성한 후, exec() 함수를 이용해 자식 프로세스가 새로운 프로그램을 실행하도록 할 수 있습니다.
부모 프로세스는 wait() 함수를 이용해서 자식 프로세스가 종료할 때 까지 기다릴 수 있습니다.
아니면 kill(pid, SIGKILL)함수를 통해 자식 프로세스를 강제로 종료시킬 수도 있습니다.
몇 가지 코드를 보면서 부모 프로세스와 자식 프로세스가 어떻게 작동하는지 살펴보겠습니다.
1. 총 몇 개의 프로세스 존재?


총 8개
2. 출력값은? (부모의 pid는 1200, 자식의 pid는 1204이라고 가정)


0
1204
1204
1200
위에서 언급했듯이 부모의 fork() 리턴값은 자식의 pid이고 자식의 fork() 리턴값은 0이다.
3. 출력값(부모 프로세스의 num값)은?


10
부모 프로세스와 자식 프로세스의 메모리 공간은 별개이다.
| [운영체제] Deadlock Handling #2(deadlock avoidance) (0) | 2021.07.26 |
|---|---|
| [운영체제] Deadlock Handling #1(deadlock prevention) (0) | 2021.07.24 |
| [운영체제] Bounded Buffer Problem (0) | 2021.07.23 |
| [운영체제] 프로세스 스케줄링(process scheduling) (0) | 2021.06.19 |
| [운영체제] 리눅스 쉘(shell) 사용법- 디렉토리/파일 생성하기 (0) | 2021.06.17 |
댓글 영역