2011-01-31 3 views
2

시스템에 프로세서가 두 개인 경우를 가정 해 보겠습니다. 스레드 A는 P1에서 실행 중이고 스레드 B는 P2에서 실행 중입니다. 스레드 A가 다시 실행을 시작하면, 그것은 P2에서 실행되는스레드 및 CPU 선호도

스레드 A는 Sleep(10000);

호출이 가능합니까?

예인 경우 누가이 전환을 결정합니까? 그렇지 않다면, 왜 안 되니?

프로세서는 모든 스레드가 실행 중이거나 OS가 각 스레드를 프로세서에 바인딩하여 전체 수명 동안 일부 데이터를 저장합니까?

답변

1

가능합니다. 이것은 운영 체제 프로세스 스케줄러에 의해 결정되며 실행중인 응용 프로그램에 종속 될 수도 있습니다. 이전에 실행중인 스레드에 대한 정보는 캐시에있는 것을 제외하고 프로세서에 의해 보관되지 않습니다.

0

이것은 많은 요소에 따라 다르며 특정 운영 체제에 따라 다르게 작동합니다. 참조 : Processor AffinityScheduling Algorithms. Windows에서는 작업 관리자를 통해 특정 프로세스를 프로세서 코어에 고정시킬 수 있습니다.

0

예, 가능합니다. 궁극적으로 스레드는 CPU (또는 CPU 코어)를 프로세스 (실행 파일)에서 상속 받지만, 운영 체제에서는 프로세스가 현재 퀀텀 (시간 조각)으로 실행되는 CPU 또는 CPU 코어가 다음과 같이 스케줄러에 의해 결정됩니다.

0

운영체제 -Oisin

http://en.wikipedia.org/wiki/Scheduling_(computing)

는의 스레드를 실행하고, 수면에 의한 컨텍스트 스위치()가 특히 용이, 스레드의 수명 동안 변경 될 수있는 프로세서를 결정한다. 시스템이로드되어 두 스레드가 동일한 프로세서 (또는 코어)에서 다른 시간에 실행되는 경우 완전히 가능합니다. 또는 시스템에로드가없는 경우 두 스레드가 별도의 프로세서에서 계속 실행될 수 있습니다.

관련 문제