학습

[면접복기] 쓰레드와 프로세스의 차이는 무엇인가요?

물빠진떡 2024. 9. 17. 17:03

서론

쓰레드와 프로세스의 차이에 대한 면접 질문을 받았었다
CS 스터디할때 분명 한 기억은 있는데 너무 횡설수설 대답한 것 같았다

쓰레드

운영체제에서의 작은 실행의 최소 단위

하나의 프로세스에서는 여러개의 스레드가 메모리를 공유하여 사용할 수 있다
생성 속도가 빠르고 작은 메모리를 소모하며 정보 교환이 쉽고 컨텍스트 스위치가 빠르다
자원 선점과 동기화 문제가 있다

프로세스

프로세스또한 실행의 단위중 하나이다
쓰레드보다는 큰 개념이라고 생각하면 좋다

차이가 있다면 프로세스는 독립적인 단위이다
각각의 프로세스가 메모리를 공유하지 않고 각자의 데이터와 스택을 가지고, 보호받는다.
쓰레드와 다르게 생성시 운영체제에게 PCB (Proccess Control Block)과 메모리 영역을 할당받고 초기화를 해야한다

또한 프로세스 내부의 데이터를 보호하기 때문에 프로세스끼리의 통신과정에서 프로세스간 통신이 필요하거나 공유 메모리를 생성하여 주고 받아야한다 (해당 개념은 전역 변수를 통한 통신, 파일 통한 통신, 파이프를 통한 통신, 소켓 통신 등이 있다)

쓰레드 vs 프로세스

쓰레드는 스택영역은 따로지만 코드 영역과 데이터 영역은 하나를 공유

쓰레드 프로세스
공유 영역 데이터, 스택 공유하지 않음
생성속도 빠름 느림
정보교환 쉬움 복잡
메모리 작음 비교적 큼
컨텍스트 스위치 빠름 느림
자원 선점 문제 독립적이므로 문제없음
동기화 문제 독립적이므로 문제없음