프로세스(Process)와 스레드(Thread)의 차이 및 개념 정리

2022. 12. 31. 20:12CS

컴퓨터 과학에서 프로세스는 실행 중인 프로그램의 인스턴스이고 스레드는 프로세스 내의 별도 실행 경로이다. 프로세스와 스레드는 모두 코드를 실행하고 작업을 수행하는 데 사용되지만 몇 가지 중요한 차이점이 있다.

리소스 소유권 (Resource ownership)

각 프로세스에는 프로세스가 소유하고 관리하는 메모리, 파일 핸들 및 열린 소켓과 같은 고유한 리소스 세트가 있다. 반면 스레드는 상위 프로세스의 리소스를 공유하는 경량 실행 경로이다.

메모리 관리 (Memory management)

프로세스에는 다른 프로세스로부터 보호되는 별도의 메모리 공간이 있다. 이는 각 프로세스가 실행 중인 데이터 및 코드의 별도 사본을 가지고 있음을 의미한다. 반면 스레드는 상위 프로세스의 메모리 공간을 공유하므로 상위 프로세스의 데이터에 액세스하고 수정할 수 있다.


스케줄링 (Scheduling)

일반적으로 프로세스는 CPU 시간의 공평한 분배를 보장하기 위해 운영 체제에 의해 스케줄링된다. 반면에 스레드는 일반적으로 운영 체제 또는 프로그래밍 언어 런타임에 의해 스케줄링된다.

통신 (Communication)

프로세스는 일반적으로 파이프, 소켓 또는 공유 메모리와 같은 IPC(inter-process communication: 프로세스 간 통신) 메커니즘을 사용하여 서로 통신한다. 반면 스레드는 프로그래밍 언어 런타임에서 제공하는 공유 메모리 또는 기타 메커니즘을 사용하여 서로 통신할 수 있다.



전반적으로 프로세스와 스레드는 모두 코드를 실행하고 작업을 수행하는 데 사용되지만 리소스 소유권, 메모리 관리, 스케줄링 및 통신 측면에서 차이가 있다. 프로세스는 일반적으로 별도의 리소스 집합과 다른 프로세스로부터의 보호가 필요한 작업에 사용되는 반면, 스레드는 리소스를 공유하고 병렬 실행의 이점을 얻을 수 있는 작업에 사용된다.

반응형