1. 타임아웃, 타이머
ㅇ 타임아웃 (Timeout)
- 정해진 시간이 다 됨(경과됨)
ㅇ 타이머 (Timer)
- 운용중인 프로세스를 종료시키기 위한 수단
. 통상, 무한 루프, 동작 실패 등에 대비하거나,
. 또는, 지정된 시간 후 인터럽트를 발생하도록 설정되는 등
- 보통, 특정 값에서 시작하여 1씩 줄어들며 0에서 인터럽트 발생
- 例) TCP 타이머, 555 타이머 등
ㅇ 타이머 구현 방식
- 고정 클럭률과 카운터(계수기)로 구성되어,
- 정해진 계수(計數) 후에 인터럽트를 발생시킴
2. [컴퓨터 하드웨어] 타이머를 위한 `경과 시간` 제공 방식 (Timer Interrupt)
ㅇ 틱 (Tick, 1/주파수 [sec]) 수
- 통상, 컴퓨터 내부 발진기의 진동 주기에 따른 틱 수를 제공함
- 시스템(운영체제) 시작 이후에 상대적인 경과 시간(Uptime)은 이 틱 수로 계산되어짐
ㅇ 컴퓨터 아키텍처별 타이머 인터럽트 주파수 例)
- PC x86 계열
. 과거 : 100 Hz
.. 100분의 1초 마다 1번 즉, 10 밀리초 마다 하나의 Tick 발생 (즉, 초당 100회 발생)
. i386 이후 : 1000 Hz
- Alpha 칩 계열 : 1024 Hz
- ARM 프로세서 계열 : 100 Hz
* 각 아키텍처에서도, 경우(버젼)에 따라, 주파수가 달라지기도 함
3. [프로그래밍] 타이머 함수
ㅇ 함수 호출의 시간 예약
ㅇ 3가지 주요 경우 例)
- (타이머 생성 1) 일정 시간 마다, 특정 구문/함수를 반복 실행
. 자바스크립트 例) setInterval(콜백함수, duration)
- (타이머 생성 2) 일정 시간이 지난 후에, 특정 구문/함수를 딱 한번 실행
. 자바스크립트 例) setTimeout(콜백함수, duration)
- (타이머 제거) 이미 실행 중인, 특정 구문/함수를 멈추게 함
. 자바스크립트 例) clearInterval(이미실행중인타이머), clearTimeout(이미실행중인타이머)
4. [운영체제] 타이머
ㅇ 시간의 흐름은, 운영체제 커널에 매우 중요 함
- 많은 커널 함수가 `이벤트 기반`이 아니라 `시간 기반`으로 작동 함
- 커널은 시간의 흐름을 이해,관리하기 위해, 시스템 하드웨어와 협력 함
- 하드웨어는 커널이 시간 경과를 알 수 있도록, 시스템 타이머를 제공 함
ㅇ 다양한 시간 기반 작업의 例)
- 사용자 프로그램의 무한 루프, 시스템 호출 실패 등으로부터, 지정 시간 이후 제어 복귀
- I/O 작업이나 네트워크 연결 등에서 지연 작업시 타임아웃 발생
- CPU가 한 프로세스의 독점을 방지 (프로세스 스케줄링)
- 주기적으로 메모리 정리, 로그 파일 작성 등 (주기적 작업 실행)
- 시분할 시스템 구현 등
ㅇ 만일, 설정된 타이머 시간이 만료되면,
- 타이머 인터럽트(타이머의 인터럽트 핸들러)가 발생됨
ㅇ [참고] 타이머 설정 변경은 명백히 특권 명령 임