DEV_Larva
프로세스와 스레드의 차이점 본문
반응형
프로세스와 스레드의 차이점은 무엇인가요?
문제 속 단어 정리
프로세스:
- 운영체제로부터 자원을 할당받은 작업의 단위.
- 메모리에 적재되고 운영체제의 자원을 할당받아 프로그램이 실행되고 있는 상태.
스레드:
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.
- 프로세스 내부에서 실제로 작업을 수행하는 주체.
- 모든 프로세스에는 한 개 이상의 스레드가 존재.
프로세스와 스레드를 가장 쉽게 표현하자면 카페에 일하고 있는 직원을 프로세스라고 한다면 아메리카노를 만드는 프로세스, 자몽에이드를 만드는 프로세스, 등등 다양한 음료를 만드는 과정에 대한 프로세스가 있을 수 있다. 여기서 컴퓨터는 프로세스마다 자원을 분할하여 할당하기 때문에 각각의 프로세스는 섹션으로 나눠져 아메리카노를 만들기 위해 원두를 그라인드를 하는 스레드를 진행하는 동안 자몽에이드 원액을 컵에 따르는 스레드도 진행될 수 있는 것이다.
본인이 사용하는 컴퓨터에서 직접 프로세스, 스레드 상황을 모니터링할 수 있다. 맥북에는 기본적으로 설치되어 있는 활성 상태 보기를 이용하면 된다. (윈도우는 작업 관리자)
프로세스와 스레드의 차이점
1. 메모리 공유
- 운영체제는 프로세스마다 독립된 메모리 영역에 Code, Data, Stack, Heap의 구조로 할당해준다. 여기서 독립된 메모리 영역으로 할당하기 때문에 서로 다른 프로세스끼리는 접근할 수 없게 된다.
- 스레드는 같은 프로세스 내에서 메모리를 공유하므로, 스레드 간 데이터를 주고받을 수 있게 된다. 하지만 이때 동시 접근 시 발생할 수 있는 충돌을 관리해야 한다.
2. 자원소모
- 프로세스는 생성과 종료 시에 메모리와 CPU 자원을 많이 소비한다.
- 스레드는 프로세스 내의 자원을 공유하기 때문에 생성 및 스위칭 시 프로세스보다 적은 자원을 사용하게 된다.
3. 특징
- 프로세스의 경우 하나의 프로세스가 문제가 발생해도 다른 프로세스에 영향을 주지 않는다. 그만큼 안정성이 높지만 자원을 많이 소비한다.
- 스레드는 프로세스와 반대로 프로세스 내에서 자원을 공유하기 때문에 하나의 스레드에 문제가 발생하면 해당 프로세스의 모든 스레드에 영향을 주게 된다.
요약하자면 프로세스는 독립적인 메모리와 자원을 사용하는 프로그램의 실행 단위이고, 스레드는 프로세스 내에서 메모리를 공유하는 작은 실행 단위이다.
Reference
https://www.tcpschool.com/java/java_thread_concept
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
반응형
'CS' 카테고리의 다른 글
MVC 패턴 (0) | 2024.11.23 |
---|---|
싱글톤 패턴(Singleton Pattern) (0) | 2024.11.21 |
TCP와 UDP (0) | 2024.11.14 |
VIPER (1) | 2024.09.18 |