반응형
프로세스와 스레드
프로세스 ( Process )
- 운영체제에서 실행 중인 프로그램의 인스턴스이다.
- 독립된 메모리 공간을 가지며, 코드, 데이터, 스택, 힙 등의 자원을 분리하여 관리한다.
- 개별적인 실행 환경을 제공하므로 여러 프로세스 간에 데이터 공유가 어렵고, 프로세스 간 통신(IPC)이 필요하다.
- 프로세스 간에는 각각 독립된 CPU 자원을 할당받아 실행된다.
스레드란
- 스레드는 프로세스 내에서 실행되는 작은 실행 단위이다.
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드 간에는 같은 프로세스의 자원을 공유할 수 있다.
- 스레드는 같은 프로세스의 메모리 공간을 공유하므로 데이터 공유가 쉽다.
- 스레드는 프로세스 내에서 동시에 실행될 수 있으므로 멀티스레딩을 통해 병렬성을 구현할 수 있다.
- 스레드는 프로세스의 자원을 공유하기 때문에 스레드 간의 동기화와 관련된 문제에 주의해야 한다.
프로세스와 스레드의 차이점
메모리 공간
- 프로세스는 독립된 메모리 공간을 가지고 있으며, 스레드는 같은 프로세스 내에서 메모리를 공유한다.
통신 및 데이터 공유
- 프로세스 간에 데이터 공유 및 통신은 IPC 기술을 사용해야 하지만,
스레드는 같은 프로세스 내에서 간단하게 데이터를 공유할 수 있다.
생성 및 소멸 비용
- 스레드의 생성 및 소멸 비용이 프로세스보다 낮다.
독립성
- 프로세스는 독립적으로 실행되므로 하나의 프로세스가 충돌하더라도 다른 프로세스는 영향을 받지 않는다.
반면 스레드는 같은 프로세스 내에서 실행되므로 하나의 스레드에서 오류가 발생하면
다른 스레드에도 영향을 줄 수 있다.
요약
프로세스는 독립적인 실행 환경을 가지며 메모리를 분리하여 운영되는 프로그램 인스턴스이다.
스레드는 프로세스 내에서 동작하며 메모리를 공유하여 작은 실행 단위를 나타낸다.
프로세스 간 통신은 IPC를 필요로 하지만, 스레드는 같은 프로세스 내에서 간단한 데이터 공유가 가능하다.
프로세스는 독립성과 안정성을 제공하고, 스레드는 병렬성을 쉽게 구현할 수 있다.
반응형
'[백엔드] 기술면접' 카테고리의 다른 글
[백엔드] 기술 면접 Top30 - #25 쿼리 최적화 (57) | 2023.10.05 |
---|---|
[백엔드] 기술 면접 Top30 - #24 멀티 프로세스와 멀티 스레드 (60) | 2023.10.04 |
[백엔드] 기술 면접 Top30 - #22 TDD (81) | 2023.10.02 |
[백엔드] 기술 면접 Top30 - #21 CI/CD (73) | 2023.10.01 |
[백엔드] 기술 면접 Top30 - #20 클래스형과 함수형의 차이 C++ (71) | 2023.09.30 |