您的位置:首页 > 其它

分析system_call中断处理过程

2016-03-26 15:39 176 查看
秦鼎涛 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、实验要求:

  1、使用gdb跟踪分析一个系统调用内核函数

  2、根据本周所学知识分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图

二、实验步骤:

  1、实验环境是使用本课程配置的实验楼虚拟机环境,打开命令行客户端,cd LinuxKernel目录,使用命令rm -rf menu

删除原来的代码,使用git clone https://github.com/mengning/menu.git获取menu的最新代码,然后cd menu进入menu子

文件夹,使用vi test.c打开文件,将上周实验的代码拷贝入test.c中,构造成两个函数,成为menu的两个菜单项。

实验截图如下:

克隆并自动编译MenuOS



在main()函数中添加两行命令



可以看到输入getpid时可以看到当前的pid



2、分析system_call处理流程(通过网络以及老师所讲的流程图如下)

  


三、总结:

  系统通过int 0x80从用户态进入内核态。在这个过程中系统先保存了中断环境,然后执行系统调用函数。

通过中断向量表,将int 0x80和system_call关联起来,system_call又是通过系统调用号,将每一个系统

调用和特定的系统调用服务例程关联起来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: