Processes and threads in Operating Systems (OS) は、コンピュータ サイエンスにおいて常に私のお気に入りのトピックの 1 つでした。 OS が実行のさまざまな段階でどのようにプログラムを管理し、メモリに関する問題に取り組み、カーネルに至るまで分離されたセキュリティを確保するのか、より深い方法で理解することができます。 8351>
基本的な考え方
プロセスとは、単に実行中のプログラムのことです。 1 つのプログラムは、厳密にそれに関連する 1 つのプロセスを持ちます。 非常にまれなケースでは、これが常に正しいとは限りませんが (Google Chrome の例)、ほとんどの場合、これは正しいです。
それぞれのプロセスには、意図するタスクを実行できるよう異なる構成要素があります。 注目すべきは、スタックとヒープがそれぞれローカル変数と動的メモリの割り当てに使用されることです。
さらに多くのコンポーネントがありますが、各プロセスがプログラムとして実行するためには、これらのコンポーネントが必要であると言えば十分です。 特に、コンピュータの動作が遅い場合、特定のプロセスがコンピュータのメモリまたは CPU を占有することがあるため、それらの詳細情報を確認すると便利な場合があります。 Windows を実行している場合、タスク マネージャーを開き、[プロセス] タブをクリックしてこの情報を見ることができます。 Linux または Unix ベースのマシンを実行している場合は、さまざまなコマンドを実行できます。
ps aux // this will display a list of processestop // detailed information about all processes, threads, memory hoggers and network packets
How does the operating system manage processes
A process can be in the particular state at any given time. 作成されたばかり、実行待ち、いくつかの I/O デバイスへのアクセス待ち、他のプロセスによって中断された、などです。 最大の生産性を確保するために、オペレーティング システムはこれらすべてのプロセスの状態を理解し、適切なタイミングで新しいプロセスの作成、プロセス間の切り替え、一時停止、サスペンドなどをインテリジェントに実行できるようにする必要があります。
これを効率的に行うために、OS はそれぞれのプロセスに対してプロセス制御ブロックとして知られるものを維持します。 これには、現在のプロセスの状態、次に実行する命令、および現在プロセスに割り当てられているデバイスなどの有用な情報が含まれています。
これにより、PCB で現在の状態を保存し、それらの間で切り替え、後で特定のプロセスを再ロードするなど、オペレーティング システムが異なるプロセスを効果的に管理できるようになりました。
How does the operating switch between different processes
Context switching とは、実行プロセスの状態を保存して別のものを実行するために一時停止するという特定のアクティビティをオペレーティングシステムが行うことを指します。 これらのプロセスが競合しないように、また、保存されたプロセスを後で問題なく再開できるようにする方法でこれを行う必要があります。 これによって、OSの重要な機能であるマルチタスクが確保される。 図は、PCB がプロセスの状態を保存し、別のものを実行し、後で最初のものをリロードして継続するために使用される方法を示しています
。