time(7) - wariua/manpages-ko GitHub Wiki
time - μκ° λ° νμ΄λ¨Έ μκ°
*μ€μ μκ°(real time)*μ μ΄λ€ κ³ μ μμ μ κΈ°μ€μΌλ‘ μΈ‘μ ν μκ°μΌλ‘ μ μνλ€. κ·Έ μμ μ΄ κ³Όκ±°μ μ΄λ€ νμ€ μμ μΌ μλ μκ³ (μλ μν¬ν¬ λ° λ¬λ ₯ μκ° μ€λͺ μ°Έκ³ ), νλ‘μΈμ€ μλͺ μ€μ μ΄λ (κ°λ Ή μμ) μμ λΆν° μ° κ²(κ²½κ³Ό μκ°)μΌ μλ μλ€.
*νλ‘μΈμ€ μκ°(process time)*μ νλ‘μΈμ€κ° μ΄ CPU μκ°μ μμΌλ‘ μ μνλ€. λλ‘λ κ·Έκ±Έ μ¬μ©μ λΆλΆκ³Ό μμ€ν
λΆλΆμΌλ‘ λλκΈ°λ νλ€. μ¬μ©μ CPU μκ°μ΄λ μ¬μ©μ λͺ¨λμμ μ½λλ₯Ό μ€ννλ©° μ΄ μκ°μ΄λ€. κ·Έλ¦¬κ³ μμ€ν
CPU μκ°μ΄λ νλ‘μΈμ€λ₯Ό λμ ν΄ μμ€ν
λͺ¨λμμ 컀λμ΄ μ€νλλ©° (κ°λ Ή μμ€ν
νΈμΆμ μ€ννλ©°) μ΄ μκ°μ΄λ€. time(1)
λͺ
λ Ήμ μ°λ©΄ νλ‘κ·Έλ¨ μ€ν λμ μλͺ¨ν CPU μκ° μμ μμλΌ μ μλ€. κ·Έλ¦¬κ³ νλ‘κ·Έλ¨μμ times(2), getrusage(2), clock(3)μ μ¨μ μκΈ°κ° μλͺ¨ν CPU μκ° μμ μμλΌ μ μλ€.
λλΆλΆμ μ»΄ν¨ν°μλ (λ°°ν°λ¦¬κ° λ¬λ¦°) νλμ¨μ΄ ν΄λμ΄ μλ€. 컀λμ΄ λΆν ν λ κ·Έ ν΄λμ μ½μ΄μ μννΈμ¨μ΄ ν΄λμ μ΄κΈ°ν νλ€. μμΈν λ΄μ©μ rtc(4)μ hwclock(8)μ 보λΌ.
(select(2), sigtimedwait(2)μ²λΌ) νμμμμ μ€μ νκ±°λ (getrusage(2)μ²λΌ) CPU μκ°μ μΈ‘μ νλ μ¬λ¬ μμ€ν
νΈμΆμ μ λ°λ νκ³κ° λλ κ² μννΈμ¨μ΄ ν΄λ ν΄μλμΈλ°, 컀λμμ μ μ§νλ κ·Έ ν΄λμ μ§νΌ(jiffy) λ¨μλ‘ μκ°μ μΈ‘μ νλ€. κ·Έλ¦¬κ³ μ§νΌμ ν¬κΈ°λ₯Ό μ νλ κ² μ»€λ μμ HZ
μ κ°μ΄λ€.
HZ
μ κ°μ 컀λ λ²μ κ³Ό νλμ¨μ΄ νλ«νΌμ λ°λΌ λ€μνλ€. i386μ μν©μ 보μλ©΄, 2.4.xκΉμ§ 컀λμμλ HZκ° 100μ΄μ΄μ μ§νΌκ° 0.01μ΄μκ³ , 2.6.0λΆν° HZκ° 1000μΌλ‘ μ¬λΌμ μ§νΌκ° 0.001μ΄κ° λλ€. κ·Έλ¦¬κ³ μ»€λ 2.6.13λΆν°λ HZ κ°μ΄ 컀λ κ΅¬μ± λ§€κ°λ³μμ¬μ 100, 250 (κΈ°λ³Έκ°), 1000μΌ μ μκ³ , κ°κ° μ§νΌ κ° 0.01μ΄, 0.004μ΄, 0.001μ΄κ° λμ¨λ€. 컀λ 2.6.20λΆν°λ μΆκ°λ‘ 300λ μ¬μ©ν μ μλλ°, μΌλ°μ μΈ μμ νλ μ μλ(PAL 25 HZ, NTSC 30 HZ)λ‘ λλ λ¨μ΄μ§λ κ°μ΄λ€.
times(2) μμ€ν
νΈμΆμ νΉλ³ν κ²½μ°λ€. μ΄ νΈμΆμ 컀λ μμ USER_HZ
μ μν μ λ°λλ‘ μκ°μ μλ € μ€λ€. μ¬μ©μ κ³΅κ° μμ©μμ sysconf(_SC_CLK_TCK)
λ‘ κ·Έ μμμ κ°μ μμλΌ μ μλ€.
리λ μ€ 2.6.21 μ μμ νμ΄λ¨Έ λ° μ λ€κΈ° μμ€ν νΈμΆ(μλ μ°Έκ³ )μ μ λ°λ νκ³λ μ§νΌ ν¬κΈ°μλ€.
리λ
μ€ 2.6.21λΆν° 리λ
μ€μμ κ³ ν΄μλ νμ΄λ¨Έ(HRT, high-resolution timer)λ₯Ό μ§μνμ¬ CONFIG_HIGH_RES_TIMERS
λ₯Ό ν΅ν΄ μ νμ μΌλ‘ κ΅¬μ± κ°λ₯νλ€. HRTλ₯Ό μ§μνλ μμ€ν
μμλ μ λ€κΈ° λ° νμ΄λ¨Έ μμ€ν
νΈμΆμ μ λ°λκ° λ μ΄μ μ§νΌμ μν΄ μ μ½λ°μ§ μμΌλ©° νλμ¨μ΄μμ νμ©νλ λ§νΌ μ λ°ν μ μλ€. (μμ¦ νλμ¨μ΄μμ λ§μ΄ν¬λ‘μ΄ μ λ°λκ° μΌλ°μ μ΄λ€.) κ³ ν΄μλ νμ΄λ¨Έκ° μ§μλλμ§ μμλ΄λ €λ©΄ clock_getres(2) νΈμΆμ΄ λ°ννλ ν΄μλλ₯Ό νμΈνκ±°λ /proc/timer_list
μμ "resolution" νλͺ©μ 보면 λλ€.
λͺ¨λ νλμ¨μ΄ μν€ν μ²μμ HRTλ₯Ό μ§μνμ§λ μλλ€. (x86, arm, powerpc λ±μμλ§ μ§μνλ€.)
μ λμ€ μμ€ν λ€μ μν¬ν¬(Epoch), μ¦ 1970-01-01 00:00:00 +0000 (UTC) μ΄ν μ§λ μ΄ μλ‘ μκ°μ λνλΈλ€.
νλ‘κ·Έλ¨μμ clock_gettime(2)μ CLOCK_REALTIME
ν΄λμ ν΅ν΄ *λ¬λ ₯ μκ°(calendar time)*μ μμλΌ μ μλλ°, μν¬ν¬ μ΄ν μ§λ μκ°μ΄ (μ΄μ λλ
Έμ΄λ‘) λ°νλλ€. time(2)λ λΉμ·ν μ 보λ₯Ό μ 곡νλ μ λ°λκ° μ΄ λ¨μμ΄λ€. clock_settime(2)μΌλ‘ μμ€ν
μκ°μ λ°κΏ μ μλ€.
μ΄λ€ λΌμ΄λΈλ¬λ¦¬ ν¨μλ€μ tm
νμ
ꡬ쑰체λ₯Ό μ¨μ *λΆν μκ°(broken-down time)*μ λνλ΄λλ°, μκ° κ°μ λ³κ° μμλ€(λ
, μ, μΌ, μκ°, λΆ, μ΄ λ±)λ‘ λλ μ μ μ₯νλ κ²μ΄λ€. ctime(3)μμ κ·Έ ꡬ쑰체λ₯Ό μ€λͺ
νλ©° λ λ¬λ ₯ μκ°κ³Ό λΆν μκ°μ μλ‘ λ³ννλ ν¨μλ€λ μ€λͺ
νλ€. ctime(3), strftime(3), strptime(3)μμλ λΆν μκ°κ³Ό μΆλ ₯ κ°λ₯ν λ¬Έμμ΄ μκ° ννμ μλ‘ λ³ννλ ν¨μλ€μ μ€λͺ
νλ€.
μ¬λ¬ μμ€ν νΈμΆκ³Ό ν¨μλ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ΄ μΌμ μκ° λμ μ λ€ μ (μ€νμ μ€μ§ν μ) μλ€. nanosleep(2), clock_nanosleep(2), sleep(3) μ°Έκ³ .
μ¬λ¬ μμ€ν νΈμΆμ ν΅ν΄ νλ‘μΈμ€μμ νμ΄λ¨Έλ₯Ό μ€μ ν μ μλ€. κ·Έ νμ΄λ¨Έλ λ―Έλ μ΄λ μμ μ λ§λ£λλ©° μΌμ μ£ΌκΈ°λ‘ λ§λ£λκΈ°λ νλ€. alarm(2), getitimer(2), timerfd_create(2), timer_create(2) μ°Έκ³ .
리λ
μ€ 2.6.28λΆν° μ€λ λλ³λ‘ "νμ΄λ¨Έ κ²μΌλ¦(slack)" κ°μ μ μ΄νλ κ² κ°λ₯νλ€. νμ΄λ¨Έ κ²μΌλ¦ κ°μ΄λ νμμμκ³Ό ν¨κ» λΈλ‘ λΌ μλ νΉμ μμ€ν
νΈμΆλ€μ΄ κΉ¨μ΄λλ κ±Έ 컀λμμ μ§μ°μν¬ μ μλ μκ° κΈΈμ΄μ΄λ€. μ΄λ° μ§μ°μ νμ©νλ©΄ 컀λμμ μ¬λ¬ κΉ¨μ°κΈ° μ΄λ²€νΈλ₯Ό λ³ν©ν μ μκ³ , κ·Έλμ μνλ©΄ μμ€ν
μ΄ κΉ¨μ΄λλ νμλ₯Ό μ€μ¬μ μ λ ₯μ μλ μλ μλ€. μμΈν λ΄μ©μ prctl(2)μ PR_SET_TIMERSLACK
μ€λͺ
μ 보λΌ.
date(1)
, time(1)
, timeout(1)
, adjtimex(2), alarm(2), clock_gettime(2), clock_nanosleep(2), getitimer(2), getrlimit(2), getrusage(2), gettimeofday(2), nanosleep(2), stat(2), time(2), timer_create(2), timerfd_create(2), times(2), utime(2), adjtime(3), clock(3), clock_getcpuclockid(3), ctime(3), ntp_adjtime(3), ntp_gettime(3), pthread_getcpuclockid(3), sleep(3), strftime(3), strptime(3), timeradd(3), usleep(3), rtc(4), hwclock(8)
2018-04-30