コンピュータにおける資源配分(しげんはいぶん、)とは、使用可能な計算資源(資源、リソースとも)を経済的な方法で割り当てる際に使用され、資源管理に含まれる。並行プログラミングのコンテキストでは、計算資源を特定のスレッドに割り当てるプロセス。これは、複数のスレッド間で共有資源に適切にアクセスするために、並行プログラミングの一部として必要であるが、操作は非共有資源には必要ない。

共有資源にはさまざまな種類があるため、これらの資源へのアクセスにはさまざまな種類がある。すべてのタイプの割り当てを処理する簡単なソリューションはない。標準的な割り当ての場合には古典的な方法があるが、特別な割り当ては適切なアルゴリズムの対象でなければならない。

概要 コンピューティング分野では、 アプリケーションをシステムで実行するためには資源配分が必要である。ユーザーがアプリケーションプログラムを開くと、プログラムはプロセスとしてカウントされ、実行できるように、コンピュータに一定の資源配分を要求する。このような資源には、コンピュータのメモリや、デバイスインタフェースバッファ、1つ以上のファイル へのアクセス、あるいは必要なコンピュータの処理能力がある。

一度に1つのスレッドのみを許可する資源配分 この種の資源には、たとえば、メモリ空間、ハードウェアアクセスバスなどがある。これは、1つのタスクでのみ機能する資源である。

この種類の資源配分は重要なセクションと同等であるので、この資源へのアクセスを管理するために、 mutexなどの単純なメソッドを使用することが可能。

一度に複数のスレッドを許可する資源配分 この種類の資源は、一度に使用できる特定の数のスレッドをサポート。

この種の資源配分は、 セマフォを使用して実行できる。

予約時の資源配分 この種の資源には予約が必要。これは、たとえば、資源が必要なときに絶対に使用可能でなければならない重要なアプリケーションの場合がある。

この種の資源配分では、 非表示ノードアルゴリズムなどのメソッドを使用して、資源予約カレンダーを管理。

読み取り/書き込みの概念を持つ資源配分 この種類の資源には、複数の読み取りスレッドと単一の書き込みスレッドがアクセスできる。たとえば、データファイルにすることができるがこの種の割り当ての古典的な問題は、リーダーとライター間の優先度の問題である。

この種類の配分は読者と作家の問題と同等。

プロセッサ処理時間 コンピュータ起動時やユーザー操作によって読み込まれたプログラムが多数あるにもかかわらず、シングルプロセッサを搭載したコンピュータは同時に一つのプロセスしか実行できない。シングルプロセッサのコンピュータは、プロセッサがプログラムをすばやく切り替え、非常に短い時間で必要な処理を実行するため、一度に複数のプログラムを実行しているように見える。この処理はマルチタスクまたはタイムスライシングとして知られる。時間の割り当ては自動的に行われ、特定のプロセスに高い優先度または低い優先度が与えられようとも、原則的には優先度の高いプログラムにより多くのプロセッサの処理時間が与えられる。

マルチプロセッサ搭載のコンピュータでは、異なるプロセスを異なるプロセッサに割り当てることで本当のマルチタスクを処理できる。 強力な処理能力を必要とする Adobe PhotoshopやYafRayなど一部のプログラムでは、一度に複数のプロセッサで実行できるようにコーディングされておりより迅速かつ効率的に実行できる。この方法は、一般にマルチプログラミング環境に適しており、実際に非常に有益である。

関連項目 資源配分