ページングとコンテキスト切り替えの違いは何ですか? [閉鎖]

ページングとコンテキスト切り替えの違いは何ですか? [閉鎖]

どちらも入ってくるプロセスを含むようです。

ページングでは、既存のプロセスのページを交換し、それをディスク(私の意見では仮想メモリ)の別のページに置き換えますが、コンテキスト切り替えを使用すると、最初にそれをPCBに保存してから、別のプロセスを再開してプロセスを交換することによってこれを行います。することもできます。 PCBをメモリに入れます。

2つの違いは何ですか?現在の私の推測/理解は次のとおりです。

  1. コンテキスト切り替えはプロセス全体に適用されるため、すべてのページを一度に置き換えることができます。

  2. したがって、プロセス制御ブロックまたはPCBにはページが含まれます(そうでない場合、2つはどのように関連していますか?)。

答え1

類似点よりも違いが多いようです。

コンテキスト切り替えは、基本的にプログラムコードの実行に必要なすべてのCPUコンテキストを表します。これには、CPUレジスタ値、フラグ、命令、スタックポインタ、優先順位、仮想メモリ設定(ページテーブル)などが含まれます。

実際の内容を含める必要はありません。メモリプロセスのメモリは通常そうではありません。プロセスのメモリを完全に交換するのは遅いからです。システムが複数のプログラムを同時にメモリに保存でき、プログラムがメモリのどの部分を使用するかを知る方法がある場合は、別のプロセスに切り替えるときにメモリ全体を交換する必要はありません。

(Wikipediaによると、交換するしかし、すべてのプロセスは1960年代に行われました。 )

ページングは​​、通常、実行中のプロセスに見えない方法でメインメモリと一部のセカンダリストレージ間でメモリブロック(「ページ」)を移動するプロセスです。

最新のシステムでは、プロセス間のコンテキスト切り替えにはページテーブルのリロードが含まれますが、通常はすべてがメモリに収まるため、ページングは​​まったく必要ありません。一方、スワッピングが必要な十分なメモリを使用すると、単一のプロセス内でもページングが発生する可能性があります。

したがって、実際には、コンテキスト切り替えとページングは​​かなり直交しており、マルチタスク仮想メモリオペレーティングシステムの2つの概念にすぎません。

答え2

コンテキスト遷移はページングとは無関係であり、同時に2つの異なるプログラムを実行することができる。コンテキストはユーザ空間またはカーネル空間コードが実行される場所であり、遷移はユーザ空間からカーネル空間へ、またはその逆に移動することである。

ページングは​​、他の目的のために交換中のメモリページを配置できる交換スペースがある場合にのみ発生します。スワップ空間がない場合、ページングは​​発生しませんが、コンテキスト切り替えが発生します。

コンテキストがユーザー空間からカーネル空間コードに(そして他のアプリケーション用の他のユーザー空間コードに)切り替えられると、ページングは​​必ずしも起こりません。つまり。元のプロセスメモリは自動的に交換されません。したがって、2番目のプロセスが実行されたときにまだメモリを使用します。

関連情報