2019-2020-1 20199301《Linux内核原理与分析》第六周作业

第五章

系统调用的三层机制(下)

1.给MenuOS增加命令

  • 代码如下:
rm -rf menu
git clone http://github.com/mengning/menu.git
make rootfs

2.使用gdb跟踪系统调用内核sys_time

  • 返回LinuxKernel的目录下启动内核
cd ..
qemu -kernel linux3-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S

  • 打开一个新的命令窗口,启动gdb,加载内核建立连接cd LinuxKernel/ gdb file linux-3.18.6/vmlinux target remote:1234

  • 设置断点b sys_time,按c继续运行,运行到断点停止。time系统调用的是sys_time函数,因此在sys_time函数处设置断点,我们可以看到的就是输入time命令后没有反应

  • sys_time是在宏中实现的,无法直接看到。用`list命令列出sys_time对应代码

  • 单步执行gdb调试

  • system_call代码分析

实验中遇到的问题:

  • 上周实验是做的rename和rename_asm的,在给menuos增加这两条命令时,函数一直在报错,也没有找到解决的办法,于是只能先做time和time_asm的命令添加。
  • 分析system_call代码时,不会找systime_call中哪个位置调用了sys_time(),不过这个问题在云班课视频中有解释讲解清楚。
  • 由于宿舍网不好,实验楼环境比较卡顿,一个实验反反复复做了很久。

猜你喜欢

转载自www.cnblogs.com/lsqz/p/11729645.html
今日推荐