[linux] Process 개요
Process 개요
- thread와 달리 system call로 프로세스를 생성한다.
- 프로세스는 자원을 관리한다.
- 프로세스는 독립적이다.
- 프로세스는 안정성이 높다.
- 프로세스가 종료하는 것은 프로세스내에 모든 쓰레드가 종료하는 것을 의미한다.
- 메인 함수의 반환이 프로세스의 종료를 의미하는 것 (메인 함수의 반환과 메인 쓰레드의 반환을 헷갈리지 말 것)
- 메인 쓰레드가 반환되어도 프로세스는 종료하지 않는다. 모든 쓰레드가 종료되어야 프로세스가 종료되기 때문이다.
Process와 Thread의 차이
- 프로세스는 환경이고, 쓰레드는 실행이다.
-
각각의 프로세스는 각각의 독립된 메모리를 가지고 있다. 그렇기 때문에 프로세스는 서로 독립적이다. (ex. 하나의 프로세스가 오류가 난다고 다른 프로세스에 영향을 주지 않는다.)
각각의 쓰레드는 한 프로세스의 환경을 공유한다. 그렇기 때문에 프로세스내에 쓰레드는 서로에게 영향을 끼칠 수 있다.
- 프로세스는 독립적이기 때문에 안정성이 높다. 반대로 쓰레드는 독립적이지 않기 때문에 안정성을 확보하기 어렵다. (그러므로 쓰레드는 잘 컨트롤해주어야 한다.)
- 멀티 프로세스는 system call에 의해 만들어지고, 멀티 쓰레드는 thread API에 의해 만들어 진다. (ex. c언어 : pthread API 다른 언어는 만드는 방식이 다르다.)