OS는 각 프로세스를 별도의 코어에 할당합니까?


15

네, 쿼드 코어를 피한다는 고전적인 주장을 알고 있습니다. 응용 프로그램 수준에서 대부분의 응용 프로그램은 여러 코어 용으로 작성되지 않았습니다. 대부분의 데스크톱 소프트웨어는 병렬화가 필요하지 않습니다.

그러나 OS 수준에서는 OS가 여러 코어에 걸쳐 프로세스를 분할하는 것이 분명해 보입니다. 이것이 그 자체로 더 많은 코어를 얻는 것에 대한 논쟁이 아닌가? 많은 상황에서 도움이되지 않습니까? CPU를 많이 사용하는 몇 가지 작업이 진행됩니다. 이러한 프로세스는 각각 코어의 100 %를 차지할 수 있지만 여전히 웹을 탐색하고 마지막 코어의 수퍼 유저에 대해 질문 할 수 있습니다.


이 질문과 답변의 기본 흐름은 단일 프로세스가 단일 스레드라는 가정입니다. 많은 경우에 해당되지 않습니다. 프로세스가 단일 스레드 인 경우에도 여러 시스템 라이브러리 / dll이 자체 스레드를 추가합니다.
harrymc

답변:


12

OS는 개별 단일 스레드 프로세스를 여러 코어로 분할 할 수 없지만 (응용 프로그램이 실행중인 코어를 변경할 수는 있지만 다른 질문입니다) 각각 자체 코어에서 여러 프로세스를 실행할 수 있습니다. 따라서 백그라운드에서 여러 개의 프로세서 중심 응용 프로그램을 실행하는 경우 다른 응용 프로그램을 실행하는 데 거의 또는 전혀 사용하지 않는 예비 코어가 여전히있을 수 있습니다.


여기서 핵심 단어는 경우 여러 개의 프로세서 집약적 인 응용 프로그램을 - 즉, 대부분의 사용자에게 일반적이지 않은 상황이다.
Gilles 'SO- 악마 그만해'

답변 주셔서 감사합니다. 네, 후자의 경우는 제가 설명하려고하는 것입니다.
Doug T.

3

@heavyd의 답변에 추가하기 위해서는 OS가 프로세스의 어느 부분을 병렬로 실행할 수 있는지 여부와 그렇지 않은 부분을 결정할 수있는 능력이 없기 때문입니다. 프로그램이 병렬 코어에서 실행되도록 설계되지 않은 경우 응용 프로그램 내에 동시에 순차적으로 실행되도록 설계된 루틴이있을 수 있습니다. 이로 인해 모든 종류의 문제가 발생할 수 있습니다 (예 : 2 개의 루틴이 동일한 메모리 블록을 사용하지만 동시에 실행되지 않는 경우).

어쨌든 OS는 여러 프로세스에 여러 코어를 사용할 수 있지만 단일 코어 응용 프로그램을 여러 코어에 분산하면 모든 종류의 예기치 않은 동작이 발생합니다.


감사. 나는 이해. 내 질문이 잘못 표현되었을 수 있습니다. OS를 별도의 코어에 배치하는 운영 체제에 대해 더 많이 물어 봤습니다. 어떤 방식 으로든 단일 스레드 프로세스가 코어 전체에 마법을 적용하는 것은 아닙니다.
Doug T.

3

프로세서가 1 % 사용 또는 95 % 사용 (95 %에서 안정적이며 피크가 아닌 한)에 상관없이 프로그램은 다음과 같은 속도로 실행됩니다 100 %에 도달하지 않습니다. 사용하지 않은 CPU주기는 단순히 낭비됩니다.

이 때문에 Windows 7 (호환 가능한 프로세서)에는 "핵심 주차"라는 기술이있어 기본적으로 컴퓨터에서 사용하지 않는 코어를 비활성화하여 전기를 절약합니다.

단일 스레드 응용 프로그램은 대체 코어에 자동으로 배치됩니다.이 기술은 확실하지 않지만 잘 작동한다는 것을 알고 있습니다.


2

초기 감정은 정확합니다. 여러 코어에 부정적인 영향을 미치며 그다지 가치가있는 것은 아닙니다.

대부분의 사용자가 간단한 워드 프로세싱을 위해 데스크톱 PC 만 사용하던 시절에는 논쟁이 있었을 것입니다. 그러나 요즘에는 여러 개의 탭이있는 브라우저와 같은 각각의 프로세스 (크롬 및 탭의 프로세스 수준 분리 수행)와 웹 페이지 내의 비디오 디코더와 같은 작업과 온더 플라이처럼 쉽게 오프로드 할 수있는 추가 작업 css3 효과의 렌더링, 심지어 브라우저만으로도 더 많은 램과 몇 가지 코어의 이유를 정당화 할 수 있습니다.

또한 일부 사용자는이 PC에서 게임을하거나 차고 밴드, imovie, 핸드 브레이크, 여러 코어와 같은 도구를 사용하는 것이 큰 이점이 될 수 있습니다.

다른 코어가 유용하기 위해 코어를 최대로 (즉, 단일 코어에서 100 % CPU 사용량) 사용해야한다고 가정하는 것은 사실이 아닙니다. 우리는 여기서 평 행성을 이야기하고 있기 때문입니다. CPU 내의 작업 전환은 일반적으로 스택을 다른 프로세스로 교체하기 전에 일괄 작업을 수행합니다. 이러한 모든 작업이 CPU에 바인딩 된 것은 아니므로 코어가 잠겨 있어도 CPU 스파이크가 표시되지 않습니다.

기본적으로 맞습니다. 그러나 가장 효율적인 코어 수는 얼마입니까? 2? 4? 12? 이것은 아마도 사용자 습관에 달려있을 것입니다 ... 나는 대부분의 사용자 에게이 2-4 경향이 있지만 추측 만합니다.

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