OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man7 / time.7
index f971413..eb52a29 100644 (file)
 .\" Updated 2008-08-10, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.05
 .\"
 .TH TIME 7 2010-02-25 "Linux" "Linux Programmer's Manual"
-.SH Ì¾Á°
-time \- »þ´Ö¤È¥¿¥¤¥Þ¤Î³µÍ×
-.SH ÀâÌÀ
-.SS "¼Â»þ´Ö (real time) ¤È¥×¥í¥»¥¹»þ´Ö"
-\fI¼Â»þ´Ö\fR¤Ï¡¢ÆÃÄê¤Î»þÅÀ¤«¤é·×¤Ã¤¿»þ´Ö¤ÈÄêµÁ¤µ¤ì¤ë¡£
-ÆÃÄê¤Î»þÅÀ¤È¤Ï¡¢²áµî¤Îɸ½àŪ¤Ê»þÅÀ
-(²¼µ­¤Îµª¸µ (Epoch) ¤È¥«¥ì¥ó¥À»þ¹ï¤ÎÀâÌÀ¤ò»²¾È) ¤ä¡¢
-¥×¥í¥»¥¹¤Î°ìÀ¸¤Ë¤ª¤±¤ë²¿¤é¤«¤Î»þÅÀ (Î㤨¤Ð¡¢³«»Ï»þ) ¤Ç¤¢¤ë
-.RI ( "·Ð²á»þ´Ö" )¡£
+.SH 名前
+time \- 時間とタイマの概要
+.SH 説明
+.SS "実時間 (real time) とプロセス時間"
+\fI実時間\fRは、特定の時点から計った時間と定義される。
+特定の時点とは、過去の標準的な時点
+(下記の紀元 (Epoch) とカレンダ時刻の説明を参照) や、
+プロセスの一生における何らかの時点 (例えば、開始時) である
+.RI ( "経過時間" )。
 
-\fI¥×¥í¥»¥¹»þ´Ö\fR¤Ï¡¢¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ»È¤ï¤ì¤¿Áí CPU »þ´Ö¤ÈÄêµÁ¤µ¤ì¤ë¡£
-¿¤¯¤Î¾ì¹ç¡¢\fI¥æ¡¼¥¶\fR»þ´Ö¤È\fI¥·¥¹¥Æ¥à\fR»þ´Ö¤Ëʬ¤±¤é¤ì¤ë¡£
-¥æ¡¼¥¶ CPU »þ´Ö¤Ï¡¢¥³¡¼¥É¤ò¥æ¡¼¥¶¥â¡¼¥É¤Ç¼Â¹Ô¤¹¤ë¤Î¤Ë»È¤Ã¤¿»þ´Ö¤Ç¤¢¤ë¡£
-¥·¥¹¥Æ¥à CPU »þ´Ö¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤Î¤¿¤á¤Ë
-¥«¡¼¥Í¥ë¤¬¥·¥¹¥Æ¥à¥â¡¼¥É¤Ç¼Â¹Ô¤¹¤ë¤Î¤Ë»È¤Ã¤¿»þ´Ö¤Ç¤¢¤ë
-(Î㤨¤Ð¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¼Â¹Ô¤¹¤ë¤Î¤Ë»È¤Ã¤¿»þ´Ö)¡£
+\fIプロセス時間\fRは、プロセスによって使われた総 CPU 時間と定義される。
+多くの場合、\fIユーザ\fR時間と\fIシステム\fR時間に分けられる。
+ユーザ CPU 時間は、コードをユーザモードで実行するのに使った時間である。
+システム CPU 時間は、そのプロセスのために
+カーネルがシステムモードで実行するのに使った時間である
+(例えば、システムコールを実行するのに使った時間)。
 .BR time (1)
-¥³¥Þ¥ó¥É¤Ï¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤ËÈñ¤µ¤ì¤¿Áí CPU »þ´Ö¤ò·×¤ë¤Î¤Ë»ÈÍѤµ¤ì¤ë¡£
-¥×¥í¥°¥é¥à¤Ï¡¢¼«¿È¤¬Èñ¤·¤¿Áí CPU »þ´Ö¤ò
+コマンドはプログラムの実行に費された総 CPU 時間を計るのに使用される。
+プログラムは、自身が費した総 CPU 時間を
 .BR times (2),
 .BR getrusage (2),
 .BR clock (3)
