OS - time interrupt
컴퓨터가 사용하는 두가지 시간
절대시간
- 평소 사용하는 시간 -> RTC(Real Time Clock) 하드웨어 사용
상대시간
- 어떤 프로그램이 시작되고 나서부터 system timer가 세는 시간 (from now, from event)
컴퓨터는 time driven system이다.
system timer는 특정 hz마다 주기적으로 interrupt를 발생시킨다 -> PIT(Programmable Interval Timer) 하드웨어 사용
특별한 전역 변수를 생성해서 timer interrupt가 발생될 떄마다 +1 씩 증가시키는 방식
hz
- 초당 진동하는 횟수
jiffies
- 리눅스에서 timer interrupt가 발생될 때 1씩 증가하는 전역변수 (hz횟수)
jiffies/hz = 초 단위의 상대 시간
timer interrupt handler
timer interrupt가 발생하면 똑같이 ISR인 handler가 실행되는데
jiffies와 프로그램의 상대시간을 업데이트하고, time slice가 끝났는지 확인한다
time interrupt도 커널로 처리되서 컴퓨터는 hz단위로 모드 스위치 한다고 보면 됨

Time out은 프로그램이 주어진 time slice를 소진했을 때 발생
레디큐에 대기하고 있던 다음 프로그램인 B가 실행
process swith도 커널 모드에서 실행되는 것이기 때문에 mode swich가 process swich보다 훨씬 빈번하게 발생
다시 A가 프로세서 주도권을 가져가고
I/O interrupt가 발생하여 다시 커널 모드로
I/O 때문에 a 프로그램이 더이상 CPU를 사용하지 않을 떄 다시 B로 mode switch