20135202闫佳歆--week5 分析system_call中断处理过程--实验及总结

week 5 实验:分析system_call中断处理过程

一、使用gdb跟踪分析一个系统调用内核函数(上周选择那一个系统调用)——getpid

复习视频:
如何实现?

- 更新menu代码到最新版
- test.c中main函数里,增加MenuConfig()
- 增加对应的两个函数,Time和TimeAsm
- make rootfs 自动编译脚本

1.增加系统调用

  1. 先执行rm menu -rf,强制删除原有的menu文件夹,使用git命令更新menu代码至最新版
    enter description here
  2. test.c中main函数里,增加MenuConfig()
    enter description here
  3. 增加对应的两个函数,Getpid和GetpidAsm
    enter description here
    enter description here
  4. make rootfs
    这一步之后会打开menu:
    enter description here
  5. 输入help,可以看到当前的系统调用:
    enter description here
    可以看到,我自己写的getpid和getpid_asm已经加进去了,分别执行这两个系统调用:
    enter description here
    成功。

2.使用gdb调试

enter description here
enter description here
这里需要注意的就是,因为当前是在menu目录下,而所需要的镜像文件不在这个目录下,这时需要使用全路径,不然的话就会出现像上面第二张图的错误。
给time处设置断点:
enter description here
c运行之后,在MenuOs里使用time,可以看到它停了下来
enter description here
list可以查看内部的函数,直到sys_time返回后进入汇编代码处理,gdb无法继续进行追踪
enter description here

二、分析从system_call开始到iret结束之间的整个过程

enter description here

三、系统调用处理过程总结

请走链接:=学习总结

原文地址:https://www.cnblogs.com/20135202yjx/p/5307864.html