2013-02-28 2 views
2

라이센스 (GUI 테스트 도구 silktest 용) 및 사용자가 더 적은 상황이 있습니다.제한된 라이센스에 대한 액세스 예약 알고리즘

라이센스에 대한 액세스가 예약을 통해 이루어지는 시스템을 구축하려고합니다.

자동화 제품군을 실행하려면 사용자가 하나의 라이센스를 사용하도록 예약해야합니다. 다른 라이센스는 무료입니다.

단일 사용자가 한 번에 하나의 제품군 만 실행할 수 있기 때문에 간단한 FIFO 대기열이이를 해결하지 못합니다.

라이센스를 효과적으로 배포하는 데 도움이되는 표준 알고리즘이 있습니까?

+0

내가 하나의 사용자가 동시에 더 예약을 만들 수 있다는 것을 잘 이해합니까,하지만 다른 사용자를 제한하지 않을 경우에만 그보다 더 얻을해야합니까? 각 예약 기간은 언제까지 지속됩니까? 사전 예약 ("월요일에 11시에 라이센스가 필요합니다")가 아닌지 ("지금 라이센스가 필요합니다")? – svick

+0

또한 간단한 [라운드 로빈 스케줄링] (http://en.wikipedia.org/wiki/Round-robin_scheduling)으로 충분합니까? – svick

+0

1) 예, 단일 사용자는 여러 예약을 만들 수 있습니다 (단, 사용자의 현재 실행이 완료된 후에 만 ​​사용됩니다). 한 번에 하나의 silktest 인스턴스 만 실행할 수 있기 때문에 한 번에 두 번 이상 라이선스가 필요하지 않습니다. 기계. 2) 각 실행의 완료 시간이 다를 수 있습니다. 3) 아니요, 미리 시간이 없습니다. 4) 모든 예약에서 라운드 로빈 방식을 사용하면 단일 사용자에게 여러 라이센스를 할당 할 수 있으며 이는 낭비됩니다. – jumov

답변

0

신기원을 정의하십시오. 통계는 한 시대에 걸쳐 발생합니다. (2 시간).

틱을 정의하십시오. 라이센스 요청은 틱마다 허용/해결됩니다. (30 초를 말하십시오)

각 라이센스가 누구와 누구에 의해 개최되는지에 대한 통계를 유지하십시오.

각 사용자에게 가중치를 지정하십시오. 라이센스를 사용하는만큼 설정 시간 동안 만 사용량이 줄어 듭니다.

모든 틱 :

  1. 라이센스를 원하는 사람 수집합니다.
  2. 라이센스를 기록하고 사용자 통계 당 라이센스 체크 아웃 시간을 수집하십시오.
  3. 사용 가능한 각 라이센스 :
  4. 가장 높은 대기 시간과 가장 긴 대기 시간을 요구하는 사용자를 선택했습니다. 두 명 이상의 사용자가 둘 이상의 기준을 묶는다면 무작위로 선택하십시오.
  5. 수상한 사용자의 체중을 그들이 이전에 라이센스를 보유한 평균 시간과 동일한 시간 동안 감소시키고이 라이센스를 보유한 시간을 더한 기간을 더한 기간으로 정하십시오.

모든 시대 : 그들은 희망이 라이선스의 사용하는 사용자의 차이를 자동으로 라이센스 체크 아웃을 조정합니다

오버런하지 않도록

  1. 이 통계를 조정합니다. 장기간 또는 자주 또는 때때로 사용하기를 원하는 사람들은 시간이 지남에 따라 희망적으로 균등하게 라이센스에 액세스해야합니다.

    ather

관련 문제