2017-09-05 5 views
0

멀티 스레딩 개념을 이해하려고합니다. 멀티 스레딩 지원은 다음에서 제공됩니다.OS, CPU의 멀티 스레드 프로그래밍 및 지원?

1) 운영 체제로부터? (OR)
2) 언어 자체? (올바른 경우 자바와 같은)

CPU의 역할은 무엇입니까? 멀티 스레딩 기능도 CPU (멀티 코어 프로세서는 고려하지 않음) 때문입니까?

OS 나 CPU가 멀티 스레딩을 지원하지 않지만 언어 자체에서 가능한 시나리오가있을 수 있습니까?

아무도 이해할 수 있습니까?

+1

귀하의 질문은 매우 광범위하고 답변하기 어렵습니다. 이론에서 가능한 실제 세계에 대해 묻고 있습니까? – Oleg

+1

Java 프로세스는 JRE에서 OS 프로세스로 실행되며 여기에는 여러 스레드가있을 수 있습니다. Java는 플랫폼에 의존하지 않기 때문에, JRE 구현에서는 정확한 구현이 다릅니다. 예를 들어 최신 하드웨어를 활용하고 성능을 향상시킬 수있는 새로운 비 차단 알고리즘이 있습니다. – amitmah

+0

저는 멀티 스레딩 프로그래밍을 위해 OS, CPU 및 언어 자체의 역할이 무엇인지 더 높은 수준에서 이해하려고 노력하고 있습니다. 물론 심층적이지는 않습니다. – CuriousMind

답변

1

스레드는 스케줄러에 의해 다른 시퀀스와 독립적으로 관리 할 수있는 명령어 시퀀스입니다.

일반적으로 스케줄러는 운영 체제의 일부입니다 (예 : Linux's Completely Fair Scheduler).

일부 접근법 (예 : green threads, stackless Python)에서 스케줄러는 언어 또는 런타임 환경의 일부입니다.

현대적인 컴퓨팅 환경에서는 일반적으로 스레드 수가 CPU 코어 수를 초과합니다. 이것은 일반적으로 시간 슬라이스을 통해 처리되며 스레드가 사용 가능한 하드웨어에서 돌아가고 있습니다. 이를 관리하는 것이 스케줄러의 임무입니다.

1

Understanding java's native threads and the jvm 일부 정보가 있습니다.

기본적으로 다중 스레드 지원은 Java의 경우 OS와 Java에서 제공됩니다. 예를 들어 Python (표준 CPython은 Linux 스레드를 감싸는 래퍼 만 사용)에서는 이러한 일이 발생하지 않습니다.

https://superuser.com/questions/740611/what-is-the-difference-between-multithreading-and-hyperthreading 멀티 스레드를 위해 CPU가 수행하는 작업에 대해 자세히 설명합니다.

이론적으로는 언어가 스레딩의 구현자가 될 수 있습니다. 당신이 어떻게 보느냐에 따라, C는 OS에 포함되지 않으며, 스레딩을합니다 (주로 OS가 C로 작성되기 때문입니다). 위의 링크는 또한 이것을 말합니다.

자체 스레딩을하는 언어는 OS 레벨 스레딩만큼 효율적이지 않을 수 있으므로 OS 스레딩이 선호되고 일반적으로 제공됩니다.

+0

'C는 OS에서 계산하지 않습니다. '- 예를 들어'C'를 사용하여 펌웨어 나 OS를 구현한다면, 사실입니다. 이 경우 어셈블리에 의존하여 (마이크로) 프로세서와 상호 작용하고 스레딩 (일반적으로 커널에 구현 된 스케줄러) 개념을 구현할 수 있습니다. 다른 경우 C _most 가능성으로 작성된 응용 프로그램은 OS에 따라 멀티 스레딩 지원을 사용합니다 (예 : Windows/Linux/maOS에서 실행되는 응용 프로그램). – jweyrich

관련 문제