반응형
프로세스와 스레드의 차이점
✓ 프로세스 : 운영체제로부터 자원을 할당받는 작업의 단위
✓ 스레드 : 프로세스가 할당받은 자원을 이용하는 실행의 단위
프로세스 (Process)
[그림 1] 독립적인 프로세스
✓ 정의 : 실행 중인 프로그램에 대한 인스턴스
✓ 프로세스는 운영체제로부터 각각 독립된 자원(code, data, stack, heap, PC register 등)을 할당받는다.
✓ 각 프로세스는 최소 1개 이상의 쓰레드를 가지고 있다.
✓ 다른 프로세스의 자원에 접근하려면, 프로세스 간 통신(IPC)을 이용해야 한다.
✓ 프로세스와 프로그램의 차이
- 프로그램 : Passive entity, 명령어 리스트를 지닌 실행 파일 클래스
- 프로세스 : Active entity, 메모리에 적재되어 프로그램 카운터와 자원을 가진 인스턴스
[그림 2] 메모리 상의 프로세스
스레드 (Thread)
[그림 3] 프로세스 내의 스레드
✓ 정의 : 한 프로세스 내에서 동작되는 여러 실행의 흐름
✓ 프로세스의 특성을 가지고 있기 때문에, 경량 프로세스(LWP, Lightweight Process)라고도 한다.
✓ 프로세스 내의 코드, 데이터, 힙 등의 자원을 공유하면서 병렬성을 높일 수 있다.
✓ 스택과 레지스터는 각 스레드가 별도로 할당받으며, 이는 독립적인 실행 흐름을 가능하게 한다.
✓ 기본적으로 하나의 프로세스가 생성되면 하나의 스레드가 같이 생성되며, 이를 메인 스레드라고 부른다.
✓ 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 이를 멀티 스레드라고 부른다.
✓ 스레드의 장단점
- 장점 : 자원 공유를 통해 시스템 자원 소모를 줄일 수 있음, Context Switch에 대한 오버헤드가 감소.
- 단점 : 동기화 문제가 발생할 수 있음, 프로그램 디버깅이 어려울 수 있음.
반응형