코다람쥐 2022. 3. 9. 12:39

멀티쓰레드 비유

고급 레스토랑 프로세스(프로그램)
로봇 직원 쓰레드
영혼 CPU코어

 

고급 레스토랑에서 영혼은 로봇 직원을 움직인다.

= 프로그램에서 CPU코어는 쓰레드를 움직인다.

 

하나의 영혼은 한개의 로봇밖에 조종할 수 없다

= 하나의 CPU코어는 한 개의 쓰레드만 실행할 수 있다.

 

하나의 영혼으로 다수의 로봇 직원을 움직이려면 영혼이 빠른 속도로 로봇의 몸을 갈아타면서 로봇을 조종하면 동시에 여러개가 움직이는 것처럼 보인다.

= 하나의 CPU코어가 다수의 쓰레드를 움직이려면 CPU코어가 빠른 속도로 쓰레드를 번갈아가면서 실행하면 된다.

 

로봇 직원에 우선순위를 부여하여 중요한 로봇직원에는 영혼이 더 많이 들어간다.

= 많은 일을 하는 쓰레드에는 CPU코어가 실행하는 빈도를 더 높인다(스케줄링의 개념)

 

우선순위가 낮은 로봇은 영혼이 잘 안들어가는 문제점이 생긴다.

= 우선순위가 낮은 쓰레드는 실행이 잘 안되는 문제점이 생긴다.(기아현상의 개념)

기아현상을 해결하기 위해서는 CPU코어의 숫자를 늘리면된다.

 

영혼이 로봇의 몸에 빙의하는 것은 부담이 많이 된다.

= CPU코어가 쓰레드 옮기면서 실행하는 것에는 성능의 부담이 된다.

쓰레드가 무작정 많은 것이 아닌 CPU코어의 개수만큼 쓰레드가 있는 것이 성능적인 면에서 가장 이상적이다.

 

쓰레드가 메모리를 사용할 때 heap영역은 공유하여 사용하지만 스택영역은 각자 사용한다.

멀티쓰레드의 문제점.

많은 일들을 쓰레드가 나눠서 하면 분명 더 빠른속도로 작업을 처리할 수 있지만 멀티쓰레드를 제대로 다루지 못하면

한 가지 작업에 모든 쓰레드가 동시에 몰려들어서 제대로 작동하지 못하는 문제점이 발생할 수 있다.

따라서, 우리가 이러한 문제점 등을 방지하기 위해서 쓰레드를 잘 관리해줘야한다.