議論/システムコール時に割り込みを許可する


Top / 議論 / システムコール時に割り込みを許可する

ユーザーモードからのシステムコール時の動き

  1. ユーザーモードからシステムコールintを発行する。
  2. 現行TSSからカーネルのSS0, esp0が取り出されてセットされる。
  3. ユーザーモード時のSS3, esp3はesp0のスタック上に保存される。
  4. 特権レベルでシステムコール処理が行われる。
  5. 割込みを許可する領域で割込み許可。
タイマ割り込みがあったとき
  1. 割り込みが発生
  2. 特権レベルの遷移が起きないのでスタックはそのまま引き継がれる。
  3. 現在のレジスタ、セグメント等がg_current_processに保存される。⇒ということはスレッドまたはプロセス毎に特権レベルのスタックを保持するということか
  4. スケジューラーが起動されてg_current_processに次のプロセスがセットされる
  5. プロセススイッチ
タイマ以外の割り込みがあったとき
  1. 割り込みが発生
  2. 特権レベルの遷移が起きないのでスタックはそのまま引き継がれる。
  3. 割込み処理を行う。
  4. iretでシステムコール実行中プロセスにもどる。

結論っぽいもの

メモ

コメントよろしゅう

コメントページを参照

  • この結論であっているとして、スレッド毎に特権レベルスタックを割り当てるのはどうなんだろう。 -- ひげぽん 2003-08-06 (水) 00:07:42
    • スタックを使いまわすのも手かな。なかったらsleep -- ひげぽん 2003-08-06 (水) 00:08:19
    • いわゆるスタックプーリング -- ひげぽん 2003-08-06 (水) 00:09:19
      • よく考えたらスタックプーリングは出来ません。 -- ひげぽん 2003-08-06 (水) 10:01:02
      • 必要になったときに割り当てるでは遅いからです。 -- ひげぽん 2003-08-08 (金) 22:57:18
お名前:

関連項目

MENU

now: 1

リンク


最新の20件
2018-05-03 2017-09-29 2017-04-25 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3968, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:02 (3766d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.233 sec.