头歌操作系统2023春季课堂练习2.1:外部中断

该文描述了一个关于Linux0.11内核时钟中断的分析过程,涉及使用gdb调试器设置断点在do_timer函数,观察jiffies计数器的变化。在第一关中,要求计算第一行0/1字符输出完毕时的时钟中断次数。在第二关,找到第一次时钟中断时的断点和恢复点指令地址。第三关则关注第六次时钟中断的断点、恢复点地址及虚拟机输出的0/1字符串。
摘要由CSDN通过智能技术生成

第1关:时钟中断的发生

任务描述

本关任务:通过实际操作回答在输出第一行 0/1 字符的过程中(如下图所示),共发生了几次时钟中断?

相关知识

为了完成本关任务,你需要掌握:
1.设置版本 1 内核为分析对象;
2.开始用 gdb 调试内核;
3.跟踪分析时钟中断。

作答要求

根据相关知识进行实际操作,一直输入 c 直到 0/1 将第一行完全填满。
回答问题:当第一行 0/1 字符全部输出完毕的时候一共发生了几次时钟中断,即第一行完全填满时 jiffies 记录的已发生次数为多少?

答案

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 ../..
./rungdb

打开另一个终端输入

cd os/linux-0.11-lab/
./mygdb
b do_timer 
display jiffies

一直输入c并回车直到0跑到第二行

 然后输入kill,按y并回车退出gdb防止影响下一关

 第2关:第一次时钟中断

关闭其他终端,重新打开一个终端,重新来一遍

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 ../..
./rungdb

打开另一个终端输入

cd os/linux-0.11-lab/
./mygdb
b do_timer
c
p jiffies
bt
finish
disas
si
si
disas
b *0x77dd
c
si
disas

输入完成最后一步的终端

上图的箭头所指即为答案,最后记得kill退出gdb

 

第3关:第六次时钟中断

任务描述

本关任务:通过相关知识以及实验回答:版本 1 内核的第 6 次时钟中断发生时,断点和恢复点(指令地址)分别是多少?此时 bochs 虚拟机输出的 0/1 字符串是什么?(忽略空格)

相关知识

为了完成本关任务,你需要掌握:
1.使用 gdb 调试内核;
2.跟踪分析时钟中断。

编程要求

根据相关知识,完成断点指令和恢复点指令的分析,回答问题:
1.断点指令和恢复点指令的地址是多少?
2.此时 bochs 虚拟机输出的 0/1 字符串是什么?(只填写数字,不填写空格!!!)
将答案填写在/data/workspace/myshixun/第三关.txt中。

答案

保留上一关的环境,输入./rungdb

 打开另一终端,输入

cd os/linux-0.11-lab/
./mygdb

gdb里输入

b do_timer
c
c
c
c
c
c
finish
si
si
disas
b *0x77dd
c
si
disas
info reg

箭头所指就是答案

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值