リソース割り当て

リソース割り当て（リソースわりあて、英語: Resource allocation）とは、使用可能な計算資源を経済的な方法で割り当てる際に使用される。リソース管理に含まれる。並行プログラミングのコンテキストでは、リソースを特定のスレッドに割り当てるプロセス。これは、複数のスレッド間で共有リソースに適切にアクセスするために、並行プログラミングの一部として必要であるが、操作は非共有リソースには必要ない。 

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

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

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

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

一度に複数のスレッドを許可するリソース割り当て 
この種類のリソースは、一度に使用できる特定の数のスレッドをサポート。 

この種のリソースの割り当ては、 セマフォを使用して実行できる。

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

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

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

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

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

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

関連項目 

 リソース割り当て （経済概念、プロジェクト管理） 

スケジューリング (コンピューティング)
並行計算