멀티 코어 PC에서 단일 스레드 프로세스를 실시간 우선 순위로 설정하면 어떻게됩니까?


0

Windows 10 운영 체제를 언급하고 있지만 대답은 OS 독립적 일 수 있습니다.

Windows에서 실시간 우선 순위 레벨은 가장 높은 우선 순위 레벨입니다. 예를 들어 키보드 및 마우스 입력을 처리하는 데 사용됩니다.

내가 온라인에서 읽은 내용에서 :

CPU 집약적 프로세스를 실시간으로 설정하면 OS가 이러한 입력을 처리하기에 충분한 CPU 시간을 얻지 못하므로 키보드와 마우스가 응답하지 않게됩니다.

기본적으로 실시간 우선 순위로 설정된 프로세스는 CPU를 작업 관리자뿐만 아니라 다른 프로세스에도 제공하지 않고 실행됩니다. 문제가 발생하면 중지 할 수 없습니다.

예를 들어이 Microsoft 게시물을 참조하십시오 . 100 % CPU 프로그램을 실시간 우선 순위로 설정하면 요청한 내용이 표시됩니다 .

질문:

따라서이 모든 것이 내 컴퓨터 에서이 우선 순위 수준을 테스트하는 것을 두려워 하므로이 질문을 직접 시도하는 대신 질문합니다. 또한 장난감 스크립트를 사용하는 것보다 이론적 인 대답이 미래의 증거로 보입니다.

실시간 우선 순위로 단일 스레드 프로세스를 실행하면 완료 될 때까지 중지하지 않고 실행됩니다. 그러나 두 번째 코어가있는 경우이 두 번째 코어 덕분에이 프로세스가 실행되는 동안 내 PC를 사용할 수 있습니까?

그렇다면, 이것은 실제 적용이 있습니다. 한 코어에서 가능한 빨리 다른 코어와 함께 PC를 사용할 수 있어야하는 계산 작업을 실행할 수 있습니다.


왜 downvote?
Julien__

답변:


1

실시간 우선 순위로 단일 스레드 프로세스를 실행하면 완료 될 때까지 중지하지 않고 실행됩니다.

과장입니다. 사실이 아닌 몇 가지 사항이 있습니다.

  1. 작업 관리자에서 "실시간 우선 순위"로 표시되는 것은 실제로 프로세스 스레드가 액세스 할 수있는 다양한 우선 순위입니다. 하나의 "실시간"프로세스 스레드가 다른 "실시간"프로세스 스레드보다 높은 우선 순위를 가질 수 있습니다. 여기에 내 답변을 참조 하십시오 . 그러나 "실시간"클래스 내의 모든 우선 순위는 다른 모든 클래스의 우선 순위보다 높습니다.

  2. 대부분의 스레드는 CPU에서 모든 코드 회전에 소비하지 않으므로 우선 순위에 관계없이 CPU의 100 %를 사용하지 않습니다. 대부분의 스레드는 때때로 무언가를 기다릴 기회가 있습니다. 일반적으로 I / O가 완료되기를 기다리거나 하드 페이지 오류가 해결되기를 기다리거나 다른 스레드가 더 이상 기다릴 필요가 없음을 나타냅니다. 다른 스레드는 동일한 프로세스 또는 다른 스레드에있을 수 있습니다.

  3. (실시간 클럭에서 인터럽트 포함) 하드웨어 장치에서 인터럽트 처리의 첫 번째 단계에 관계없이 일이 어떤 스레드 기반 코드. 우선 순위는 스레드의 속성이므로이 항목에는 "우선 순위"가 없지만 인터럽트는 스레드에 의해 처리되지 않습니다. 후자의 우선 순위에 관계없이 스레드 기반 코드보다 우선합니다. 이 작업에 사용 된 시간은 Windows 10 작업 관리자의 세부 사항 탭에서 "시스템 인터럽트"로 볼 수 있습니다.

실시간 우선 순위 클래스는 다음과 같은 방식으로 다른 우선 순위 클래스와 다릅니다.

  1. 물론 다른 모든 우선 순위 클래스보다 우선 순위가 높습니다.

  2. 이 클래스의 프로세스 스레드는 기본적으로 다른 클래스의 프로세스 스레드와 마찬가지로 최근 활동에 따라 우선 순위가 자동으로 조정되지 않습니다. 스레드 우선 순위 조정은 프로그래밍 방식으로 끄거나 켤 수 있지만 기본적으로 비 실시간 프로세스에 대해서는 켜져 있습니다.

그러나 두 번째 코어가있는 경우이 두 번째 코어 덕분에이 프로세스가 실행되는 동안 내 PC를 사용할 수 있습니까?

아마. 실제로 하이퍼 스레딩이 활성화 된 코어가 하나만 있어도 마찬가지입니다.

실시간 우선 순위 클래스를 올바르게 사용하는 것은 CPU를 많이 사용하는 프로세스에는 적합하지 않습니다. 오히려, 우리는 이벤트에 빠르게 대응해야하는 작업에 높은 우선 순위를 사용합니다. 이러한 이벤트에 대한 집중적 인 CPU 기반 작업은 대화식 사용자의 방해가되지 않도록 낮은 우선 순위, 이상적으로는 "정상"미만으로 수행해야합니다.


고마워 Jamie, 나는 당신의 대답이 얼마나 상세한지 사랑합니다.
Julien__

1

기본적으로 실시간은 매우 우선 순위가 높으며 필요하지 않으면 수행하지 않아야합니다. 사용 가능한 모든 리소스를 사용하는 프로세스를 향상시키려는 경우 키보드 및 마우스를 언급 한 기본 프로세스도 적용되기 때문입니다. 이로 인해 욕심 많은 프로세스를 중단하기가 어려울 수 있습니다.

이상적으로 우선 순위가 아닌 코어를 할당하는 것을 사용해야합니다. 우선 순위는 전체 CPU에 영향을줍니다. 예를 들어 VBox를 사용하는 경우 스레드 수를 높게 설정하면 멀티 태스킹 및 우선 순위 설정과 동시에 사용하는 것이 훨씬 효과적입니다.

TL; DR CPU를 많이 사용하는 작업으로 멀티 태스킹하는 경우 작업에 코어를 할당하고 우선 순위를 실시간으로 재정의하지 마십시오. 필요한 경우 가상화를 사용하여 리소스를 분할하면 도움이 될 수 있습니다.

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