프로세스와 스레드의 개념

728x90

소프트웨어 개발을 하다 보면 "프로세스"와 "스레드"라는 용어를 자주 접하게 된다. 이 두 개념은 운영체제(OS)와 프로그램 실행의 기본 단위로서 중요한 역할을 한다. 하지만 이 두 용어를 혼동하거나 그 차이점을 명확히 이해하지 못하는 경우가 많다.

간단하게 설명하면 아래와 같다. 

프로세스 스레드
운영체제에서 독립적인 작업 단위로 관리되는 것 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위

 

프로세스란?

프로세스는 실행 중인 프로그램을 의미한다. 사용자가 실행한 프로그램이 운영체제에서 독립적인 작업 단위로 관리되는 것을 프로세스라고 한다. 각 프로세스는 고유한 메모리 공간과 자원을 가지며 다른 프로세스와 독립적으로 실행된다. 프로세스에 대해 자세하게 이해하기 위해서는 프로그램에 대한 내용도 알 필요가 있다.

프로그램 프로세스
실행 가능한 코드의 집합 실행 중인 프로그램 인스턴스
하드 디스크, SSD 등과 같은 비휘발성 메모리 운영체제의 메모리 (RAM)
프로그램 작성 및 컴파일 후에도 지속됨 프로그램이 실행되면 시작되고 종료되면 소멸
디스크 공간 차지 CPU, 메모리, 파일 핸들 등의 시스템 자원 사용
하나의 프로그램은 여러번 실행 가능 각각의 실행 인스턴스는 별개의 프로세스

 

스레드(Thread)란?

스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며 이들 스레드는 프로세스의 메모리와 자원을 공유하면서 독립적으로 실행된다. 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다.

일반적으로 하나의 프로세스는 하나 이상의 스레드를 포함할 수 있으며 스레드들은 프로세스의 메모리 공간(코드, 데이터, 힙 등)을 공유하면서 동작한다.

프로세스 스레드
실행 중인 프로그램의 인스턴스 프로세스 내에서 실행되는 가장 작은 실행 단위
각 프로세스는 독립적인 메모리 공간을 가짐 동일 프로세스 내에서 메모리 공간을 공유
CPU, 메모리 등 다양한 시스템 자원을 독립적으로 사용 CPU만을 주로 사용하며 다른 스레드와 자원을 공유
여러 프로세스가 독립적으로 동시 실행 가능 여러 스레드가 하나의 프로세스 내에서 동시 실행 가능
프로세스 간의 충돌이 없음 동기화 문제로 인해 충돌 가능성이 있음

 

728x90