☆ 클록과 시간관리
① 단일 하드웨어 타이머
• 월 클록 타이머 : 정확한 일시를 유지하고 알려주기 위한 타이머이다.
• 카운트다운 타이머 : 알람 클록과 관련되며 특정시간을 설정하고 그 시간이 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 |
• |
|
|
|
|
|
|
|
· |

