Page 32 -
P. 32

그림 1-20 CPU 개수(비둘기 집)보다 Runnable 스레드 개수(비둘기)가 많으면?




























               다만 Runnable 상태(실행 중)의 스레드가 CPU 개수보다 많을 경우 성능 문제가 될 뿐입니다.

               Waitable 상태(잠자는)의 스레드는 이러한 성능 문제가 없습니다. 실제로 대부분 운영체제에는
               CPU 개수보다 훨씬 많은 수의 프로세스가 있고, 각 프로세스는 스레드를 최소 1개는 갖고 있으
               므로 성능에 큰 문제가 되어야 할 텐데, 그렇지 않은 이유는 바로 이 때문입니다. 다시 말해서 여
               러분이 만드는 프로그램의 스레드가 많더라도, 정작 Runnable인 스레드 개수가 CPU 개수보다
               적다면 별 문제가 없다는 이야기입니다.

               주의할 점이 또 하나 있습니다. 프로그램이 어디까지 실행된 후에 컨텍스트 스위치가 일어나는지

               와 관련해서입니다.
               컴퓨터가 실행하는 명령어는 기본적으로 기계어 명령어 단위로 실행합니다. 컨텍스트 스위치도
               마찬가지로 기계어 명령어 단위로 일어납니다. 다시 말해서 기계어 명령어를 실행하다 말고 컨텍

               스트 스위치를 하지 않습니다. 한 기계어 명령어를 다 실행하고 나면 컨텍스트 스위치를 합니다.
               즉, 컨텍스트 스위치는 기계어 명령어 단위로 이루어진다고 보면 됩니다.

               여러분이 C++나 다른 언어로 프로그래밍을 하는 경우, 한 구문은 실제로 기계어 명령어 여러 개
               로 컴파일됩니다. 불행하게도 컨텍스트 스위치는 기계어 명령어 단위로 일어납니다. 따라서 여러
               분 프로그램 소스의 한 줄 구문 안에 있는 것을 실행하다 말고 컨텍스트 스위치를 할 가능성이 있
               는 것입니다.





         040
   27   28   29   30   31   32   33   34   35   36   37