Time
시간의 종류
- Wall time
- 이벤트의 시간이나 유저와 소통에 사용하는 시간이다.
- absolute time 즉 프로세스나 cpu동작과 관계 없이 계 바깥의 시간
- 사용자가 변경하는 것이 가능하다.
- Monotonic time
- 시간의 간격이 일정하고 항상 증가하기만 하는 시간. 사용자가 임의조작하는것이 불가능하다.
- 특정한 계 내에서 시간을 측정하는데에 유용하다
- Process time
- 프로세스가 CPU 자원을 소모한 시간으로 CPU자원을 할당받지 않고 있을 경우엔 흐르지 않는다.
- 프로세스 성능을 파악하는 등의 용도로 사용한다.
시간을 측정하는 하드웨어 장치
- Real Time Clock (RTC)
- 현실의 시간, 즉 Wall time을 측정하는데 사용될 수 있으며
- 하드웨어가 꺼져 있는동안에도 시간은 흘러야 한다.
- 정밀도가 높지 않은 편이다.
- High Precision Event Timer (HPET)
- periodic interrups를 발생시킬 수 있는 상당히 정밀한 시계이다.
- 하드웨어가 종료될땐 동작을 하지 않는다.
- Time Stamp Counter (TSC)
- 시피유 사이클이 몇번 일어났는지 계측하는 시계이다.
- HPET보다 높은 정밀도를 갖지만, periodic interrupt를 제공하지는 않는다.
하드웨어 장치를 이용하는 소프트웨어: System Clock
- 리눅스에서는 system clock의 최소 단위 시간(tick)을 HZ라는 단위로 표기한다.
- System Time
- Unix 유래 time 계측
- POSIX 유래 time 계측
Sleep
- sleep: 잔다. CPU 자원을 배정받지 않는다
초단위로 잠을 재우는 sleep()
unsigned int sleep(unsigned int seconds)
- seconds만큼 재우고 시간이 흐른 뒤 깨운다.
- return: 알맞게 잤다면 0을 반환, 덜 잤다면 덜 잔 시간을 반환