-¤ò»È¤Ã¤Æ·×¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-.SS ¥Ï¡¼¥É¥¦¥§¥¢¥¯¥í¥Ã¥¯
-¿¤¯¤Î¥³¥ó¥Ô¥å¡¼¥¿¤¬ (ÅÅÃӤǶîÆ°¤µ¤ì¤ë) ¥Ï¡¼¥É¥¦¥§¥¢¥¯¥í¥Ã¥¯¤ò»ý¤Ã¤Æ¤¤¤ë¡£
-¥«¡¼¥Í¥ë¤Ïµ¯Æ°»þ¤Ë¥½¥Õ¥È¥¦¥§¥¢¥¯¥í¥Ã¥¯¤ò½é´ü²½¤¹¤ë¤¿¤á¤Ë
-¥Ï¡¼¥É¥¦¥§¥¢¥¯¥í¥Ã¥¯¤òÆɤ߹þ¤à¡£
-¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï¡¢
+を使って計ることができる。
+.SS ã\83\8fã\83¼ã\83\89ã\82¦ã\82§ã\82¢ã\82¯ã\83­ã\83\83ã\82¯
+多くのコンピュータが (電池で駆動される) ハードウェアクロックを持っている。
+カーネルは起動時にソフトウェアクロックを初期化するために
+ハードウェアクロックを読み込む。
+より詳しい情報は、
 .BR rtc (4)
-¤È
+と
 .BR hwclock (8)
-¤ò»²¾È¤¹¤ë¤³¤È¡£
-.SS "¥½¥Õ¥È¥¦¥§¥¢¥¯¥í¥Ã¥¯, HZ, Jiffy"
-¥¿¥¤¥à¥¢¥¦¥È¤òÀßÄꤷ¤¿¤ê (Î㤨¤Ð
+を参照すること。
+.SS "ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\82¯ã\83­ã\83\83ã\82¯, HZ, Jiffy"
+タイムアウトを設定したり (例えば
 .BR select (2),
-.BR sigtimedwait (2))¡¢
-.\" semtimedop(), mq_timedwait(), io_getevents(), poll() ¤ÏƱ¤¸ futex ¤Ç¤¢¤ê¡¢
-.\" ¤·¤¿¤¬¤Ã¤Ã¤Æ sem_timedwait() ¤Ï¹âÀºÅÙ¥¿¥¤¥Þ¤ò»ÈÍѤ·¤Æ¤¤¤ë¤è¤¦¤Ç¤¢¤ë¡£
-CPU »þ´Ö¤ò·×¬¤·¤¿¤ê (Î㤨¤Ð
-.BR getrusage (2)) ¤¹¤ëÍÍ¡¹¤Ê¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÀºÅÙ¤Ï
-.I ¥½¥Õ¥È¥¦¥§¥¢¥¯¥í¥Ã¥¯
-¤Îʬ²òǽ (resolution) ¤ËÀ©¸Â¤µ¤ì¤ë¡£
-¥½¥Õ¥È¥¦¥§¥¢¥¯¥í¥Ã¥¯¤È¤Ï¡¢¥«¡¼¥Í¥ë¤¬´ÉÍý¤¹¤ë
+.BR sigtimedwait (2))
+.\" semtimedop(), mq_timedwait(), io_getevents(), poll() は同じ futex であり、
+.\" したがっって sem_timedwait() は高精度タイマを使用しているようである。
+CPU 時間を計測したり (例えば
+.BR getrusage (2)) する様々なシステムコールの精度は
+.I ã\82½ã\83\95ã\83\88ã\82¦ã\82§ã\82¢ã\82¯ã\83­ã\83\83ã\82¯
+の分解能 (resolution) に制限される。
+ソフトウェアクロックとは、カーネルが管理する
 .I jiffy
-ñ°Ì¤Ç»þ´Ö¤ò·×¬¤¹¤ë¥¯¥í¥Ã¥¯¤Î¤³¤È¤Ç¤¢¤ë¡£
-jiffy ¤ÎÂ礭¤µ¤Ï¥«¡¼¥Í¥ëÄê¿ô
+単位で時間を計測するクロックのことである。
+jiffy の大きさはカーネル定数
 .I HZ
-¤ÎÃͤǷèÄꤵ¤ì¤ë¡£
+の値で決定される。
 
 .I HZ
