프로세스(Process) 와 스레드(Thread)

프로세스 (Process)
- 운영체제에서 독립적으로 실행되는 프로그램의 인스턴스
- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
- 운영체제로 부터 시스템 자원(Code, Data, Stack, Heap)을 할당받는 작업의 단위
- 종료 시 자원을 반환
멀티 프로세싱
- 여러 개의 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것
- 하나의 응용프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스가 하나의 작업을 처리하도록 하는 것
- 이를 통해 하나 이상의 일을 병렬로 처리할 수 있음
- 여러 개의 프로세스 중 하나에 문제가 발생하면, 그 프로세스만 죽는 것으로 다른 영향이 확산되지 않음
스레드 (Thread)
- 프로세스 내 작업의 흐름을 의미
- 프로세스의 실행 가능한 가장 작은 단위
- 프로세스는 여러 스레드를 가질 수 있음
- 한 프로세스 내의 여러 스레드는 시스템 자원(Code, Data, Heap)을 서로 공유, Stack은 각각 따로 할당받음
- 한 스레드가 자원을 변경하면, 다른 스레드도 그 변경 결과를 볼 수 있음
멀티 스레딩
- 프로세스 내 작업을 여러개의 스레드로 처리하는 기법
- 서로 자원을 공유하므로 효율성이 높음
- 프로세스 내의 Stack영역을 제외한 모든 메모리를 공유하므로 통신의 부담이 적음
- 한 스레드에 문제가 생기면 다른스레드에도 영향을 끼쳐 프로세스에 영향을 줄 수 있는 단점