《Linux内核原理与分析》第六周作业
| 这个作业属于哪个课程 | 《Linux内核原理与分析》 |
|---|---|
| 这个作业要求在哪里 | 2020-2021-1 《Linux内核原理与分析》第六周作业 |
| 这个作业的目标 | 给MenuOS增加命令,使用gdb跟踪分析系统调用,分析system_call工作过程 |
| 作业正文 | https://www.cnblogs.com/camusxd/p/13982791.html |
一、实验五:分析system_call中断处理过程
1.给Menuos增加命令
rm -rf menu
git clone https://github.com/mengning/menu.git
cd menu
make rootfs
实践结果

在menu目录中找到test.c文件打开,添加并写入getPid()方法

由于test.c种通过MenuConfig()定义了调用函数名,在MenuOS中直接输入pid可以调用,获得当前进程为1

2.gdb跟踪调用time函数的过程
- 退回LinuxKernel目录,shift+ctrl+o切换横屏,然后执行如下命令

- 打开gdb,在start_kernel设置断点,执行如下命令:
file linux-3.18.6/vmlinux
target remote:1234
b start_kernel

继续执行后面的程序,在sys_time函数中设置断点,在MenuOS中输入time后执行gdb
实践截图如下:

调用list,可以显示当前断点附近代码内容
实践截图如下:

对sys_time函数进行跟踪,最终显示系统时间
实践截图如下

- system_call代码对应的工作过程分析

二、反思总结
这次详细学习了系统调用,学会了怎么实现调用的更改接口,收益满满。