프로세스와 스레드
프로세스와 스레드는 컴퓨터에서 프로그램을 실행하는 방식과 관련된 개념입니다. 둘의 차이를 이해하기 위해 각각에 대해 설명드리겠습니다.
프로세스(Process):
- 프로세스는 실행 중인 프로그램의 인스턴스입니다.
- 각 프로세스에는 독립된 메모리 공간이 할당됩니다. 이를 프로세스의 가상 주소 공간이라고 합니다.
- 프로세스는 운영 체제에 의해 관리되며, 운영 체제는 프로세스 간의 메모리, CPU 시간, 입/출력 자원 등을 할당합니다.
- 프로세스는 서로 독립적이며, 한 프로세스의 메모리에 다른 프로세스가 직접 접근할 수 없습니다.
- 멀티태스킹 환경에서 여러 프로세스가 동시에 실행될 수 있습니다.
스레드(Thread):
- 스레드는 프로세스 내에서 실제로 작업을 수행하는 단위입니다.
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 이를 멀티스레딩이라고 합니다.
- 스레드들은 프로세스의 자원을 공유합니다. 예를 들어, 같은 메모리 공간(힙 메모리)에 접근할 수 있습니다.
- 스레드 간의 커뮤니케이션과 자원의 공유는 프로세스들 사이에서보다 훨씬 쉽고 빠릅니다.
- 멀티스레딩은 하나의 프로그램이 여러 작업을 동시에 처리할 수 있게 해줍니다.
프로세스와 스레드의 차이점:
- 자원 공유: 스레드는 같은 프로세스 내에서 메모리를 공유하지만, 프로세스는 독립된 메모리 공간을 가집니다.
- 통신: 스레드 간의 통신은 프로세스보다 더 간단하며, 성능 오버헤드가 적습니다.
- 생성과 관리: 스레드의 생성과 컨텍스트 스위칭은 프로세스에 비해 상대적으로 비용이 적게 듭니다.
- 독립성: 프로세스는 각각 독립적으로 실행되며, 다른 프로세스의 오류로부터 보호받습니다. 반면, 하나의 스레드에 문제가 생기면 같은 프로세스 내의 다른 스레드에 영향을 줄 수 있습니다.
간단히 말해, 프로세스는 독립적인 실행 단위이며, 스레드는 프로세스 내에서 실행되는 더 작은 실행 단위입니다. 스레드는 프로세스 자원을 공유하며, 멀티스레딩을 통해 한 프로세스 내에서 여러 작업을 동시에 수행할 수 있게 합니다.
'[F-Lab 멘토링 학습]' 카테고리의 다른 글
| TCP와 HTTP의 차이, OSI 7계층 (1) | 2023.11.11 |
|---|---|
| Public IP vs Private IP (0) | 2023.11.11 |
| Call-by-value vs Call-by-reference (0) | 2023.11.11 |
| (스터디) 파이브 라인스 오브 코드 4장 타입 코드 처리하기 (0) | 2023.11.06 |
| (스터디) 파이브 라인스 오브 코드 리뷰 1-3장 (0) | 2023.11.04 |