無料Wikiサービス | デモページ | [広告] サイト検索サービス Sx4
Linux Kernel(2.6)の実装に関するメモ書き
最近更新したページ
2008/1/14
2008/1/13
2007/12/9
2007/10/5
2007/9/28
2007/9/27
2007/8/22
2007/8/21
検索

コンテキストスイッチ


コンテキストスイッチを行うswitch_to()(CPU依存部分)の処理。

switch_to(prev,next,last) - プロセスの切替えを行う
pushflでeflagをスタックに退避
prev->thread.espにesp退避
next->thread.espをespに復旧
(スタックが切り替わり、currentも切り替わったことになる)
1:のアドレスをprev->thread.eipに保存
(復旧時は1:から動作再開することになる)
next->thread.eipをpushしておく。
(__switch_toからの戻り時にこの値がリターンアドレスとして使用される)

__switch_to() (callではなくjmpで飛ぶ) - TSSの設定を行う
:
next->thread.espをTSSに保存
(ユーザモード->カーネルモード等の特権レベル変更時
スタックポインタはTSSから取得されるので設定が必要)
:

1:
popflでeflagを復旧



最終更新 2006/6/23 21:52:37 - kztomita
(2006/6/23 21:49:28 作成)