プロセス分離とは
コンピュータープログラミングにおけるプロセス分離とは、所有していないメモリ空間にアクセスできないようにするために、異なるソフトウェアプロセスを分離することです。 プロセス分離の概念は、特定のプログラムに異なる特権レベルを提供し、それらのプログラムが使用できるメモリを制限することにより、オペレーティングシステムのセキュリティを向上させるのに役立ちます。 プロセス分離には多くの実装がありますが、複数のタブを分離し、プロセスが失敗した場合にコアブラウザー自体を保護するために、Webブラウザーで頻繁に使用されます。 ハードウェアベースでもソフトウェアベースでもかまいませんが、どちらもシステムリソースへのアクセスを制限し、プログラムを独自の仮想アドレス空間に隔離するという同じ目的を果たします。
プロセス分離の基本的な機能には、プロセスまたはプログラムに明確に定義された仮想アドレス空間を割り当てることが含まれます。 このスペースには、プログラムとすべての関連データが保持されます。 プロセスがより多くのスペースを必要とする場合、オペレーティングシステムから要求され、利用可能な場合は割り当てられます。 このようにして、オペレーティングシステムは、2つのプロセスが誤ってまたは意図的に互いのメモリにアクセスするのを防ぐことができます。
プロセス分離のもう1つの目的は、プログラムが重要なシステムに影響を与えないようにしながらプログラムを実行できるようにすることです。 プログラムがオペレーティングシステムの主要な領域にアクセスし、それらを変更または変更しようとするのを防ぐことができます。 これにより、問題が発生した場合、大規模なオペレーティングシステムもシャットダウンせずにプログラムを終了できます。
分離にはさまざまなバリエーションがあります。 1つは、プロセスに特権を割り当てて、システム上の特定のリソースにアクセスしながら、他のリソースを保護することです。 これは多くの場合、プログラムがディスクドライブまたはファイルシステムへのアクセスを制限しながら、インターネットソケットまたはプリンターを使用できるようにするために行われます。
また、特定の手順を実行して、異なるプロセスが互いに安全に通信できるようにしながら、それらを互いに独立した状態に保ち続けることができる状況もあります。 プロセス間通信(IPC)や共有メモリなどのメカニズムを通じて、プロセスは情報を交換できますが、それでも独自のメモリ空間に制限されます。 プロセスがオペレーティングシステムが所有するさまざまな管理プロセスからの情報を必要とする場合、この機能は重要です。
プロセス分離は、いくつかのテクノロジーを可能にする重要なソフトウェアおよびハードウェア機能です。 仮想マシンサーバーは、ハードウェアとソフトウェアの両方の管理に基づいた高度なプロセス分離で動作します。 Webサイトからアプレットまたはその他のスクリプトを安全に実行できるかどうかは、重要なシステムリソースから分離されたプロセスに依存しています。 モバイルデバイスと組み込みシステムは、プロセスの分離を使用して、障害のあるソフトウェアや悪意のあるソフトウェアが実行されている場合でも、コアハードウェアのセキュリティを維持します。