2017-09-26 9 views
0

c標準ライブラリと他の関連するタイミング関数で関数clock()によって内部的に使用されるメカニズムは何ですか?誰かがCで同様の関数を書くことができますか?またはアセンブリで?clock()関数は内部的にどのように動作しますか?

このような機能を手動で作成するには、どのような知識が必要ですか?プロセッサーの構造に関する詳細を知る必要がありますか?

+0

なぜクロックを手動で再設定したいのですか? – izlin

+0

@izlin私は手動でクロックを再プログラムしたくありません。 –

答えて

1

clock()の実際の実装は実行中のカーネルによって異なります。本格的なオペレーティングシステムでは、ハードウェアに直接アクセスすることが制限されており、システムコールなどのカーネル機能を使用する必要があります。

たとえば、linux version of clock() in glibcを見ると、times.cで定義されている関数__times()が使用されていて、Linuxのシステムコールが使用されていることがわかります。

BSD versionとは明らかに異なり、__getrusage()に依存しています。

このような機能を自分で作成するには、カーネルを知っている必要があります。通常、実行するハードウェアの詳細を知る必要があります。

+0

IntelカーネルやPowerPCなどで動作するLinuxカーネルではないのですか?ハードウェアごとにカーネルはどのように異なっていますか? –

+0

「同じもの」が意味するものに応じて。 Linuxカーネルによって公開されているインターフェースは、プラットフォーム依存性を最小限に抑えますが、インテルまたはPowerPC上で実行されるバイナリとまったく同じではありません(コンパイル時に別々のプラットフォーム依存のソースファイルも使用します)。 "実行中のカーネル"は、Linuxカーネルに限定されず、BSD、Solarisなどが含まれます。 – desowin

+0

Linuxシステムコールによってはハードウェアプラットフォームで動作し、別のハードウェアプラットフォームでは動作しない可能性がありますか?カーネルを動かすのは何ですか? –

関連する問題