头歌操作系统 课堂练习2.1:外部中断 第1关:时钟中断的发生

后面的答案找不到哇,那么只能自己动手了,2前面的那部分很简单所以不进行记录。


目录

任务描述

相关知识

作答要求

测试说明

实验开始

操作细节讲解:

测试结果:

操作汇总:


任务描述

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

相关知识

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

作答要求

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

测试说明

注: 1.请不要删除 gdb.log ,会影响测评结果。 2.回答问题只需要在屏幕上输入 c 直到达到正确的结果,然后使用命令quit退出调试,之后点击评测按钮,平台会自动检测答案的。


实验开始

操作细节讲解:

首先先用进行复制操作,可以用ls指令查看指定文件路径的文件(此步骤可省略)之后使用cp指令将内核文件1.tgz复制到目标文件路径也就是~/os/。

ls  /路径/

cp  /文件所在路径/  /新位置路径/

现在开始解压操作,我们先去到~/os/linux-0.11-lab位置,也就是1.gtz内核文件将解压到的位置。

cd  /目标路径

tar  -zxvf  /解压包文件路径/

出现下面一大串路径就说明解压成功了,../所代表的是进入上一文件路径位置,也就是~/os/

 随后调整cur指向,先删除cur,然后使用ln命令创建新的符号链接,如下所示我们就完成了将cur指向1内核的操作。

rm -rf cur

ln -s 1 cur

让我们来进行内核编译,首先先进入新的内核文件我们可以使用cd ./来节省时间,它可以在当前路径的基础上进入下一文件路径,然后使用make命令进行内核编译,出现如下内容就说明编译开始,编译完成后先来确认内核映像文件Image是否生成 。

cd ./当前路径内的文件

make 

确认完成后回到linux-0.11-lab目录,这里可以使用cd ../返回上一路径哦,然后使用./run命令启动虚拟机,成功则说明一切顺利随后的弹窗中如果运行正常则会显示一大堆0。

./run

关闭该弹窗,然后输入使用./rungdb命令执行rungdb脚本。并再打开一个终端,打开方式和一开始那个一样,再点一次即可。第二个终端切换到目录~/os/linux-0.11-lab/,然后启动脚本./mygdb,这个命令会启动 gdb 并读入内核符号信息,同时会通过执行0.gdb中的调试命令来连接到 bochs 虚拟机,并进而跟踪到 main 函数入口。待启动完成后输入光标前会多一个(gdb)。

./rungdb    第一个终端

./mygdb     第二个终端

出现以下画面则说明运行正常,如果出现连接超时则查看终端1的rungdb命令是否执行正确。

最后开始跟踪分析时钟中断,等待 gdb 完全启动之后可以在函数 do_timer(由时钟中断的处理函数 timer_interrupt 调用)处设置断点; 让程序继续运行(使用命令 c ),分析在输出第一行 0/1 字符的过程中断点 do_timer 出现的次数,此即为时钟中断的次数。 通过全局变量jiffies可以直接查看已发生的时钟中断的次数。

b do_timer

display jiffies

c

c

c

...一直到填满

输入过程可见gdb第一行出现一行0,一直输入c直到0填满,大概是36个c

随后使用quit指令退出gbd,再进行测试即可通关。


测试结果:


操作汇总:

ls /data/workspace/mushixun/exp1/    (可选)
cp /data/workspace/mushixun/exp1/1.tgz ~/os/
cd ~/os/linux-0.11-lab
tar -axvf ../1.tgz
rm -rf cur
ln -s 1 cur
ls        (可选,查看cur指向)
cd ./1/linux
make
cd ../
cd ../    (回到linux-0.11-lab)
./run    
————关闭gbd————

./rungdb     (在第1终端输入)
————打开第2终端————

./mygdb      (在第2终端输入)
b do_timer
display jiffies
c
c
c
...(大约35次,填满为止)
quit
y

  • 40
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值