計算資源
ユーティリティコンピューティングは、機器自体ではなくそれが提供する計算資源を売買することである。
OSがジョブやプロセスの資源使用を管理する機能をシステム資源管理 (system resource management = SRM) という。SRMの管理下にある資源をシステムリソース (system resource) と言う。
リソースハンドルは現にアクセス中の資源の識別子である。リソースハンドルは整数値やさらなる情報へのポインタなどで表される。代表的なリソースハンドルとしてファイル識別子やソケットがある。
オペレーティングシステムや仮想機械などは確保され使用された後で解放されていない資源へのアクセスを完了させる機能がある。これをリソーストラッキングと呼ぶ。仮想機械で実装する際にはガベージコレクションの形をとることが多い。
メモリ空間へのアクセスはセマフォで制御することが多いが、それがデッドロックと呼ばれる異常状態を引き起こすことがある。それは例えば複数のスレッドやプロセスの間で、他が確保している資源を互いに確保しようとしたときに発生する。デッドロックが発生するとプログラムは応答不能の状態となることが多い。
資源へのアクセスはキューを使って制限されることがある。CPUの計算時間の場合、タスクキューの制御アルゴリズムをスケジューリングと呼ぶ。
最も単純な計算資源は、計算時間とメモリ使用量である。計算時間は問題を解くのに要するステップ数で表され、メモリ使用量は問題を解くのに要する記憶領域の量で表される。これらよりも複雑な資源も定義されている。
計算問題は一般に、妥当な入力を与えられたときの動作によって定義される。例えば、「整数 n を与えられたとき、n が素数かどうかを判定せよ」という問題、「2つの数 x と y を与えられたとき、積 x*y を求めよ」という問題などがある。入力が大きくなれば、必要な計算資源の量も増える。従って、問題を解くのに要する計算資源の量は、入力の長さや大きさの関数として表される。
問題を解くのに要する計算資源の量を研究することは重要であり、それによって、ある問題を解くアルゴリズムが最適かどうかを判断できる。ある一定の量の計算資源を使って解ける問題の集合を複雑性クラスと呼び、異なる複雑性クラス間の関係が計算複雑性理論での重要な話題となっている。
計算能力の定量化についても、様々な努力がなされてきた。制限されたチューリングマシンを使って計算をモデル化し、状態遷移数やアルファベットの大きさで特定の問題を解くのに要する計算能力を表す 。