2011-04-09 5 views
1

각 프로세스에서 멀티 스레딩을 사용하여 프로세스 기반 멀티 태스킹을 달성하는 방법은 무엇입니까?멀티 코어 및 mulithreads

예를 들어 운영 체제가 두 가지 백그라운드 프로세스로 실행되는 경우를 생각해보십시오. 각 프로세스는 내부적으로 멀티 스레딩 기능을 지원합니다. 이제,이 프로세스들 사이에서 어떻게 시간 분할이 이루어지며 스레드간에 시간 분할이 어떻게 발생합니까?

+0

http://en.wikipedia.org/wiki/Scheduling_(computing) – rwong

답변

0

"이제 어떻게 시간 간격이 내부와 내부에서 발생합니까? 이러한 프로세스 및 스레드 간 시간 분할은 어떻게됩니까? "

정말 운영 체제에 따라 결정됩니다. 정말 기본적인 OS는 전혀 시간을 들여 놓지 않을 수도 있으며 각 프로세스를 선착순으로 완료 할 수 있습니다.

그러나 대부분의 최신 운영 체제에서는 일정한 알고리즘을 사용하여 어떤 스레드가 어떤 코어에서 실행되고 얼마 동안 실행되는지 결정하고 스왑 아웃시 스레드 상태를 저장하고 복원하는 데 필요한 컨텍스트 전환을 수행합니다 다른 스레드를위한 하나의 스레드.

2

스케줄러는 일반적으로 스레드 수준에서 작동합니다. 가장 간단한 용어로 스케줄러는 각 실행 가능한 스레드에 차례대로 해당 타임 슬라이스를 제공합니다.

따라서 두 스레드가있는 프로세스는 하나의 스레드가있는 프로세스의 CPU 시간이 두 배가됩니다. .

1

에서 :

http://msdn.microsoft.com/en-us/library/ms684259(VS.85).aspx

"는 멀티 태스킹 운영 체제의 프로세스 또는 필요 스레드간에 가능한 프로세서 시간 분할 시스템은 선제 멀티 태스킹을 위해 설계되며, 이는 각 프로세서 타임 슬라이스를 할당 현재 실행중인 스레드는 타임 슬라이스가 경과 할 때 일시 중단되어 다른 스레드가 실행될 수있게합니다. 시스템이 한 스레드에서 다른 스레드로 전환 할 때 선점 된 스레드의 컨텍스트를 저장하고 다음 스레드의 저장된 컨텍스트를 복원합니다. 대기열.

시간 조각의 길이는 운영 체제 및 프로세서에 따라 다릅니다. 각 시간 조각이 작기 때문에 (약 20 밀리 초), 여러 스레드가 동시에 실행되는 것처럼 보입니다. 이것은 실제로 실행 가능 스레드가 사용 가능한 프로세서 사이에 분산되어있는 다중 프로세서 시스템의 경우입니다. 너무 많은 스레드가있는 경우 시스템의 성능이 저하 될 수 있기 때문에, 응용 프로그램에서 여러 스레드를 사용하는 경우 그러나, 당신은주의해야합니다. "

을 또한 확인 This link for when to use multi-tasking

운영 체제는 언제에 대한 결정 기간을 각 스레드 Microsoft 운영 체제의 경우 다음에 실행할 프로세스의 스레드를 결정하거나 예측할 방법이 없으며 각 스레드의 실행 우선 순위도 높습니다. 우선 순위가 높은 스레드는 낮추는 데 더 많은 시간이 소요되는 경향이 우선 순위는 변경 될 수 있습니다 사용자 또는 프로그램에서 참조하십시오. this link for more info.