-¤ÎÃͤϥ«¡¼¥Í¥ë¤Î¥Ð¡¼¥¸¥ç¥ó¤È¥Ï¡¼¥É¥¦¥§¥¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç°Û¤Ê¤ë¡£
-i386 ¤Î¾ì¹ç¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë:
-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)¡£
+の値はカーネルのバージョンとハードウェアプラットフォームで異なる。
+i386 の場合は以下の通りである:
+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)。
 
 .BR times (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÏÆüì¤Ê¥±¡¼¥¹¤Ç¤¢¤ê¡¢
-¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥«¡¼¥Í¥ëÄê¿ô
+システムコールは特殊なケースであり、
+このシステムコールはカーネル定数
 .I USER_HZ
-¤ÇÄêµÁ¤µ¤ì¤¿Î³Å٤ǻþ´Ö¤òÊó¹ð¤¹¤ë¡£
-¥æ¡¼¥¶¶õ´Ö¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï
+で定義された粒度で時間を報告する。
+ユーザ空間のアプリケーションは
 .I sysconf(_SC_CLK_TCK)
-¤ò»È¤Ã¤Æ¤³¤ÎÄê¿ô¤ÎÃͤòÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£
+を使ってこの定数の値を知ることができる。
 .\" glibc gets this info with a little help from the ELF loader;
 .\" see glibc elf/dl-support.c and kernel fs/binfmt_elf.c.
 .\"
-.SS "¹âÀºÅÙ¥¿¥¤¥Þ"
-Linux 2.6.21 ¤è¤êÁ°¤Ç¤Ï¡¢¥¿¥¤¥Þ¤ä¥¹¥ê¡¼¥×´ØÏ¢¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÀºÅÙ¤â
-jiffy ¤Î¥µ¥¤¥º¤Ë¤è¤êÀ©¸Â¤µ¤ì¤Æ¤¤¤¿¡£
+.SS "高精度タイマ"
+Linux 2.6.21 より前では、タイマやスリープ関連のシステムコールの精度も
+jiffy のサイズにより制限されていた。
 
-Linux 2.6.21 °Ê¹ß¤Ç¤Ï¡¢Linux ¤Ï¹âÀºÅÙ¥¿¥¤¥Þ (high-resolution timers; HRTs)
-¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤ª¤ê¡¢
+Linux 2.6.21 以降では、Linux は高精度タイマ (high-resolution timers; HRTs)
+をサポートしており、
 .B CONFIG_HIGH_RES_TIMERS
-¤ÇÀ©¸æ¤Ç¤­¤ë¡£
-¹âÀºÅÙ¥¿¥¤¥Þ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥¿¥¤¥Þ¤È¥¹¥ê¡¼¥×´ØÏ¢¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë
-¤ÎÀºÅ٤Ϥâ¤Ï¤ä jiffy ¤ËÀ©Ì󤵤ì¤ë¤³¤È¤Ï¤Ê¤¯¡¢
-¥Ï¡¼¥É¥¦¥§¥¢¤¬µö¤¹¸Â¤ê¤ÎÀºÅ٤Ȥʤë
-(ºÇ¶á¤Î¥Ï¡¼¥É¥¦¥§¥¢¤Ç¤Ï¥Þ¥¤¥¯¥íÉÃñ°Ì¤ÎÀºÅÙ¤¬°ìÈÌŪ¤Ç¤¢¤ë)¡£
-¹âÀºÅÙ¥¿¥¤¥Þ¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤«¤Ï¡¢
+で制御できる。
+高精度タイマをサポートしているシステムでは、タイマとスリープ関連のシステムコール
+の精度はもはや jiffy に制約されることはなく、
+ハードウェアが許す限りの精度となる
+(最近のハードウェアではマイクロ秒単位の精度が一般的である)。
+高精度タイマがサポートされているかは、
 .BR clock_getres (2)
-¤ò¸Æ¤Ó½Ð¤·¤Æʬ²òǽ¤ò³Îǧ¤¹¤ë¤«¡¢
+を呼び出して分解能を確認するか、
 .I /proc/timer_list
-Æâ¤Î "resolution" ¥¨¥ó¥È¥ê¤ò»²¾È¤¹¤ë¤«¤ÇȽÃǤǤ­¤ë¡£
+内の "resolution" エントリを参照するかで判断できる。
 
-¹âÀºÅÙ¥¿¥¤¥Þ¤Ï¤¹¤Ù¤Æ¤Î¥Ï¡¼¥É¥¦¥§¥¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë
-Ìõ¤Ç¤Ï¤Ê¤¤ (Âбþ¤·¤Æ¤¤¤ë¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ï x86, arm, powerpc ¤Ç¤¢¤ë)¡£
-.SS "µª¸µ"
-UNIX ¥·¥¹¥Æ¥à¤Ï»þ¹ï¤ò
-µª¸µ (1970-01-01 00:00:00 +0000 (UTC)) ¤«¤é¤ÎÉÿô¤Çɽ¸½¤¹¤ë¡£
+高精度タイマはすべてのハードウェアアーキテクチャでサポートされている
+訳ではない (対応しているアーキテクチャは x86, arm, powerpc である)。
+.SS "紀元"
+UNIX システムは時刻を
+紀元 (1970-01-01 00:00:00 +0000 (UTC)) からの秒数で表現する。
 
-¥×¥í¥°¥é¥à¤Ï \fI¥«¥ì¥ó¥À»þ¹ï\fR ¤ò
+プログラムは \fIカレンダ時刻\fR を
 .BR gettimeofday (2)
-¤ò»È¤Ã¤Æ·×¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
-¤³¤Î´Ø¿ô¤Ïµª¸µ¤«¤é¤Î·Ð²á»þ´Ö¤ò (Éäȥޥ¤¥¯¥íÉäÇ) ÊÖ¤¹¡£
+を使って計ることができる。
+この関数は紀元からの経過時間を (秒とマイクロ秒で) 返す。
 .BR time (2)
-¤ÏƱÍͤξðÊó¤òÄ󶡤¹¤ë¤¬¡¢ºÇ¤â¶á¤¤ÉäÎÀºÅÙ¤·¤«¤Ê¤¤¡£
-¥·¥¹¥Æ¥à»þ¹ï¤Ï
+は同様の情報を提供するが、最も近い秒の精度しかない。
+システム時刻は
 .BR settimeofday (2)
-¤ÇÊѹ¹¤Ç¤­¤ë¡£
-.SS "Í×ÁÇÊ̤λþ¹ï"
-¥é¥¤¥Ö¥é¥ê´Ø¿ô¤ÎÃæ¤Ë¤Ï
+で変更できる。
+.SS "要素別の時刻"
+ライブラリ関数の中には
 .I tm
-·¿¤Î¹½Â¤ÂΤò»È¤¦¤â¤Î¤¬¤¢¤ë¡£
-¤³¤Î¹½Â¤ÂΤÏ\fIÍ×ÁÇÊ̤λþ¹ï\fR¤òɽ¤·¡¢
-»þ¹ï¤ÎÃͤòÊÌ¡¹¤ÎÍ×ÁÇ (ǯ¡¦·î¡¦Æü¡¦»þ¡¦Ê¬¡¦ÉäʤÉ) ¤Ëʬ¤±¤Æ³ÊǼ¤¹¤ë¡£
-¤³¤Î¹½Â¤ÂΤÏ
+型の構造体を使うものがある。
+この構造体は\fI要素別の時刻\fRを表し、
+時刻の値を別々の要素 (年・月・日・時・分・秒など) に分けて格納する。
+この構造体は
 .BR ctime (3)
-¤Ëµ­½Ò¤µ¤ì¤Æ¤ª¤ê¡¢¥«¥ì¥ó¥À»þ¹ï¤òÍ×ÁÇÊ̤λþ¹ï¤ËÊÑ´¹¤¹¤ë
-´Ø¿ô¤Ë¤Ä¤¤¤Æ¤âµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£
-Í×ÁÇÊ̤λþ¹ï¤òɽ¼¨²Äǽ¤Êʸ»úÎó¤ËÊÑ´¹¤¹¤ë´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢
+に記述されており、カレンダ時刻を要素別の時刻に変換する
+関数についても記述されている。
+要素別の時刻を表示可能な文字列に変換する関数については、
 .BR ctime (3),
 .BR strftime (3),
 .BR strptime (3)
-¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£
-.SS "¥¿¥¤¥Þ¤Î¥¹¥ê¡¼¥×¤ÈÀßÄê"
-ÍÍ¡¹¤Ê¥·¥¹¥Æ¥à¥³¡¼¥ë¤È´Ø¿ô¤Ë¤è¤ê¡¢»ØÄꤵ¤ì¤¿°ìÄê¤Î»þ´Ö¡¢
-¥×¥í¥°¥é¥à¤Ï¥¹¥ê¡¼¥× (¼Â¹Ô¤òÄä»ß) ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£
+に記述されている。
+.SS "タイマのスリープと設定"
+様々なシステムコールと関数により、指定された一定の時間、
+プログラムはスリープ (実行を停止) することが可能である。
 .BR nanosleep (2),
 .BR clock_nanosleep (2),
 .BR sleep (3)
-¤ò»²¾È¤¹¤ë¤³¤È¡£
+を参照すること。
 
-ÍÍ¡¹¤Ê¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë¤è¤ê¡¢¥×¥í¥»¥¹¤Ï¾­Íè¤Î¤¢¤ë»þÅÀ¤Ç
-Í­¸ú´ü´Ö¤¬½ªÎ»¤¹¤ë¥¿¥¤¥Þ¤òÀßÄê¤Ç¤­¤ë¡£
-¤Þ¤¿¥ª¥×¥·¥ç¥ó¤È¤·¤Æ·«¤êÊÖ¤·´Ö³Ö¤¬»ØÄê¤Ç¤­¤ë¤â¤Î¤â¤¢¤ë¡£
+様々なシステムコールにより、プロセスは将来のある時点で
+有効期間が終了するタイマを設定できる。
+またオプションとして繰り返し間隔が指定できるものもある。
 .BR alarm (2),
 .BR getitimer (2),
 .BR timerfd_create (2),
 .BR timer_create (2)
-¤ò»²¾È¤¹¤ë¤³¤È¡£
-.SH ´ØÏ¢¹àÌÜ
+を参照すること。
+.SH 関連項目
 .BR date (1),
 .BR time (1),
 .BR adjtimex (2),