멀티 코어 프로세서가 여러 프로세스를 동시에 실행할 수 있습니까?


9

멀티 코어 프로세서는 다른 코어를 사용하여 동일한 프로세스의 여러 스레드를 동시에 실행할 수 있음을 이해합니다.
동시에 여러 프로세스를 실행할 수 있습니까 (각 코어가 다른 프로세스를 실행)?

답변:


14

운영 체제 및 응용 프로그램과 관련하여 각 코어는 별도의 프로세서이며 여러 프로세서 를 사용하는 것과 동일한 선호도 규칙 이 적용됩니다 .

프로세스가 실행되는 프로세서 (실제, 코어 또는 하이퍼 스레드)는 운영 체제의 스케줄링 시스템에 따라 다릅니다. 프로세스가 어디에서 언제 실행되어야 하는지를 결정하는 것은이 스케줄링 시스템 ( 친 화성 설정에 영향을받습니다 )입니다. 스케줄러가 적합하다고 판단하면 프로세스와 스레드가 마음대로 프로세서와 코어를 전환 할 수 있습니다.


7

운영 체제에 대한 제한된 지식으로 모든 프로세스에는 적어도 하나의 스레드가 있으며 프로세스 자체가 아니라 예약 된 스레드입니다. 프로세스는 단순히 프로그램 및 실행하도록 설정된 스레드에 대한 정보를 보유합니다. 이런 방식으로 단일 스레드 응용 프로그램은 다중 스레드 응용 프로그램과 동일한 처리 방법을 갖지만 다중 스레드 응용 프로그램은 리소스를 더 잘 사용할 수 있습니다.

예를 들어, 각각 2 개의 스레드가있는 2 개의 프로세스와 하나의 스레드 응용 프로그램이 있으며 이중 코어 프로세서 (또는 이중 CPU에서 모두 작동하지 않음)를 가정합니다.

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

각 스레드는 CPU의 모든 코어에서 예약 가능하며 OS 스케줄러에 의해로드 균형이 조정됩니다.

프로세스 B의 프로세서 선호도를 설정하여 하나의 CPU로 제한하면 해당 프로세스의 모든 스레드가 해당 CPU에 바인딩되어 다른 CPU에서 실행되지 않습니다. 프로세스 C와 동일하게 수행하면 한 번에 하나의 CPU에서만 실행될 수 있으므로 실제 변경은 발생하지 않습니다.


2

짧은 답변:

  1. 예, OS에서 지원하는 경우
  2. 요즘 모든 OS에서 지원합니다.

프로세스 및 스레드 (멀티 스레딩에서와 같이)는 OS 레벨 구성입니다. 스케줄링에서 충분히 낮은 레벨에 도달하면 이들은 사라지고 실행 시간을 얻기 위해 실행 대기열이 많이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.