웹개발/개념

멀티쓰레드

Kang_hobin 2022. 10. 12. 22:58
Multi Thread

일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행한다.

멀티 쓰레드는 당연하게도 둘 이상의 스레드가 동시에 작업하는 것을 의미한다.

그리고 멀티 프로세스(Multi Process)는 여러 개의 CPU를 사용하여 여러 프로세스를 실행하는 것을 의미한다.

 

멀티 프로세스는 각 프로세스가 독립적인 메모리를 가지고 동작하지만, 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유한다는 점에서 차이가 있다.

 

Context Switching

컴퓨터에서 동시에 처리할 수 있는 최대 작업 수는 CPU의 코어 수와 동일하다.

만약 CPU의 코어 수보다 많은 스레드가 실행 된다면 각 코어가 정해진 시간동안 여러 작업을 번갈아 가면서 수행하게 된다.

 

이때 각 스레드가 작업을 번갈아 가면서 서로 교체될 때 스레드 간의 Context Switching이 발생한다.

Context Switching이란 현재까지의 작업 상태나 다음 작업에 필요한 각종 데이터를 저장하고 읽어오는 작업을 의미한다.

 

단순히 의미하면 다음 스레드로 작업을 교체할 때 데이터를 저장하고 교체할 스레드의 데이터를 읽어오는 등의 작업을 의미하는데, 만약 단순하고 많은 양의 계산을 실행할 시 Context Switching에 시간을 소요하는 것 보다 싱글 스레드로 동작하는 것이 더 효율적일 수 있다는 점이다.