![OS가 다중 코어를 활용합니까?](https://rvso.com/image/1346155/OS%EA%B0%80%20%EB%8B%A4%EC%A4%91%20%EC%BD%94%EC%96%B4%EB%A5%BC%20%ED%99%9C%EC%9A%A9%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
더 많은 코어가 항상 더 좋은 것은 아니며 대부분의 응용 프로그램이 단일 스레드라는 것을 알고 있지만 OS는 추가 코어를 사용합니까? 예를 들어 사전 무차별 공격과 같은 애플리케이션을 가정해 보겠습니다. 프로그램이 실제로 멀티스레드인 경우 쿼드 코어 프로세서에서 4개의 별도 인스턴스(사전의 별도 1/4)를 실행하면 동일한 이점이 있습니까? 기본적으로 OS에서는 선점 없이 4개의 인스턴스가 모두 동시에 실행되도록 허용합니까?
나는 한 번에 여러 개의 독립적인 애플리케이션(여러 탭이 포함된 Firefox, 사무실, 채팅, 개발 도구, 게임)을 실행하는 경향이 있습니다.
답변1
일반적으로 그렇습니다. 코어를 사용할 수 있는 경우(즉, 다른 프로그램에서 이를 사용하지 않는 경우) OS는 4개 코어에 프로그램 인스턴스 4개를 배포합니다. 이는 잠재적인 오버헤드를 제외하고 4개의 스레드를 갖는 것과 비슷한 이점을 제공할 수 있습니다(예를 들어 4개의 스레드는 로드된 사전의 하나의 복사본을 공유하는 반면, 4개의 프로세스는 각각 별도의 사전 복사본을 로드할 가능성이 높습니다).
답변2
사용 가능한 모든 코어를 활용하려면 (a) OS의 지원과 (b) 다중 코어를 활용할 수 있는 애플리케이션 워크로드가 모두 필요합니다. OS 지원은 모든 최신 OS에 제공되므로 애플리케이션 워크로드가 다중 코어를 활용할 수 있는지 여부에 따라 달라집니다.
여러 애플리케이션을 동시에 실행하는 경우 여러 코어의 이점을 누릴 수 있습니다. 여러 프로그램이 모두 동시에 실행되려고 하면 OS는 여러 코어에서 해당 프로그램을 예약합니다.
한 번에 하나의 애플리케이션만 사용하는 경우 여러 코어가 도움이 될지 여부는 애플리케이션에 따라 다릅니다. 특히 애플리케이션이 다중 스레드로 작성되었는지 아니면 단일 스레드로 작성되었는지에 따라 달라집니다. 단일 스레드 애플리케이션은 한 번에 한 가지 작업만 수행하므로 단일 코어만 사용할 수 있습니다. 멀티스레드 애플리케이션은 한 번에 여러 작업을 수행하기 위해 여러 스레드를 생성하여 OS가 서로 다른 코어의 각 스레드를 예약할 수 있도록 하고 잠재적으로 멀티코어 프로세서의 속도 향상을 가능하게 합니다.
다중 스레드를 사용하고 다중 코어를 활용하려면 응용 프로그램을 특별히 설계하고 작성해야 하며, 많은 일반 응용 프로그램은 다중 코어의 이점을 얻지 못하지만 일부는 이점을 얻습니다. 예를 들어 Photoshop은 계산 비용이 많이 드는 작업을 수행하도록 요청하면 작업을 더 작은 조각으로 나누고 해당 조각을 여러 스레드에 분산시켜 여러 코어에서 실행할 수 있도록 작성되었습니다. 이를 위해서는 Photoshop 개발자의 특별한 프로그래밍이 필요하고 개발자의 추가 노력이 많이 필요하므로 많은 또는 대부분의 응용 프로그램은 이러한 프로그래밍 스타일을 사용하지 않았으며 다중 코어 시스템에서 많은 이점을 얻지 못할 것입니다. 그러나 일부는 그렇게 할 것입니다.
동시에 많은 독립적인 프로그램을 실행하는 경향이 있다는 점을 고려하면 아마도 멀티 코어 프로세서에서 최소한 몇 가지 이점을 얻을 수 있을 것입니다.