🚀

【OS】プロセス・スレッドについてざっくりまとめ

に公開

はじめに

私たちが普段使っているパソコンやスマートフォンでは、さまざまなアプリケーションが同時に動作しています。たとえば、YouTubeで動画を再生しながら、ブラウザでWeb検索をし、チャットアプリでメッセージを送るなど、複数の作業を同時進行で行なうことができます。これを実現しているのが、OSの中で動作している「プロセス」と「スレッド」という仕組みです。

本記事では、プロセスとスレッドの基本的な概念について、わかりやすくまとめていきます。

プロセス(process)とは

プロセスとは、実行中のプログラムのことを指します。
OS上で動作しているすべてのアプリケーションは、それぞれ独立したプロセスとして実行されています。
プロセスには、実行に必要な以下のような資源が割り当てられています
・メモリ空間(コード、データ、スタックなど)
・実行状態(レジスタやプログラムカウンタ)
・ファイルディスクリプタなどのリソース

特徴
・プロセスは基本的に他のプロセスとメモリ空間を共有しないため、独立して動作します。
・一つのプロセスがクラッシュしても、他のプロセスに直接影響を及ぼすことはありません。

スレッド(thread)とは

スレッドとは、プロセスの中で動作する実行の単位です。
スレッドは、同じプロセス内のメモリ空間やリソースを他のスレッドと共有します。

特徴
・複数のスレッドが一つのプロセス内で並行して動作することで、効率的な処理が可能になります。
・スレッドの作成や切り替えは、プロセスに比べて軽量です。
※ただし、一つのスレッドがバグや例外で停止すると、同じプロセス内の他のスレッドにも影響する可能性があります。

例: YouTubeアプリ

動画の映像を再生する処理 → スレッドA
音声を出力する処理 → スレッドB
コメントの取得・表示処理 → スレッドC

これらはすべてYouTubeアプリという1つのプロセスの中で並行して動作しています。
つまり、スレッドを使うことで1つのアプリケーションがよりスムーズに、かつ効率的に動作しているのです。

スレッドを使う理由

・長時間かかる処理をバックグラウンドで行うことで、画面の操作(UI)を止めない
・複数のCPUコアを使って処理を並列化し、高速に処理できる
・リソースの無駄を減らし、より軽快なアプリケーションを実現できる

OSによる管理

OSは、プロセスやスレッドの実行を制御・管理しています。
・CPUの使用時間を公平に割り当て(スケジューリング)
・プロセスやスレッドの作成・終了・切り替えを制御
・メモリやファイルといった資源へのアクセスを管理し、競合を防ぐ

このようにして、複数のアプリケーションやスレッドが同時に動作していても、OSのおかげで安定して処理が行われるのです。

まとめ

プロセスとスレッドについて、ざっくりまとめてみました。
プロセスは、アプリケーション単位の独立した実行単位のことです。
スレッドは、プロセスの中での作業単位で、リソースを共有して効率よく動作します。
スレッドを使うことで、アプリケーションの応答性や処理速度を向上できるといった特徴があります。
OSはそれらを適切に管理して、安定したシステム動作を支えていることが理解できたでしょうか。

最後までお読みいただき、ありがとうございました。

参考URL

https://onoono-life.blogspot.com/2014/01/blog-post.html
https://milestone-of-se.nesuke.com/sv-basic/architecture/cpu/
http://atmarkit.itmedia.co.jp/icd/root/79/5787379.html

Discussion