'OS'에 해당되는 글 1건

  1. 2007/08/25 클록과 시간관리

클록과 시간관리

2007/08/25 13:39
 

☆ 클록과 시간관리


  ① 단일 하드웨어 타이머

    • 월 클록 타이머 : 정확한 일시를 유지하고 알려주기 위한 타이머이다.

    • 카운트다운 타이머 : 알람 클록과 관련되며 특정시간을 설정하고 그 시간이 0이 되면 인터럽트를 생성하는 타이머이다.


  ② 다중 논리적 타이머

    • 절대적 wakeup 시간을 사용하는 우선순위 큐 사용

     : 카운트다운 타이머와 월 클록 타이머를 모두 사용하는 방법으로 블록 된 프로세스의       wakeup 시간은 우선순위 큐에 유지되며 정렬된 리스트나 이진 Heap으로 구현할 수  있다. 우선순위 큐의 각 원소는 (p, tn, wakeup)를 가지며 p : 프로세스ID, tn : 논리적 카운트다운 타이머, wakeup: 깨어나기를 바라는 시간을 나타낸다.

   ※ 예제    

    

월클록

 

카운트다운

103

 

12

    

TQ

 

p₁

115

 

p₂

135

 

p₃

140

 

p₄

150

 

 

 

 

 

 

    * 문제1)  새로운 프로세스 p₅가 Set_LTimer(tn, 35)를 호출한 후의 변경된 우선 순위 큐 월 클록과 카운트다운 타이머의 값을 나타내시오.

    * 풀이) Set_LTimer(tn, tdel) {  

            wnew = Get_Time() + tdel ;

            word = first(TQ) → wakeup ;           

            if( wnew < word ) Set_Timer(tdel) ;

               insert(TQ, (*, tn, wnew)) ;

           } 이며 여기서 Get_Time()는 월 클록의 값을 가져오고 Set-Timer(tdel)은 카운트다운 타이머의 값을 tdel로 변경시키는 함수이다.

      wnew = 월 클록(103) + tdel(35) = 138 이므로 p₁의 wakeup의 값이 115이므로 TQ에        (p₅, 138)이 삽입되게 된다.

    * 답)

    

월클록

 

카운트다운

103

 

12

    

TQ

 

p₁

115

 

p₂

135

 

p₅

138

 

p₃

140

 

p₄

150

 

 

 

 

 

 

·

    * 참고) 카운트다운 타이머가 0이 되면 V연산을 통해 큐의 첫 번째 원소를 깨워 서비스를고 다음 순서를 위해 카운트다운 타이머를 설정해야 한다. 이 때 설정되는 값은 다음 원소의 wakeup - Get_time() 로 계산된다.

    * 문제2)  새로운 프로세스 p₅가 Set_LTimer(tn, 5)를 호출한 후의 변경된 우선 순위 큐 월 클록과 카운트다운 타이머의 값을 나타내시오.

    * 풀이) wnew 값이 first(TQ) → wakeup 보다 작기 때문에 Set_Timer(5)를 하여 카운트다운 타이머의 값을 변경시키고 큐의 첫 번째 위치에 놓이게 된다.

    * 답)

    

월클록

 

카운트다운

103

 

5

    

TQ

 

p₅

108

 

p₁

115

 

p₂

135

 

p₃

140

 

p₄

150

 

 

 

 

 

 

·

    

   • 시간차를 사용하는 우선순위 큐의 사용

    : 카운트다운 타이머만을 사용하는 방법으로 절대적인 웨이크업 시간 값을 유지하는 대신 연속되는 원소들의 웨이크업 시간들의 차만을 유지하여 나타낸다. 새로운 요청이 들어오면 tdel보다 클 때까지 카운트다운 타이머 값에 시간 차이들을 더하고 해당 위치에 놓여진다.

   

카운트다운

12

   

TQ

 

p₁

15

 

p₂

20

 

p₃

5

 

p₄

10

 

 

 

 

 

 

  * 문제1)  새로운 프로세스 p₅가 Set_LTimer(tn, 35)를 호출한 후의 변경된 우선 순위 큐 카운트다운 타이머의 값을 나타내시오.

   * 풀이) 35 ≤ 12+20+5 일 때가 p₂와 p₃사이이므로 새로운 프로세스 p₅는 시간 차이 값은 35에서 p₂까지 더한 값을 빼서 구하고 p₅로 인하여 일관성이 깨진 p₃의 시간 차이 값은 p₃까지 더한 38에서 35를 뺀 2를 가지게 된다.

   * 답)

   

카운트다운

12

   

TQ

 

p₁

15

 

p₂

20

 

p₅

3

 

p₃

2

 

p₄

10

 

 

 

 

 

 

·

    * 문제2)  새로운 프로세스 p₅가 Set_LTimer(tn, 5)를 호출한 후의 변경된 우선 순위 큐운트다운 타이머의 값을 tdel이 카운트다운 타이머보다 작기 때문에 타이머는 tdel로 변경되고 일관성이 깨진 p₁은 12에서 5를 뺀 7을 가지게 된다.

    * 풀이)

    * 답)

   

카운트다운

5

   

TQ

 

p₅

5

 

p₁

7

 

p₂

20

 

p₃

5

 

p₄

10

 

 

 

 

 

 

·

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by ★The fox★

BLOG main image
Happiness isn't far from here. It exists within you. by ★The fox★

카테고리

viewall (73)
Daily Life (17)
English (2)
Computer (13)
Artists (5)
Movie (1)
Tourism (12)
Scribbling (7)
Temp (2)
Neoguerilla (2)
calendar (12)
Total : 44,965
Today : 0 Yesterday : 13