c標準ライブラリと他の関連するタイミング関数で関数clock()によって内部的に使用されるメカニズムは何ですか?誰かがCで同様の関数を書くことができますか?またはアセンブリで?clock()関数は内部的にどのように動作しますか?
このような機能を手動で作成するには、どのような知識が必要ですか?プロセッサーの構造に関する詳細を知る必要がありますか?
c標準ライブラリと他の関連するタイミング関数で関数clock()によって内部的に使用されるメカニズムは何ですか?誰かがCで同様の関数を書くことができますか?またはアセンブリで?clock()関数は内部的にどのように動作しますか?
このような機能を手動で作成するには、どのような知識が必要ですか?プロセッサーの構造に関する詳細を知る必要がありますか?
clock()の実際の実装は実行中のカーネルによって異なります。本格的なオペレーティングシステムでは、ハードウェアに直接アクセスすることが制限されており、システムコールなどのカーネル機能を使用する必要があります。
たとえば、linux version of clock() in glibcを見ると、times.cで定義されている関数__times()が使用されていて、Linuxのシステムコールが使用されていることがわかります。
BSD versionとは明らかに異なり、__getrusage()に依存しています。
このような機能を自分で作成するには、カーネルを知っている必要があります。通常、実行するハードウェアの詳細を知る必要があります。
IntelカーネルやPowerPCなどで動作するLinuxカーネルではないのですか?ハードウェアごとにカーネルはどのように異なっていますか? –
「同じもの」が意味するものに応じて。 Linuxカーネルによって公開されているインターフェースは、プラットフォーム依存性を最小限に抑えますが、インテルまたはPowerPC上で実行されるバイナリとまったく同じではありません(コンパイル時に別々のプラットフォーム依存のソースファイルも使用します)。 "実行中のカーネル"は、Linuxカーネルに限定されず、BSD、Solarisなどが含まれます。 – desowin
Linuxシステムコールによってはハードウェアプラットフォームで動作し、別のハードウェアプラットフォームでは動作しない可能性がありますか?カーネルを動かすのは何ですか? –
なぜクロックを手動で再設定したいのですか? – izlin
@izlin私は手動でクロックを再プログラムしたくありません。 –