一、时钟中断的发生
通过实际操作回答在输出第一行 0/1 字符的过程中(如下图所示),共发生了几次时钟中断?
cp /data/workspace/myshixun/exp1/1.tgz ~/os/
cd os/linux-0.11-lab
tar -zxvf ../1.tgz
rm -rf cur
ln -s 1 cur
cd 1/linux/
make
cd ../..
./run
点开bochs查看
确认无误后关闭
启动两个终端 cd os/linux-0.11-lab
一个:./rungdb 另一个:./mygdb
break do_timer //设置断点
display jiffies
c // 一直按到第一行被0覆盖(查看bochs)
当前可测评
二、第一次时钟中断
注意!!若在做第二关之前重置了实验环境,请重做第一关哟~
分析版本1内核,找到第一次时钟中断的恢复点地址。
1.找地址
代码如下:
quit // 退出gdb,保留第一关的环境
在一个终端里切换到目录~/os/linux-0.11-lab
cd os/linux-0.11-lab
./rungdb
打开另一个终端
cd os/linux-0.11-lab
./mygdb
break do_timer
c
p jiffies
bt
finish
disas
si
si
disas
b *0x77dd
c
si
disas
2.写数据
代码如下:
cd
/data/workspace/myshixun
vi....写入答案
当前可测评
三、第六次时钟中断
版本1内核的第6次时钟中断发生时,断点和恢复点分别是多少?
1.找地址
启动两个终端,rungdb\mygdb
b do_timer
c
p jiffies
c
p jiffies
c
p jiffies
c
p jiffies
c
p jiffies
c
p jiffies
bt
finish
disas
si
si
disas
b *0x77dd
c
disas
si
disas
恢复点分析
info reg
2.写数据
步骤如第二关相同
字符串为0100;