議論/デバッグ


Top / 議論 / デバッグ

ひげぽんがデバッグ時にバグを解消する糸口をメモするところです(忘れるので)

過去のミス

2004/03/14 スレッドスイッチを再度疑う

ユーザー⇒ユーザースタックからss3-->task.ss,esp3-->task.esp,cs,eip,eflagと汎用レジスタ等をセーブ
TSSにnextTask.esp0を, 汎用レジスタを復帰,スタックにnextTask.ss, nextTask.esp, nextTask.cs, nextTask.eflags, nextTask.eipをセット
ユーザー⇒カーネルスタックからss3-->task.ss,esp3-->task.esp,cs,eip,eflagと汎用レジスタ等をセーブ
切り替え先のssは現状のものを使用,汎用レジスタを復帰,espはnextTask.espをセット、スタックにnextTask.cs, nextTask.eflags, nextTask.eipをセット
カーネル⇒ユーザーcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
TSSにnextTask.esp0を, 汎用レジスタを復帰,スタックにnextTask.ss, nextTask.esp, nextTask.cs, nextTask.eflags, nextTask.eipをセット
xユーザー⇒カーネルcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
切り替え先のssは現状のものを使用,汎用レジスタを復帰,espはnextTask.espをセット、スタックにnextTask.cs, nextTask.eflags, nextTask.eipをセット
カーネル⇒xユーザーcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
TSSにnextTask.esp0を, 切り替え先のssは現状のものを使用,汎用レジスタを復帰,espはnextTask.espをセット、スタックにnextTask.cs, nextTask.eflags, nextTask.eipをセット
xユーザー⇒xユーザーcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
TSSにnextTask.esp0を, 切り替え先のssは現状のものを使用,汎用レジスタを復帰,espはnextTask.espをセット、スタックにnextTask.cs, nextTask.eflags, nextTask.eipをセット
xユーザー⇒ユーザーcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
TSSにnextTask.esp0を, 汎用レジスタを復帰,スタックにnextTask.ss, nextTask.esp, nextTask.cs, nextTask.eflags, nextTask.eipをセット
ユーザー⇒xユーザースタックからss3-->task.ss,esp3-->task.esp,cs,eip,eflagと汎用レジスタ等をセーブ
TSSにnextTask.esp0を, 汎用レジスタを復帰,スタックにnextTask.ss, nextTask.esp, nextTask.cs, nextTask.eflags, nextTask.eipをセット
カーネル⇒カーネルcs,eip,eflagと汎用レジスタ等をセーブespはpushaされたespに+4 * 3したもの(cs, eip, eflags分)
切り替え先のssは現状のものを使用,汎用レジスタを復帰,espはnextTask.espをセット、スタックにnextTask.cs, nextTask.eflags, nextTask.eipをセット

2004/02/29 事実だけを淡々と

症状

0.1.5との変更点

判明していること

検証1

  1. INITスレッドはプロセス起動のためreadを実行した。
  2. read処理はwaitを伴い、INITスレッドはwaitqで眠ることとなった。
  3. その間、IDLEスレッドが実行されることになった(prev, current=IDLE)
  4. 割り込みが到着
  5. wakeup(thread, waitReason)
    1. runq[0]にINITが追加される
    2. schedule()がよばれる。
  6. swtichThread()で次のスレッドへ

MENU

now: 4

リンク


最新の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: 4115, today: 1, yesterday: 1

添付ファイル: fileschedulerfault0d.png 505件 [詳細]

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

Last-modified: 2008-03-28 (金) 15:48:02 (3761d);  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.042 sec.