クラス演習 3.1: プロセスの説明とステータス

レベル 1: タスク レジスタ (TR) の分析

環境整備

cp /data/workspace/myshixun/exp1/1.tgz ~/os
cd ~/os/linux-0.11-lab
tar -zxvf ../1.tgz 1
rm -rf cur
ln -s 1 cur
cd 1/linux
make

gdb 入力

b task1
c
p *current
p/x current->tss
p &current->tss
quit

GDB デバッグを終了する

 dbg を起動します。gdb ではないことに注意してください 

./rundbg

もう一度入力し、最後に Enter キーを押します

b 0x7985
c
sreg
x/14wx 0x5cc0

 

 

レベル2:工程No.1の状態変化

第 1 レベルの環境では、gdb のデバッグ

b sys_pause if current->pid==1
b sched.c:120 if p->pid ==1
c
display current->state
n
c
p p->pid
p p->state
bt
disable
finish
finish
x/3i $eip
si
si
x/28i $eip
info registers

1. システムはどのプロセス番号に属していますか?、または現在のプロセスはどのプロセス番号ですか? (0)
2. カーネルの関数呼び出しスタック内の基礎となる関数は何ですか? (timer_interrupt)
3. カーネルはどのような種類の制御フローに属していますか? ? (B )
A. (システム コール) B. (割り込み) C. (例外)
4. 後でユーザー モードに戻るとき、リカバリ ポイントの場所は何ですか? (0x796c)
5. 以前のブレークポイントの場所は何ですか? (0x796c) 

おすすめ

転載: blog.csdn.net/weixin_64821608/article/details/131266202