Parallel processing

Process vs. Thread

사전적 정의에 따르면 프로세스는 “컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램” 이고, 스레드는 “프로세스 내에서 실행되는 여러 흐름의 단위” 이다. 하지만 이 정의만으로는 잘 이해되지 않는다. 좀 더 쉽게 말하면, 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위이다.

여러가지 작업을 동시에 처리하려면 멀티 프로세스를 사용하면 된다. 하지만 보통 멀티 스레드를 사용한다. 그 이유는 무엇일까?

쉽게 설명하면, 멀티 프로세스로 실행되는 작업을 멀티 스레드로 사용하면 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다. 또한, 프로세스 간 통신보다 스레드 간 통신이 비용이 적게 들어 통신의 부담을 줄일 수 있다.

이처럼 스레드를 활용하면 자원의 효율성은 증가하지만, 전역 변수로 자원을 공유하므로 동기화 문제에 신경써야 한다.