2020-2021-1 20209315《Linux内核原理与分析》第六周作业
作业信息
这个作业属于哪个课程 | <2020-2021-1Linux内核原理与分析)> |
---|---|
这个作业要求在哪里 | <2020-2021-1Linux内核原理与分析第六周作业> |
这个作业的目标 | 给MenuOS添加上周实现的系统调用、使用gdb分析sys_time执行过程、了解系统调用执行过程 |
作业正文 | <本博客> |
分析system_call中断处理过程
1.给MenuxOS增加命令
cd ~/LinuxKernel
rm -rf menu
git clone https://github.com/mengning/menu.git<br>cd menu<br>make rootfs
使用 rm -rf menu指令强制删除当前的menu文件夹
使用git clone指令克隆新的menu文件夹过来
进入新的menu文件夹下,打开test.c文件可以看到增加了Time以及TimeAsm函数
即新增了time和time-asm两条命令
进入到menu当中,执行make rootfs脚本,自动编译并生成根文件系统
在MenuOs当中输入time和time-asm命令都可以输出当前系统时间
2.使用gdb跟踪系统调用内核函数sys_time
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -S -s
通过qemu命令启动内核
重新打开一个shell
cd ~/LinuxKernel gdb(gdb)file linux-3.18.6/vmlinux # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
(gdb)target remote:1234 # 断点的设置可以在target remote之前,也可以在之后
用b sys_time命令在sys_time处设置断点
在QEMU终端中输入time后可以看到命令只执行一半
3.分析
4.遇到的问题
实验楼比较卡,操作了好多次才完成了本次实验