2011-10-07 13 views
1

Data Structures And Algorithms에 우선 순위 큐에 대한 주제를 읽고 난 다음 단락에 걸쳐 온 동안 ...우선 순위 큐

하나의 가능한 방법은 이 프로세스 P에게 우선 순위를 부여하는 것입니다 긴 사람을 잠글 아직 짧은 프로세스를 선호하는 100 t(used)-t(init) 여기서, t(used) 은 프로세스에 걸린 시간이고 t(init)은 프로세스가 시작된 시간이며, 일부는 time 0에서 측정됩니다. 100은 매직 넘버로, 최대 활성 프로세스 수인 보다 약간 큰 것으로 선택되어 있습니다. 우리가 항상 가장 작은 우선 순위 번호를 가진 프로세스를 선택하고 너무 짧은 프로세스가 혼합되어 있지 않다면, 에서 장기간에 걸친 프로세스가 빨리 끝나면 1 % 을받을 것이라고 관찰자는 관찰 할 수 있습니다. 프로세서의 시간.

아무도 프로세스가 1 %를 차지하는 방법을 설명 할 수 있습니까? 수학적으로 결과를 얻을 수 있다면 좋을 것입니다.

답변

1

물론, 처음에는 프로세스가 음수 우선 순위 값을 갖습니다. 그게 무엇인지는 중요하지 않습니다. 단지 그것이 현재의 시간을 기준으로 부정적이며 표현 된 것입니다. 간단히하기 위해 정수 값이라고 가정 해 봅시다.

프로세스 A는 우선 순위 0으로 시작합니다 (우리는 t = 0으로 가정 함). 예를 들어 10 시간 단위로 실행되지만 완료되지 않았으므로 이후의 처리 시점에서 처리를 계속하려면 대기해야합니다. 따라서 우선 순위는 공식을 기반으로합니다.

priority = priority + 100*(endtime - starttime) 

priorityA = 0 + 100*(10-0) 
priorityA = 1000 

프로세스 B의 초기 우선 순위는 t = 5에서 초기화되므로 -5입니다. 대기열에있는 두 가지 우선 순위 중 가장 낮은 우선 순위를 가지므로 시간도 많이 걸립니다. 또한 10 시간 단위로 실행한다고 가정합니다. 이 완료되면, B는 우선 순위가됩니다

priorityB = -5 + 100*(20-10) 
priorityB = 995 

을하고 그래서 다시 대기거야. 그리고 그것이 다시 10 유닛을 돌았다고 가정합시다. 다음은 새로운 우선 순위입니다. 우선 순위 대기열에서 A 다음에 B 위치를 재 지정합니다. A가 실행되지만 이번에는 5 시간 단위로만 실행됩니다. 새로운 우선 순위는 다음과 같습니다.

priorityA = 1000 + 100*(35-30) 
priorityA = 1500 

그리고 프로세스 A는 다시 대기열의 맨 위에 있으며주의를 끌 것입니다. 다시 5 개 시간 단위 동안 실행 가정, 그것은 새로운 우선 순위는 다음과 같습니다

priorityA = 1500 + 100(40-35) 
priorityA = 2000 

프로세스 B 후를 배치하고 그래서 B는 일부 프로세서 시간을 얻을 것이다. 이번에는 5 시간 단위를 사용한다고 가정합시다.

priorityB = 1995 + 100(45-40) 
priorityB = 2495 

이제 다시 돌아 왔습니다. 이 두 프로세스가 각각 어떻게 프로세서의 관심을 50 % 효과적으로 얻는 지 확인하십시오. 세 번째 장기 실행 프로세스 (A와 B 모두 "장기 실행"은 10 개 단위로 실행되지 않았다는 의미에서 장기 실행 중이고 완료되면 오히려 재구성 됨)를 추가하면 이러한 프로세스 실행될 때마다 프로세서 시간의 약 33 %를 얻을 가능성이 높으며, 실행을 마친 시간을 기준으로 우선 순위가 조정됩니다.새 프로세스는 항상 음수 우선 순위 값으로 제공되기 때문에 항상이 시나리오에서 먼저 실행되며 실제로 더 높은 (낮은 숫자 값) 우선 순위 으로 끝납니다. 그러나, 그것은 영원히 지속되지 않을 것입니다 - 새로운 프로세스는 더 크고 더 큰 우선 순위 값을 얻기 시작할 것입니다.

그러나이 책의 가정을 토대로 한 번에 약 100 개의 프로세스가 처리 시간을 기다리고 있기 때문에 짧은 실행 프로세스가 너무 많다는 가정도 있습니다. 일반적으로 프로세서주의를 모색하는 약 100 개의 프로세스가 될 것이므로 각 프로세스는 거의 동일한 시간을 가지게 될 것이고 곧 상대적인 숫자 우선 순위 값은 모두 서로 클러스터 될 것입니다 (즉, 우선 순위가 가장 높은 프로세스와 수치상의 차이가 거의 없음을 의미합니다 그리고 우선 순위가 가장 낮은 프로세스) 우선 프로세스가 실행 된 후에 프로세스를 실행하면 프로세스를 우선 순위에 추가하여 프로세스를 맨 아래 (또는 맨 아래)에 밀어 넣을 수 있습니다. 린스 앤 리피트 (Rinse and repeat)를하면 근본적으로 라운드 로빈 (round robin) 일이 발생합니다. 한 번에 약 100 개 정도의 짧은 프로세스가 존재한다고 가정 할 때, 각 프로세스는 프로세서의 1/100을 차지합니다.