zoukankan      html  css  js  c++  java
  • 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

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

    请走链接:=学习总结

  • 相关阅读:
    webpack详解
    扩展运算符及其在vuex的辅助函数里的应用详解
    react组件间传值详解
    类的构造函数(3)
    类构造函数(4)
    new delete
    类的构造函数(1)
    类的构造函数(2)
    类的继承(1)
    静态成员数据与函数
  • 原文地址:https://www.cnblogs.com/20135202yjx/p/5307864.html
Copyright © 2011-2022 走看看