"CPU에 코어가 4 개 밖에 없을 때 어떻게 290 개의 프로세스를 가질 수 있습니까?"라는 더 근본적인 질문은하지 않습니다. 이 답변은 약간의 역사입니다. 구체적인 질문에 이미 답변을했지만 큰 그림을 이해하는 데 도움이 될 수 있습니다. 따라서 TL; DR 버전을 제공하지 않을 것입니다.
옛날 옛적에 (1950 ~ 60 년대) 컴퓨터는 한 번에 한 가지 일만 할 수있었습니다. 그들은 매우 비싸고, 방 전체가 가득 차 있었고, 우리는 여러 사람 사이에 그것들을 공유함으로써 그것들을 효율적으로 사용할 수있는 방법이 필요했습니다. 이 작업을 수행하는 첫 번째 방법은 사용자가 컴퓨터에 작업을 제출하고 대기하고, 차례로 실행되고 결과가 사용자에게 다시 전송되는 배치 처리 입니다. 괜찮 았지만 며칠이 걸리는 계산을 원한다면 그 시간 동안 아무도 컴퓨터를 사용할 수 없다는 것을 의미했습니다.
다음 혁신 (1960 ~ 70 년대)은 시분할 이었습니다. 이제 한 작업 전체를 실행 한 다음 다음 작업 전체를 실행하는 대신 컴퓨터는 한 작업을 약간 실행 한 다음 일시 중지하고 다음 작업을 약간 실행합니다. 따라서 컴퓨터는 여러 프로세스를 동시에 실행하고 있다는 인상을 줄 것입니다. 이 방법의 가장 큰 장점은 이제 며칠이 걸리는 계산을 실행할 수 있으며, 계속 중단되기 때문에 더 오랜 시간이 걸리더라도 다른 사람들은 여전히 그 시간 동안 기계를 사용할 수 있다는 것입니다.
이 모든 것이 거대한 메인 프레임 스타일 컴퓨터를위한 것이 었습니다. 개인용 컴퓨터가 인기되기 시작했을 당시부터, 그들은 처음에, 헤이, 매우 강력하고되지 않은 개인 (1980) 생각 한 번에 - 하나의 응용 프로그램을 실행 - 그것은 그들에게 단 한 가지 및 NBDP을 할 수 있으려면 확인을 보였다. 그러나 그들이 더 강력 해지면서 (1990 년대부터 현재까지) 사람들은 개인용 컴퓨터도 시분할하기를 원했습니다.
그래서 우리는 여러 개의 프로세스를 동시에 한 번에 하나씩 잠시 실행 한 후 일시 중지하여 여러 프로세스를 동시에 실행한다는 착각을 일으킨 개인용 컴퓨터로 끝났습니다. 스레드는 본질적으로 동일합니다. 결국 사람들은 개별 프로세스조차도 여러 작업을 동시에 수행한다는 착시를 원했습니다. 처음에는 응용 프로그램 작성자가 스스로 처리해야했습니다. 그래픽을 업데이트하는 동안 조금만 보내고, 일시 중지하고, 계산하는 동안 조금만 보내고, 일시 중지하고, 다른 것을하면서 약간을 보내십시오 ...
그러나 운영 체제는 이미 여러 프로세스를 관리하는 데 능숙했으며 이러한 하위 프로세스 (스레드)를 관리하도록 확장하는 것이 합리적이었습니다. 이제 모든 프로세스 (또는 응용 프로그램)에 하나 이상의 스레드가 포함되어 있지만 일부는 여러 개 또는 여러 개가 포함 된 모델이 있습니다. 이러한 각 스레드는 다소 독립적 인 하위 작업에 해당합니다.
그러나 최상위 수준에서 CPU는 여전히이 스레드가 모두 동시에 실행되고 있다는 착각을 나타냅니다. 실제로는 조금씩 실행하고 잠시 멈추고 조금만 실행할 다른 것을 선택하는 등의 작업을 수행합니다. 최신 CPU는 한 번에 둘 이상의 스레드를 실행할 수 있습니다. 그래서에서 실제 현실, 운영 체제는 동시에 모든 코어의 "비트에 대한 다른 실행, 조금, 일시에 출마 뭔가, 일시 중지"이 게임을하고있다. 따라서 원하는만큼 많은 스레드를 가질 수 있지만 응용 프로그램 디자이너는 언제든지 스레드를 거의 일시 중지합니다.