고급 식당을 운영한다고 생각해보면 좋다.
식당을 운영해본다고 가정해보자.
식당의 직원이 있지만 영혼이 있어야 직원이 움직일 수 있다.
위와 같이 식당의 직원이 4명이 있지만 영혼은 하나 밖에 없기 때문에 한번에 한명의 직원명 동작할 수 있따.
실제 컴퓨터에서는 위와 같이 대응이 된다.
그리고 위와 같이 식당을 운영하는 것과 실제 컴퓨터가 동작하는 것이 대응한다.
운영체제의 스케줄링을 통해 다양한 프로세스를 돌아가면서 실행한다.
단, 프로세스의 우선 순위에 따라 더 많이 실행됨
기아 현상 → 우선 순위가 낮아서 잘 실행되지 않음
[운영체제 커널 모드]
윈도우즈의 2가지 영역
프로그램을 실행하는 영역(유저 영역)
커널 모드 → 윈도우즈의 핵심 로직이 돌아가는 영역
단일 코어만으로는 발연 문제를 해결하지 못해서
코어의 개수를 늘리는 방식을 사용
멀티 코어를 사용해서 여러 쓰레드를 동시에 실행할 수 있게 됨
하지만 쓰레드를 무작정 늘리는 것 → 문제 발생
빙의 즉 코어가 하나의 쓰레드를 실행하고 다른 쓰레드로 옴겨 타는 과정이 굉장히 무겁기 때문
코어 수 만큼 쓰레드를 실행하는 것이 가장 이상적
실제 게임 프로그램의 쓰레드 배치
쓰레드는 모두 힙 영역과 데이터 영역을 공유
스택만 따로 분리됨
한쪽으로만 다 몰리는 상황이 나타날 수 있음
쓰레드 관리를 잘못하는 순간 직원이 한명 두는 것보다 못할 수 있음
식당 운영을 1명한 했을 때 잘 돌다가
직원이 100명으로 늘었을 때 관리가 잘 되지 않을 수도 있음
직원들(쓰레드)이 최대한 효율적으로 움직일 수 있게 배치하는 것이 관건