-
[CS] 멀티 스레드CS 2022. 12. 27. 17:18728x90
스레드
- 프로세스가 할당받은 자원을 이용하는 실행의 단위
- 하나의 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 Heap, Data, Code 영역을 공유
- ( 멀티 스레드의 경우, 이 프로세스의 영역들을 공유 )
- 하나의 프로세스를 안에서 다양한 작업을 담당하는 최소 실행 단위를 스레드라고 한다.
- 멀티 스레딩의 경우, 스레드 간의 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시킨다.
멀티스레드
멀티스레드 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다.
이러한 작업 ( 프로그램 둘 이상을 동시에 실행 )은 컨텍스트 스위칭을 통해서 이뤄진다.
컨텍스트 스위칭은 엄청 빠르게 일어나면서, 유저의 시선에서는 프로그램이 동시에 수행되는 것 처럼 보인다
멀티스레드의 장점
- 응답성 → 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복한다. 다만, 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용이 발생한다
- 경제성 → 프로세스 내 자원들과 메모리 공유하기에 메모리 공간과 시스템 자원 소모 감소
멀티스레드의 단점
- 컨텍스트 스위칭, 동기화 등으로 오버헤드 발생해서 스레드 생성시간 증가
- 자원을 공유하기에 락을 위한 동기화 필요
- 멀티 스레딩을 위한 OS의 지원 필요