프로세스와 스레드 차이 쉽게 이해하기

프로세스와 스레드는 프로그램을 동작하게 한다는 점에서 비슷합니다. 그래서 더 헷갈립니다. 용어 자체로도 헷갈리는데, 두 용어를 설명할 때 등장하는 표현들도 추상적이라 이해가 더 까다로운 거 같습니다. 가능한 구체적으로 프로세스와 스레드의 차이와 예시를 알아보겠습니다.

프로세스란?

프로세스(Process)는 프로그램의 실행 상태이자, 메모리 공간에 할당된 실체입니다. 각 프로세스는 생성되면서 고유한 메모리 공간을 할당받습니다. 때문에 프로세스는 다른 프로세스와 독립적으로 존재해 하나의 프로세스에 충돌이 발생해도 다른 프로세스에는 영향을 주지 않습니다.

프로세스 예시

프로세스는 특별히 헷갈릴 게 없습니다. 그냥 일반적으로 컴퓨터에서 애플리케이션을 실행하면 그 실행 객체를 프로세스라고 부릅니다. MS 워드를 켜도 프로세스고, 게임을 켜도 프로세스입니다. 워드를 종료하면 프로세스를 종료하는 거고, 게임을 종료하면 마찬가지로 프로세스를 종료하는 겁니다.

 

조금 특이한 케이스로는 구글 크롬을 들 수 있습니다. 크롬 브라우저의 특징은 탭(Tab)을 추가하는 방식으로 여러 페이지를 생성한다는 것입니다. 이때 크롬은 생성되는 각 탭을 스레드가 아닌 프로세스로 생성합니다. 모든 프로세스는 고유한 메모리를 할당받기 때문에 하위 프로세스를 많이 생성하는 크롬은 메모리를 많이 잡아먹습니다.

스레드란?

스레드(Thread)는 프로세스 내의 실행 단위입니다. 동일한 프로세스 내에서 여러 개의 스레드가 실행됩니다. 프로세스가 점유한 메모리 공간에서 각 스레드는 공간을 공유합니다. 스레드는 서로의 메모리에 액세스 할 수 있습니다. 이 방식은 더 빠른 통신과 효율을 제공합니다만, 하나의 스레드에 오류가 발생해도 전체 프로세스와 해당 프로세스 내의 다른 스레드에 영향을 미치는 위험이 있습니다. 

스레드 예시

비디오 플레이어를 실행했다고 가정해보겠습니다. 이때 비디오 플레이어는 여러 스레드를 실행해서 비디오 디코딩, 프레임 렌더링, 오디오 재생 같은 복합적으로 이루어지는 작업을 동시에 처리할 수 있습니다. 이처럼 여러 개의 스레드가 동시에 작업을 처리하는 애플리케이션을 멀티 스레드 애플리케이션이라고 부릅니다.

 

MYSQL, PostgreSQL 같은 DBMS도 멀티 스레드를 지원합니다. 여러 스레드를 실행해서 여러 클라이언트로부터 받는 데이터베이스 쿼리 작업을 수행할 수 있습니다. 비슷한 개념으로 아파치, 엔진엑스 등 웹 서버 역시 멀티 스레드를 통해 복수의 HTTP 요청을 처리합니다.

프로세스와 스레드 차이 정리

컴퓨터 디스크에 저장된 프로그램을 실행해서 메모리에 할당한 게 프로세스입니다. 프로세스 안에는 사용자의 요청을 처리하는 실행 단위가 있습니다. 그게 스레드입니다. 프로세스는 하위 프로세스를 만들어 다양한 요청을 처리할 수 있습니다. 프로세스 대신 스레드를 활용해서 요청을 처리할 수도 있습니다.

 

프로세스와 스레드 중 어떤 것을 이용할지는 애플리케이션 개발자가 결정합니다. 애플리케이션의 특성에 따른 선택을 하게 됩니다.

반응형

댓글

Designed by JB FACTORY