스레드
스레드란?
- 프로세스를 구성하는
실행 흐름의 단위
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
프로세스와 스레드
- 단일 스레드 프로세스 (실행 흐름이 하나인 프로세스)
- 멀티 스레드 프로세스 (실행 흐름이 여러 개인 프로세스)
스레드의 구성 요소
- 스레드 ID
- 프로그램 카운터를 비롯한 레지스터 값, 스택 등
- 실행에 필요한 최소한의 정보 값
프로세스의 자원을 공유하면서 실행된다. (코드, 데이터, 힙, 파일 정보 등)
리눅스에서는 프로세스와 스레드로 구분짓지 않고 ‘테스크’로 사용한다.
최근 OS는 프로세스가 아닌 스레드 단위로 CPU에게 일을 수행시킨다.
멀티 프로세스 VS 멀티 스레드
단일 프로세스 여러개 vs 하나의 프로세스를 여러 스레드로 실행
어떤 차이가 있을까?
프로세스끼리는 자원을 공유하지 않지만, 스레드끼리는 프로세스의 자원을 공유한다.
하지만 프로세스 간 통신 (IPC) 가 가능하긴 하다. (파일 / 공유 메모리 를 통한 IPC)
- 멀티 프로세스 : 독립 실행
- 멀티 스레드 : 자원 공유 (협력과 통신에 유리하지만, 문제가될 수도 있다.)