[운영체제] 스레드
Updated: Categories: CS스레드에 대해 알아보자
스레드란?
정의
- 프로세스의 실행 단위
- 프로세스는 최소 한 개 이상의 스레드를 가지며, 이를 메인 스레드라 함
역할
- 프로세스보다 가벼워서 생성 및 제거가 용이함
- 프로세스를 생성할 때 메모리 할당에 많은 자원이 필요함.
- 프로세스의 처리 속도를 높이기 위해 하나의 프로세스가 수행해야 할 작업을 스레드가 나누어 수행할 수 있도록 한다.
- ex) 1개의 프로세스 내에 2개의 스레드가 존재한다면 이는 2개의 프로세스와 같은 처리속도를 낸다.
- 모든 스레드는 프로세스의 메모리 공간을 공유하기에 빠름
구조
- 스레드는 프로세스 내에서 코드, 데이터, 힙 영역을 공유한다.
- 스택 영역과 레지스터은 각 스레드마다 따로 할당 받는다.
멀티 프로세스와 멀티 스레드
멀티 프로세스
- 정의
- 하나의 프로그램을 여러개의 프로세스로 구성
- 각 프로세스가 하나의 task를 맡아서 수행
- 장점
- 자식 프로세스에 문제가 생겨도 다른 프로세스에 영향이 가지 않음
- 단점
- 프로세스간 메모리를 공유할 수 없기에 문맥교환이 발생 -> 오버헤드 발생
- 프로세스간 통신 비용이 큼
멀티 스레드
- 정의
- 하나의 프로세스를 여러개의 스레드로 구성
- 각 스레드가 하나의 task를 맡아서 수행
- 장점
- 프로세스 메모리를 공유하므로 자원 소모가 줄어듬
- 스레드간 통신 비용이 적어 문맥교환에 용이 (스택 영역만 변경하면 됨)
- 단점
- 하나의 스레드에 문제가 생기면 프로세스 전체가 영향 받음
- 메모리를 공유함에 있어 동기화 문제가 발생할 수 있음