【OS】プロセス・スレッドについてざっくりまとめ
はじめに
私たちが普段使っているパソコンやスマートフォンでは、さまざまなアプリケーションが同時に動作しています。たとえば、YouTubeで動画を再生しながら、ブラウザでWeb検索をし、チャットアプリでメッセージを送るなど、複数の作業を同時進行で行なうことができます。これを実現しているのが、OSの中で動作している「プロセス」と「スレッド」という仕組みです。
本記事では、プロセスとスレッドの基本的な概念について、わかりやすくまとめていきます。
プロセス(process)とは
プロセスとは、実行中のプログラムのことを指します。
OS上で動作しているすべてのアプリケーションは、それぞれ独立したプロセスとして実行されています。
プロセスには、実行に必要な以下のような資源が割り当てられています
・メモリ空間(コード、データ、スタックなど)
・実行状態(レジスタやプログラムカウンタ)
・ファイルディスクリプタなどのリソース
特徴
・プロセスは基本的に他のプロセスとメモリ空間を共有しないため、独立して動作します。
・一つのプロセスがクラッシュしても、他のプロセスに直接影響を及ぼすことはありません。
スレッド(thread)とは
スレッドとは、プロセスの中で動作する実行の単位です。
スレッドは、同じプロセス内のメモリ空間やリソースを他のスレッドと共有します。
特徴
・複数のスレッドが一つのプロセス内で並行して動作することで、効率的な処理が可能になります。
・スレッドの作成や切り替えは、プロセスに比べて軽量です。
※ただし、一つのスレッドがバグや例外で停止すると、同じプロセス内の他のスレッドにも影響する可能性があります。
例: YouTubeアプリ
動画の映像を再生する処理 → スレッドA
音声を出力する処理 → スレッドB
コメントの取得・表示処理 → スレッドC
これらはすべてYouTubeアプリという1つのプロセスの中で並行して動作しています。
つまり、スレッドを使うことで1つのアプリケーションがよりスムーズに、かつ効率的に動作しているのです。
スレッドを使う理由
・長時間かかる処理をバックグラウンドで行うことで、画面の操作(UI)を止めない
・複数のCPUコアを使って処理を並列化し、高速に処理できる
・リソースの無駄を減らし、より軽快なアプリケーションを実現できる
OSによる管理
OSは、プロセスやスレッドの実行を制御・管理しています。
・CPUの使用時間を公平に割り当て(スケジューリング)
・プロセスやスレッドの作成・終了・切り替えを制御
・メモリやファイルといった資源へのアクセスを管理し、競合を防ぐ
このようにして、複数のアプリケーションやスレッドが同時に動作していても、OSのおかげで安定して処理が行われるのです。
まとめ
プロセスとスレッドについて、ざっくりまとめてみました。
プロセスは、アプリケーション単位の独立した実行単位のことです。
スレッドは、プロセスの中での作業単位で、リソースを共有して効率よく動作します。
スレッドを使うことで、アプリケーションの応答性や処理速度を向上できるといった特徴があります。
OSはそれらを適切に管理して、安定したシステム動作を支えていることが理解できたでしょうか。
最後までお読みいただき、ありがとうございました。
参考URL
Discussion