현생/TCP 소켓 프로그래밍

18-1. 쓰레드란 무엇일까?

푸더기 2022. 2. 16. 22:47
반응형

https://pupuduck.tistory.com/63에서는 멀티프로세스 기반의 서버구현에 대해 다뤘는데, 프로세스의 생성은 select나 epoll에 비해 확실히 구분되는 장점이 있지만 큰 단점들이 있었습니다.

프로세스 생성 자체가 부담스럽다.
두 프로세스 사이에서 데이터 교환을 위해선 별도의 IPC 기법을 거쳐야 한다
컨텍스트 스위칭이 초당 수십번에서 수천번까지 일어난다.

여기서 컨텍스트 스위칭이란 A프로세스와 B프로세스가 있고 메인 메모리에 A프로세스가 있을 때, B프로세스를 실행하기 위해 A프로세스 관련 데이터를 메인 메모리에서 하드디스크로 이동시키고 B프로세스를 메인 메모리에 이동시키는 것입니다. 이 과정이 초당 수십번에서 수천번 일어나는 것은 큰 부담이 아닐 수 없습니다.

 

이 여러 단점을 최소화하기 위해 나타난 것이 쓰레드입니다.

쓰레드의 생성과 컨텍스트 스위칭은 프로세스의 것보다 빠르다.
쓰레드 사이의 데이터 교환은 특별한 기법이 필요 없다.

쓰레드는 위와 같은 장점을 지닙니다.

프로세스의 메모리 구조는 데이터 영역-힙 영역-스택 영역으로 나뉩니다. 프로세스는 전체 영역을 분리시키는 반면 쓰레드는 스택 영역만 분리시키게 되는데, 이 결과 컨텍스트 스위칭 시 스택 영역만 올리고 내리면 되고 데이터 영역과 힙 영역을 통해 데이터를 교환할 수 있습니다.

 

즉, 프로세스와 쓰레드는 다음과 같이 정리할 수 있습니다.

프로세스 : 운영체제 관점에서 별도의 실행흐름을 구성하는 단위
쓰레드 : 프로세스 관점에서 별도의 실행흐름을 구성하는 단위

 

반응형