計算資源

計算資源（けいさんしげん、英語: computational resource）とは、コンピュータ科学などで、計算機（具体的なコンピュータ、そこで動くプロセスやジョブ、あるいは抽象的な計算模型）が「計算量」のために費す、具体的あるいは抽象的な「資源」である。計算機資源と言うこともあるが、その場合はプロセッサ時間や記憶装置などコンピュータのハードウェアの占有量のような具体的なものを指していることが多い。

その他に、アプリケーションプログラムの設定データのような情報をデスクトップ環境などのシステムが保存しているものを「リソース」と呼ぶことがある。詳細は、最後の#その他の節のリンク先を参照のこと。

計算資源の例 
プロセッサ時間とメモリ使用量が代表的な資源である。

そのほか、2次記憶、入出力装置など、情報処理のためのあらゆる機器が資源となる。物理機器に限らず、ファイルやネットワーク接続、メモリ空間なども仮想資源である。

 CPU時間
 物理メモリと仮想メモリ
 ハードディスクドライブの空き領域とアクセス時間
 ディスプレイ上の面積
 アクティブウィンドウになる権利
 ネットワークの帯域幅
 環境変数

計算資源と計算複雑性理論
最も単純な計算資源は、計算時間とメモリ使用量である。計算時間は問題を解くのに要するステップ数で表され、メモリ使用量は問題を解くのに要する記憶領域の量で表される。これらよりも複雑な資源も定義されている。

計算問題は一般に、妥当な入力を与えられたときの動作によって定義される。例えば、「整数 n を与えられたとき、n が素数かどうかを判定せよ」という問題、「2つの数 x と y を与えられたとき、積 x*y を求めよ」という問題などがある。入力が大きくなれば、必要な計算資源の量も増える。従って、問題を解くのに要する計算資源の量は、入力の長さや大きさの関数として表される。

問題を解くのに要する計算資源の量を研究することは重要であり、それによって、ある問題を解くアルゴリズムが最適かどうかを判断できる。ある一定の量の計算資源を使って解ける問題の集合を複雑性クラスと呼び、異なる複雑性クラス間の関係が計算複雑性理論での重要な話題となっている。

計算能力の定量化についても、様々な努力がなされてきた。制限されたチューリングマシンを使って計算をモデル化し、状態遷移数やアルファベットの大きさで特定の問題を解くのに要する計算能力を表す 。

計算資源の管理

システム資源管理 
OSがジョブやプロセスの資源使用を管理する機能をシステム資源管理 (system resource management = SRM) という。SRMの管理下にある資源をシステムリソース (system resource) と言う。

リソースハンドルは現にアクセス中の資源の識別子である。リソースハンドルは整数値やさらなる情報へのポインタなどで表される。代表的なリソースハンドルとしてファイル識別子やソケットがある。

オペレーティングシステムや仮想機械などは確保され使用された後で解放されていない資源へのアクセスを完了させる機能がある。これをリソーストラッキングと呼ぶ。仮想機械で実装する際にはガベージコレクションの形をとることが多い。

メモリ空間へのアクセスはセマフォで制御することが多いが、それがデッドロックと呼ばれる異常状態を引き起こすことがある。それは例えば複数のスレッドやプロセスの間で、他が確保している資源を互いに確保しようとしたときに発生する。デッドロックが発生するとプログラムは応答不能の状態となることが多い。

資源へのアクセスはキューを使って制限されることがある。CPUの計算時間の場合、タスクキューの制御アルゴリズムをスケジューリングと呼ぶ。

ユーティリティコンピューティング 
ユーティリティコンピューティングは、機器自体ではなくそれが提供する計算資源を売買することである。

その他
 X Window SystemのXリソース（:en:X resources）
 Mac OSのリソースフォーク
 Windowsのリソースとシステムリソース

出典 

計算複雑性理論
オペレーティングシステムの仕組み
数学に関する記事