Главная » 2017 » Ноябрь » 18 » man 7 time
21:43
man 7 time

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


time - обзор времени и таймеров



ОПИСАНИЕ


Реальное время и время процесса
Реальное время (real time) — время, измеряемое от некоторой постоянной точки, или
от стандартной точки в прошлом (смотрите описание эпохи (Epoch) и календарного
времени далее), или от некоторой точки (например, с момента запуска) в жизни
процесса (прошедшее время (elapsed time)).

Время процесса (process time) — количество процессорного времени, использованного
процессом. Иногда его делят на пользовательское (user) и системное (system).
Пользовательское время ЦП — это время, потраченное на исполнение кода в режиме
пользователя. Системное время ЦП — это время, потраченное ядром, выполняющемся в
системном режиме, для процесса (например, на обработку системных вызовов). Команда
time(1) позволяет определить количество процессорного времени, затраченного при
выполнении программы. Программа может определить количество потраченного
процессорного времени с помощью times(2), getrusage(2) или clock(3).

Аппаратные часы
В большинстве компьютеров (оснащённых батареей) имеются аппаратные часы, которые
ядро читает при запуске для инициализации программных часов. Подробности смотрите
в rtc(4) и hwclock(8).

Программные часы, HZ и миги (jiffies)
Точность различных системных вызовов, которые задают время ожидания (timeouts)
(например, select(2), sigtimedwait(2)) и измеряют процессорное время (например,
getrusage(2)), ограничена точностью программных часов (software clock) — часов,
поддерживаемых ядром, у которых время измеряется в мигах (jiffies). Размер мига
определяется значением константы ядра 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).

Таймеры высокой точности
До Linux 2.6.21 точность системных вызовов таймера и сна (смотрите далее) была
ограничена размером мига.

Начиная с Linux 2.6.21, Linux поддерживает таймеры высокой точности (HRT),
включаемые через CONFIG_HIGH_RES_TIMERS. В системе, которая поддерживает HRT,
точность сна и таймеров в системных вызовах больше не ограничена мигом, а только
точностью аппаратуры (в современной аппаратуре, обычно, микросекундная точность).
Вы можете определить поддерживаются ли таймеры высокой точности, проверив
результат вызова clock_getres(2) или поискав записи «resolution» в
/proc/timer_list.

HRT поддерживаются не на всех аппаратных архитектурах (среди имеющих отметим x86,
секунды. Системное время можно изменять с помощью settimeofday(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).

Допуск таймера
Начиная с Linux 2.6.28, возможно контролировать значение «допуска таймера» (timer
slack) нити. Допуск таймера — это промежуток времени, на который ядро может
задержать пробуждение определённых системных вызовов, заблокированных на время.
Эта задержка позволяет ядру объединять события пробуждения, таким образом сокращая
количество системных пробуждений и экономя энергию. Подробней смотрите описание
PR_SET_TIMERSLACK в prctl(2).



СМОТРИТЕ ТАКЖЕ


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)



Категория: (7) Различные описания, соглашения и прочее | Просмотров: 470 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar