time

Autres langues

Langue: ja

Autres versions - même langue

Version: 2006-04-28 (fedora - 25/11/07)

Autres sections - même nom

Section: 7 (Divers)

名前

time - 時間の概要

説明

実時間 (real time) とプロセス時間

実時間は、特定の時点から計った時間と定義される。 特定の時点とは、過去の標準的な時点 (下記の紀元 (Epoch) とカレンダ時刻の説明を参照) や、 プロセスの一生における何らかの時点 (例えば、開始時) である (経過時間)。

プロセス時間は、プロセスによって使われた総 CPU 時間と定義される。 多くの場合、ユーザ時間とシステム時間に分けられる。 ユーザ CPU 時間は、コードをユーザモードで実行するのに使った時間である。 システム CPU 時間は、そのプロセスのために カーネルがシステムモードで実行するのに使った時間である (例えば、システムコールを実行するのに使った時間)。 time(1) コマンドはプログラムの実行に費された総 CPU 時間を計るのに使用される。 プログラムは、自身が費した総 CPU 時間を times(2), getrusage(2), clock(3) を使って計ることができる。

ハードウェアクロック

多くのコンピュータが (電池で駆動される) ハードウェアクロックを持っている。 カーネルは起動時にソフトウェアクロックを初期化するために ハードウェアクロックを読み込む。 より詳しい情報は、 rtc(4) と hwclock(8) を参照すること。

ソフトウェアクロック, HZ, Jiffy

多くのシステムコールとタイムスタンプの精度は、 ソフトウェアクロックの分解能に制限される。 ソフトウェアクロックはカーネルによって管理され、 時間を jiffy 単位で計る。 jiffy の大きさはカーネル定数 HZ の値で決定される。 HZ の値はカーネルのバージョンとハードウェアプラットフォームで異なる。 x86 の場合は以下の通りである: 2.4.x とそれより前のカーネルでは、HZ は 100 であったので、 jiffy の値は 0.01 秒になっていた。 2.6.0 以降では、HZ は 1000 に増やされたので、jiffy の値は 0.001 秒である。 カーネル 2.6.13 以降では、HZ の値はカーネル設定パラメータになり、 100, 250 (デフォルト), 1000 という値にできる。 それぞれ jiffy の値は 0.01, 0.004, 0.001 秒になる。 カーネル 2.6.20 以降では、300 も利用できるようになっている。 300 は一般的な映像フレームレートの公倍数である (PAL, 25HZ; NTSC, 30HZ)。

紀元

Unix システムは時刻を紀元からの秒数で表現する。 紀元は 1970 年 1 月 1 日の朝 0:00:00 UTC で定義される。

プログラムはカレンダ時刻gettimeofday(2) を使って計ることができる。 この関数は紀元からの経過時間を (秒とマイクロ秒で) 返す。 time(2) は同様の情報を提供するが、最も近い秒の精度しかない。 システム時刻は settimeofday(2) で変更できる。

要素別の時刻

ライブラリ関数の中には tm 型の構造体を使うものがある。 この構造体は要素別の時刻を表し、 時刻の値を別々の要素 (年・月・日・時・分・秒など) に分けて格納する。 この構造体は ctime(3) に記述されており、カレンダ時刻を要素別の時刻に変換する 関数についても記述されている。 要素別の時刻を表示可能な文字列に変換する関数については、 ctime(3), strftime(3), strptime(3) に記述されている。

タイマのスリープと設定

様々なシステムコールと関数により、指定された一定の時間、 プログラムはスリープ (実行を停止) することが可能である。 nanosleep(2) と sleep(3) を参照すること。

様々なシステムコールにより、プロセスは将来のある時点で 有効期間が終了するタイマを設定できる。 またオプションとして繰り返し間隔が指定できるものもある。 alarm(2), getitimer(2), timer_create(3) を参照すること。

関連項目

date(1), time(1), adjtimex(2), alarm(2), getitimer(2), getrlimit(2), getrusage(2), gettimeofday(2), nanosleep(2), stat(2), time(2), times(2), utime(2), adjtime(3), clock(3), sleep(3), ctime(3), strftime(3), strptime(3), usleep(3), rtc(4), hwclock(8)