728x90
소프트웨어 개발을 하다 보면 "프로세스"와 "스레드"라는 용어를 자주 접하게 된다. 이 두 개념은 운영체제(OS)와 프로그램 실행의 기본 단위로서 중요한 역할을 한다. 하지만 이 두 용어를 혼동하거나 그 차이점을 명확히 이해하지 못하는 경우가 많다.
간단하게 설명하면 아래와 같다.
프로세스 | 스레드 |
운영체제에서 독립적인 작업 단위로 관리되는 것 | 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위 |
프로세스란?
프로세스는 실행 중인 프로그램을 의미한다. 사용자가 실행한 프로그램이 운영체제에서 독립적인 작업 단위로 관리되는 것을 프로세스라고 한다. 각 프로세스는 고유한 메모리 공간과 자원을 가지며 다른 프로세스와 독립적으로 실행된다. 프로세스에 대해 자세하게 이해하기 위해서는 프로그램에 대한 내용도 알 필요가 있다.
프로그램 | 프로세스 |
실행 가능한 코드의 집합 | 실행 중인 프로그램 인스턴스 |
하드 디스크, SSD 등과 같은 비휘발성 메모리 | 운영체제의 메모리 (RAM) |
프로그램 작성 및 컴파일 후에도 지속됨 | 프로그램이 실행되면 시작되고 종료되면 소멸 |
디스크 공간 차지 | CPU, 메모리, 파일 핸들 등의 시스템 자원 사용 |
하나의 프로그램은 여러번 실행 가능 | 각각의 실행 인스턴스는 별개의 프로세스 |
스레드(Thread)란?
스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며 이들 스레드는 프로세스의 메모리와 자원을 공유하면서 독립적으로 실행된다. 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위이다.
일반적으로 하나의 프로세스는 하나 이상의 스레드를 포함할 수 있으며 스레드들은 프로세스의 메모리 공간(코드, 데이터, 힙 등)을 공유하면서 동작한다.
프로세스 | 스레드 |
실행 중인 프로그램의 인스턴스 | 프로세스 내에서 실행되는 가장 작은 실행 단위 |
각 프로세스는 독립적인 메모리 공간을 가짐 | 동일 프로세스 내에서 메모리 공간을 공유 |
CPU, 메모리 등 다양한 시스템 자원을 독립적으로 사용 | CPU만을 주로 사용하며 다른 스레드와 자원을 공유 |
여러 프로세스가 독립적으로 동시 실행 가능 | 여러 스레드가 하나의 프로세스 내에서 동시 실행 가능 |
프로세스 간의 충돌이 없음 | 동기화 문제로 인해 충돌 가능성이 있음 |
728x90