멀티쓰레드 개론

Eunho Bae·2022년 2월 23일
0

한 개의 CPU 코어는 단 하나의 쓰레드를 실행시킬 수 있다.

  • 싱글코어를 가지는 CPU가 여러 프로그램을 동시에 띄어서 실행시킬 수 있는 방법은 아주 짧은 시간동안 여러 프로그램(프로세스)들을 옮겨다니며 실행하면 된다. 이렇게 하면 동시에 여러 프로그램들이 동작하는 것처럼 보인다.
  • CPU의 코어 하나의 성능을 높이지 말고 코어의 개수를 늘리는 식으로 발전을 해왔다. 무조건 쓰레드를 늘리는 것이 성능을 좋아지게 만든다는 보장은 없다. 딱 코어 수 만큼의 쓰레드를 실행시키는게 가장 이상적이라고 한다. (한 코어당 하나의 쓰레드)

스케쥴링

  • 윈도우의 핵심적인 로직들이 실행되는 커널모드에서 어떤 프로그램들을 실행시킬지 정해준다.

기아현상

  • 모든 프로그램들을 모두 똑같은 시간을 할당해주지 않고 우선순위를 높여서 어떤 한 프로그램에 많은 시간을 할당해주기도 하는데, 이렇게 한다면 나머지 프로그램들이 잘 실행이 되지 않는 기아현상이 발생한다.

멀티쓰레드 문제

각 쓰레드들은 각자의 고유한 스택영역을 할당받아 사용한다.
그리고 쓰레드들은 힙 영역(new)과 데이터영역(static 변수)을 공유해서 사용하게 된다.

이 말은 공용으로 사용하는 영역에 접근하는 것이 문제가 될 수 있다는 말이다.

  • 직원을 한 명만 고용해서 식당을 운영하면 관리가 쉽지만, 직원을 100만명 두고 식당을 운영한다면, 직원들끼리도 서로 헷갈려서 방금 주문 받은 테이블에 또 다른 직원이 찾아가 주문을 받는 상황도 펼져질 수 있을 것이다.

따라서 쓰레드들을 어떻게 하면 효과적으로 관리할 수 있을지 고민해봐야 한다.

profile
개인 공부 정리

0개의 댓글

관련 채용 정보