Question:
- CPUの刻みはどのように計算され、何を表しているのでしょうか?
- 単一の
tick
は10 miliseconds
と同じで、もしあるスレッドが呼び出されなかったと報告した場合(5 * 10 ticks = 500 ticks
)、これはCPUが忙しすぎて前記のスレッドを動作させるためのスケジュールを立てられなかったことを意味しているのでしょうか?
41 Aaron 2010-01-27
目盛りとは、システム内部の時間を計測するための任意の単位です。通常、目盛りのためのOS内部カウンタがあり、OSの様々な機能で使用される現在時刻と日付は、そのカウンタから導き出されます
目盛りが何ミリ秒を表すかは OS に依存しており、インストールによっても異なる場合があります。目盛りを秒に変換するには、OSのメカニズムを使用します
- MS Windowsでは、1ミリ秒に1万回の目盛りがあります(http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspxを参照)
- Linux では、1 秒あたりのクロックティック数は
sysconf(_SC_CLK_TCK);
を用いて求めることができます。http://linux.die.net/man/2/times を参照してください
スレッドが呼び出されていないと報告する理由について。それはスレッドがどこかでブロックされているかどうか(待機中、I/Oなど)によります。もしブロックされていなければ、OS のスケジューラがいつ実行されるかを決定します
Edit:
おそらく残念ながら、一部の著者はプロセッサのクロックサイクルの同義語としてtickを使っていることに注意してください (例: このテキスト)。私は、この使用法はあまり普及していないと信じていますが、それでも、人々が何について話しているのかを最初に見つけることが最善です
36 sleske 2010-01-27
編集:PC Hardware in a Nutshellから引用
“プロセッサクロックは、クロックサイクルまたはティックと呼ばれる時間基準信号を周期的に生成することで、すべてのCPUとメモリの動作を調整します。クロック周波数はギガヘルツ(GHz)で指定され、1秒間に数十億回のティックを指定します。クロック速度は、命令の実行速度を決定します。命令によっては、1ティックを必要とするものもあれば、複数ティックを必要とするものもあり、1ティックの間に複数の命令を実行するプロセッサもあります。”
目盛りと目盛りの間の時間はクロック速度によって決まり、実行されるOPに応じて1~数回の目盛りが必要になります。例えば、286クラスのCPUでは、20ティックで2つの数字を乗算する必要があります
高性能タイマーが必要な場合は、すべてのシステムで一定の目盛りがあることに頼ることはできないと思います
CPUスケジューラがスレッドを遅らせた可能性があります、特に優先度の高い別のスレッドがあった場合は。そうですね、CPUが忙しすぎたのかもしれません
3 invert 2010-01-27