Help us understand the problem. What is going on with this article?

Context Switch(コンテキストスイッチ)とは?

what-is-context-switching-in-operating-system-context-switching-flow.png

Context Switch(コンテキストスイッチ)とは?

コンテキストスイッチ (context switch) とは、複数のプロセスが1つのCPUを共有できるように、CPUの状態(コンテキスト (情報工学))を保存したり復元したりする過程のことである。コンテキストスイッチはマルチタスクオペレーティングシステムに不可欠な機能である。通常コンテキストスイッチは多くの計算機処理を必要とするため、オペレーティングシステムの設計においてはコンテキストスイッチを最適化することが重要である。

※ウィキペディア

  • マルチプロセスの環境でCPUがある一つのプロセスを実行している状態インターラプトリクエストによる次の優先順位のプロセスが実行しなければならないとき、既存のプロセスの状態またはレジスタの値(Context)を保存してCPUが次のプロセスを行えるように新しいプロセスの状態またはレジスタ値(Context)を変える作業をContext Switch(Context Switching)といいます。

Context(コンテキスト)とは?

  • ユーザーと他のユーザー、ユーザーとシステムまたはデバイス間の相互作用に影響を受ける人、場所、オブジェクトなどの現在状況を規定する情報をいいます。

  • AndoroidやServletなのでもContextがあるが、OSでのContextはCPUが該当プロセスを実行するためのプロセス情報です。

  • このContextはプロセスのPCB(Process Control Block)に保存され、Context Switching時にPCBの情報を読み込んで(積載)CPUが前のプロセスがしていた作業を続けて行うことができます。

PCB(Process Control Block)の保存情報

  • プロセス状態

    • 生成
    • 準備
    • 実行
    • 待機
    • 中止
  • プログラムカウンター

    • プロセスが次に実行するアドレス
  • レジスタ

    • アキュムレーター(累算器)
    • スタック
    • 索引レジスター
  • プロセス番号

ちなみにContext Switching時、該当CPUは何もできない。なので頻繁にContext Switchingを行われるとオーバーヘッドが発生し、効率(性能)が落ちます。

Context Switching - Interrupt

InterruptはCPUがプログラムを実行している時、実行中のプログラムの外から例外が発生し、処理が必要な場合
CPUに伝えて例外状況を処理できるようにすることをいいます。

では、なんのInterruptリクエストが来たらContext Switchingが起きるでしょう?
- I/O リクエスト(入出力リクエスト)
- time slice expired (CPU使用時間の満了時)
- fork a child (子プロセスを作成時)
- wait for an interrupt (Interrupt処理を待っている時)

その他にもあるで法けど、詳しいことは省略します。

Anveloper
諦めなければできるだろう!
https://anveloper.wordpress.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした