ユーザーCPU時間とシステムCPU時間って何がちがう?

  • ---

    LINEで送る
  • -

    ブックマーク
  • -

    pocket
  • -

    rss
programing image

CPU時間は、プログラムが処理するためにCPUを占有した時間の累計です。

CPUを『だれが』使うかでユーザーCPU時間とシステムCPU時間に分かれます。

かんたんに分かりやすく、関係とちがいを説明します。

CPU時間とは?

プログラムはCPUで処理します。そのとき、処理で使う分のCPUをほかのプログラムに使われないように占有します。

その占有している時間をCPU時間といいます。

プログラムが処理するのに必要なCPUの量(時間)ですね?

もちろん、CPUの性能が高くてOSが効率よくさばけばCPUを使う時間は短くなります。

ユーザーCPU時間とシステムCPU時間

CPUは、アプリケーション(プログラム)が使うときと、OS(システム)が使うときがあり、

プログラムユーザーCPU時間
OSシステムユーザー時間

というふうに分かれます。

OSのカーネルがCPUをだれが使うのか判断します。

カーネル(kernel)

アプリケーションとハードウェア(CPU, メモリ, HDD/SSD)の間のデータや処理のやりとりをコントロールする、OSの中核機能。

カーネルはコマンド群をもっており、アプリケーションからOSに処理をまかせるときや、OSで直接コマンド入力して操作するのに使う。

システムコールという。

ユーザーCPU時間

ユーザーCPU時間は分かりやすいです。実行するアプリケーションが使うCPU時間です。

アプリケーションが占有している間、システムにもほかのアプリケーションにも影響されません。

PHPやJavaなどいろいろなプログラム言語でアプリケーションを作りますが、そのプログラムが使うCPU時間です。

システムCPU時間

システムCPU時間はOS(オペレーティングシステム)が使うCPU時間です。

no image person
OSってプログラムの集合体でしょ?ユーザーCPU時間にならないの?

と思うかもしれません。

システムCPU時間は細かいことをいうと、OSのカーネルのシステムコールが使うCPU時間です。

カーネルのシステムコールは、OSが処理するのに使う原始的なプログラムのコマンドです。

Linuxを使うときにコマンド入力しますよね?あれがシステムコールのコマンドです。

コマンドプロンプトで入力するコマンドといったほうが分かりやすいかも。

システムCPU時間は、システムがCPUを占有しているので、ほかのシステムの処理や、ほかのアプリケーションが使うシステムコールに影響されます。

システムCPU時間はシステムコールが使うCPU時間

システムコールはカーネルに仕事をお願いする命令

アプリケーションはシステムのCPUを使う

アプリケーションを実行するとき、システムCPU時間は0じゃありません。

アプリケーションを実行するとシステムがなんらかの処理をするからです。

たとえば

ファイル読み込み・書き込み・削除

メモリのコントロール

など。

OSは、効率よくハードウェアを使いまわすように管理するのも大事な仕事なので、ハードウェアまわりの処理はシステムにおまかせします。

アプリケーションの処理のなかには、システムに仕事を丸投げして結果だけをもらうことがけっこうあります。

もちろん、丸投げした先の処理が使うCPUは、システムCPU時間です。

前のページ
プロセスとスレッドの違い - ついでにタスクとジョブ -
Webセッションとは何か?ついでにクッキーとは何か?
次のページ
SNSでも記事を配信しています。
コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

top
この記事を気に入ったらぜひシェアも!!