2009-04-10 2 views
2

운영 체제에서 스레드를 사용할 수있는 방법의 특성을 이해하면 이점이 있습니까? 예를 들어, Java에서 집중적 인 CPU 계산에 사용된다는 것을 나타내는 새 스레드를 만들 때 I/O가 차단됩니다. 이것이 능력이라면 스레드 스케줄링이 개선되지 않겠습니까?운영 체제가 스레드 사용 방법의 특성을 이해하면 이점이 있습니까?

+0

운영 체제 스레드 스케줄러에 대해 응용 프로그램이 "영향력"을 더 발휘할 수있는 능력이 좋은 생각입니다. 어쩌면 문제는이 기능이 존재하는지, 응용 프로그램이 악용하려는 스레드 우선 순위 이외의 특성일까요? – McGovernTheory

답변

3

OS가 스레드가 I/O 또는 계산이라는 정보를 실제로 기대하고 있는지 확실하지 않습니다. 실제로 스레드가 스케줄링되는 방식 (즉, 스레드 우선 순위 및 스레드 CPU 선호도)에 가장 큰 차이를 만드는 것은 API에 의해 이미 노출되어 있습니다 (NUMA 측면에 대한 지원도 주류 OS API에 나타나기 시작합니다).

"계산 스레드"는 백그라운드 처리를하고 GUI 스레드 (응용 프로그램의 응답 속도를 유지하는 관점)보다 덜 중요하다는 것을 의미 할 수 있습니다. 아마도 가장 유용한 것은 사용자의 우선 순위를 낮추는 것입니다. 스레드를 조금 계산해라.

3

이것이 바로 OS 프로세스의 기능입니다. 운영 체제는 프로세스에 대한 정교한 스케줄링을 가지고 있습니다. OS는 I/O 사용과 CPU 사용을 추적하고 우선 순위를 동적으로 조정하여 CPU를 많이 사용하는 처리가 I/O를 방해하지 않도록합니다.

이러한 기능을 사용하려면 적절한 OS 프로세스를 사용하십시오.

1

심지어 필요한가요? I/O에서 스레드를 차단하면 CPU를 많이 사용하는 스레드가 실행됩니다. 운영 체제가 스레드를 예약하는 방법을 결정합니다. AFAIK에는 Java에 대한 힌트를 줄 수있는 방법이 없습니다.

1

네, 특히 창문에 많은 스레드를 열어 놓는 건축가 중 한 명이라면 특별히 이해해야합니다.

Wintellect의 Jeff Richter over는 PowerThreading이라는 라이브러리가 있습니다. .NET에서 응용 프로그램을 개발하는 경우 매우 유용하지만 JAVA에 대해 이야기하고 있으므로 OS 스레드, 커널 모델 및 인터럽트 작동 방식을 이해하는 것이 좋습니다.

관련 문제