詳細なコンテキスト切り替えとプロセススケジューリング

コンテキスト切り替えの詳細

1.コンテキストスイッチングの概念

上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行以下的活动:
(1)挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处,
(2)在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复
(3)跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程。

コンテキスト切り替えは、カーネルがCPUによって現在実行されているプロセスを一時停止し、その後、以前に一時停止されたプロセスの1つを実行し続ける(プロセス切り替え)と説明される場合があります。コンテキスト切り替えのために操作される情報は、簡単にアクセスできるようにPCBに保存されます。コンテキストの切り替えは非常に頻繁で、1秒間に何度も行われるため、オペレーティングシステムはリアルタイムである必要があります。リアルタイムのパフォーマンスとは、各操作の時間を10ミリ秒以内に制御することを意味します。アームオペレーティングシステムの平均時間は1.5msです。

2.コンテキストスイッチはいつ発生しますか?

  • 割り込み:割り込みが発生すると、CPUは、実行中のプログラムで割り込み要求を開始したプログラムをコンテキストスイッチします(簡単な例では、CPUが特定の操作を実行していて、突然マウスがクリックされます。優先度が高すぎる場合は、マウスクリックイベントをすぐに実行します)
  • マルチタスク:マルチタスクの場合、各タスクには対応するタイムスライスがあるため、コンテキストの切り替えが発生します。

プロセスのスケジューリング

コンテキストスイッチングについて説明した後、プロセススケジューリングについて説明しましょう。プロセススケジューリングには3つの方法があります。

  • 先着順:このプロセスは非常に単純です。各プロセススケジューリングは、最初にキューに入るジョブを選択し、プロセッサをプロセッサに渡します。プロセスが完了すると、プロセッサは放棄されます。ジョブスケジューリングは、メモリを割り当て、プロセスを作成します。
  • 短いジョブの優先順位:各ジョブスケジューリングは、準備完了キュー内で最短時間のジョブを見つけ、実行するためにそのジョブにメモリを割り当てます。プロセススケジューリングはプロセッサ用です。
  • 優先度が高い優先度高い方が最初に呼び出されます。
    • 非プリエンプティブ優先度スケジューリング:各ジョブが処理されるのを待ってから、実行可能なキューで最も優先度の高いジョブを見つけます。
    • プリエンプティブ優先度スケジューリング:実行中のプログラムよりも優先度の高いジョブが発生し、CPUは現在のジョブをただちに停止し、優先度の高いジョブを実行します。
  • 応答率の優先度が高い:この方法は(待機時間+サービス時間)/サービス時間です。この比率が最も高い場合、最初に呼び出されますが、対応する比率を最初に計算する必要があります。

プロセスのスケジューリングにはいくつかの状況があります。

  • 優先順位の逆転:低優先度には、高優先度に必要なリソース(ミューテックス)があります。現時点では、低優先度のジョブは、高優先度のジョブの前に実行されます。

おすすめ

転載: blog.csdn.net/qq_45125250/article/details/114906034