⚙️
プロセスとスレッド
この記事ではオペレーティングシステムにおけるプロセスとスレッドの基礎についてまとめます。
はじめに
オペレーティングシステムはシステムリソースを抽象化し、複数のプログラムが同時に利用できるようにします。
初期のコンピュータは同時に一つのプログラムしか実行できず、リソースの効率的な利用が難しかったのですが、現代のオペレーティングシステムでは、プロセスという単位でリソースの割り当てを行います。
これにより、コンピュータを安定的かつ効率的に利用できるようになりました。
プロセスとは?
上記の通り、プログラムが実行されるとコンピュータのリソースが割り当てられます。
この割り当て対象となる単位のことをプロセスと呼び、プロセスが実行される時、メモリがそのプロセスに割り当てられます。
複数のプロセスが同じメモリ空間で動作していると、他のプロセスの操作によって自プロセスに影響が及ぶ可能性があります。これを防ぐため、各プロセスには物理的なメインメモリ空間ではなく、論理的なアドレス空間が割り当てられ、それぞれが独立したメモリを持つようにします。
スレッドとは?
スレッドはプロセス内の実行単位を指します。スレッドは一つのプロセス内に複数作成されることもあります。プロセス内で複数のスレッドを作成することをマルチスレッドと呼びます。
プロセスがメモリを共有しないのと対照的に、スレッドは同一プロセス内においてメモリを共有します。これにより、スレッドには生成が速いという利点があります。新しいスレッドの作成時にはメモリの確保を必要とせずスタック領域のみ新規に作成されます。
※スレッドは軽量プロセスと呼ばれることもある。
スレッドはプロセス内でメモリを共有し、CPU はそれぞれのスレッドに割り当てられる。
参考書籍
- 松尾啓志「オペレーティングシステム【第 2 版】」森北出版株式会社
Discussion