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.遇到的问题

实验楼比较卡,操作了好多次才完成了本次实验

posted @ 2020-11-15 16:01  20209315  阅读(94)  评论(0编辑  收藏  举报