코딩스터디

[JavaScript] C->JS/ Queue 서버가 3명일 때

애플앤마블 2019. 9. 9. 04:42
반응형
SMALL

1. 개요

  자바스크립트로 Queue를 구현하고 이를 이용하여 Server 3명인 경우 Customer에 대한 time number요소들을 출력한다.

 

2. Code에 대한 설명

 

  전체 서비스의 시간을 관장하는 Clock을 선언하고 이는 전체 시간을 담당한다.

Function Queue(){}에는dataStore[] 배열, 원형 큐의 처음과 끝, enqueue, dequeue 그리고 큐가 비어있음을 확인하는 함수인 is_empty를 선언한다.

Server 3명으로 설정하기 위해 Server가 가지는 service_time을 각각 1, 2, 3으로 선언하고 이를 0으로 초기화 한다. , Server Customer를 받지 않을 경우 잉여시간으로 설정하기 위해 이를 service_idle_time으로 선언하고 초기화 한다.

모든 직원이 쉬고 있을 경우를 표현하기 위해 모든 Server service_time 0이 될 경우 직원이 모두 쉬고 있습니다.” 를 출력한다. , clock 1일 때부터 Customer가 들어오도록 설정된 환경이므로 clock0~1일 경우 모든 직원의 service_idle_time이 상승한다.

Server가 가지는 service_time Server Customer에게 할당하는 시간이고 이를 0으로 초기화 한다. 각 경우 모두 유의미한 값을 도출해 내기 위해 초기 값들을 조정할 필요가 있다. 따라서duration = 100, arrival_prob = 0.7, max_serv_time = 9로 설정했다.

If( is_customer_arrived())에서 0.7보다 작을 경우 Customer가 입장한 것으로 보고 insert_customer 함수를 통해 enqueuer(큐를 삽입)한다. 이때 random함수를 이용하여 고객의 service_time이 임의 배정되고 고객의 id, 도착시간, 서비스시간을 출력한다.

선입선출의 개념인 Queue이므로 먼저 들어온 고객부터 Server에 배정을 하며 Server Customer를 받고 있을 때 들어오는 Customer는 대기하며 Server Customer를 받고 있을 경우 service_time이 전체 Clock에 반대하여 줄어들고 service_time 0일 경우 remove_customer()를 실행한다. 대기 시간은 전체 시간에서 도착시간을 뺀 시간에 더하여 표현한다. 또한dequeuer(큐를 삭제)하여 Customer의 서비스를 끝내고 삭제한다 그 후 각 변수들을 return하고 각 요소들을 출력한다.

remove_customer함수를 불러내어 service_time을 초기화하고 계산한 다음 service_time값을 리턴한다. 그리고 dequeue(큐를 삭제)하여Customer의 서비스를 끝내고 삭제한다. 그 후 각 변수들을 return하고 각 요소들을 출력한다.

Service_idle_time에 대해서는 각 Server Customer에게 Service를 제공하지 않을 경우 잉여시간으로 간주하여 service_idle_time을 증가시킨다. 만약 2명의 ServerService를 제공하지 않을 경우 잉여시간을 2 증가 시키고 마지막에 총 잉여시간을 출력한다.

 

3. Code

4. 결과

 

직원 모두가 쉴 경우의 한 주기의 결과이고 이 Clock의 경우 3 idle_time이 증가한다

 

[PE:JavaScript]서비스(_server3)수정.pdf
0.44MB

 

반응형
LIST