《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代码对应的工作过程分析
二、反思总结
这次详细学习了系统调用,学会了怎么实现调用的更改接口,收益满满。