学習中、疑問が出ました。
下記サイトでは、
https://milestone-of-se.nesuke.com/sv-basic/architecture/user-space-kernel-space/
コンテキストスイッチによりカーネルモードへ移行し、 それからシステムコールする。
とあります。
しかし、以下資料では、
https://www.ipa.go.jp/files/000056288.pdf
アプリケーションプログラムが呼び出すシステムコールにより、ソフトウェア割り込みが発生 し、CPUのモードがスーパバイザモード(カーネルモード)に遷移する。
とあります。
どちらかが間違っているのか、それともどちらもあっていて、表現の違い?なのか
そもそもコンテキストスイッチは何かきっかけがないと起動しないと思うので、
いきなりコンテキストスイッチによりカーネルモードへ移行し、というのは納得ができません。
また、コンテキストスイッチについて
一つ目のサイトで、
ユーザモードとカーネルモードの切り替えは、マルチタスク OS の実行プロセスの切り替えでも利用される Context Switch によって実施
という一文があり、これが自分の理解を混乱させています。
システムコール==svc"割り込み"なのだから、その際にコンテキストスイッチが機能してシステムコールの処理として、何らかのハードなどを操作するカーネル空間のプロセスに切替られるのではないのか。
ではそのコンテキストスイッチをどのように実施しているのか説明が欲しい。
もしシステムコールによる割り込みがきっかけなのであれば、2つ目の資料の方が正しいと思う。
もしくは、contextswitchには2通りの全く別の機能(プロセスを切り替える機能とcpuの動作モードを切り替える機能)があるという認識でよろしいのでしょうか。
かなり混乱しており、文もまとまりがなく申し訳ございません。
何かヒントなど頂ければ幸甚でございます。<(_ _)>

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/20 04:24 編集