1.4 스레드 정체
CPU가 하나만 있는 기기라고 가정합시다. CPU는 하나인데 어떻게 여러 프로그램이 동시에 실행될 수 있을까요? 아니, 어떻게 여러 프로세스나 여러 스레드가 동시에 실행될 수 있을까요?
예를 들어 보겠습니다. 공장에서 일하는 어떤 사람이 있습니다. 이쪽에서 나사를 조이고 저쪽에서 페인트칠을 해야 합니다. 그리고 상사는 그 사람에게 “두 가지 일을 동시에 하라.”라고 시켰습니다. 나사를 조이는 장소와 페인트를 칠하는 장소는 10m 정도 떨어져 있습니다.
▲ 그림 1-18 두 가지 일을 동시에 하라고 지시
사람들은 보통 이러한 경우 두 일을 정말로 동시에 하지는 않습니다. 먼저 한쪽 일을 다 마친 후 나머지 일을 하기 마련입니다. 일하는 장소 사이에 10m나 떨어져 있으니 말입니다. 10m 이동을 할 때는 한쪽 일이 다 끝나고 나머지 한쪽 일이 남아 있을 때뿐이겠죠.