
それについての正式な説明は何ですか? いつも忘れてしまうようです。
答え1
マルチタスク、または単一プロセッサでのマルチスレッドは、認識されたマルチスレッドとも呼ばれます。当然、1 つの CPU ではコマンドを同時に実行することはできません。代わりに、プロセスをインターリーブして、マルチスレッドの錯覚を与えます。
@Journeyman Geek が付け加えたように、これはプリエンプションを使用します。これは、プログラムが格納され、各プロセスが実行するためのサイクルを一定数取得する、ある種の構造 (キューなど) がある場所です。次に、現在実行中のプログラムがプリエンプトされ (または別のプログラムとスワップアウトされ)、そのプログラムが実行されます。どのプログラムをいつ実行するかを決定するための戦略は多数あります。完全に公平に (例: ラウンドロビン)、各プログラムに一定の時間量子を割り当てるか、プログラムを優先度で分け、実行する優先度の高いプログラムがなくなった場合にのみ優先度の低いプログラムを実行することができます (例: 優先度キュー)。
これは、GUI アプリケーションを記述し、長時間のバックグラウンド タスクを実行している場合に役立ちます。これをシングル スレッド アプリとして記述すると、GUI のフロントエンドがフリーズします。ただし、スレッドが 2 つあると、GUI は応答し続けます。CPU が 1 つしかない場合でも、プロセスをインターリーブすると、バックグラウンド プロセスが実行を続け、進行している間も GUI は応答し続けます。
答え2
ハイパースレッディングおそらく、現代のシステムでは、コア全体ではなく一部が複製されるため、コアごとにより多くのスレッドを実行できます。
答え3
基本的に、オペレーティング システムは各アプリケーション (および各アプリケーション内の各スレッド) を順番に取得し、数 CPU サイクル実行します。したがって、10 個のアプリケーションを実行している場合、10 秒間に各アプリケーションが実際に実行される時間は 1 秒分になります。
つまり、各アプリケーションは、コンピューター上で実行されている唯一のアプリケーションである場合よりも遅く実行されますが、大部分のアプリケーションでは、ほとんどの時間がユーザー入力の待機に費やされます。
見るウィキペディア詳細については。
答え4
基本的に、シングル スレッド CPU で多数のアプリケーションを実行すると、オペレーティング システムはアプリケーション間で CPU を切り替えます。これは非常に高速に行われるため、マルチタスクの錯覚が生じます。つまり、基本的に CPU は必要なアプリケーションにサイクルを与え、次に別のアプリケーションに移動し、最初のアプリケーションに戻ります。これはすべてオペレーティング システムによって行われます。CPU が同時に実行されている別のアプリケーションに切り替えると、前のアプリケーションの状態が保存されるため、CPU が再びそのアプリケーションに戻ったときに、前のアプリケーションの状態が記憶されます。