分析system_call中断处理过程
来源:互联网 发布:免费下载图片软件 编辑:程序博客网 时间:2024/04/29 19:24
第一部分
使用gdb跟踪分析一个系统调用内核函数
图1 在menuOs中添加pid和pidasm菜单选项后使用dgb跟踪,设置断点sys_getpid
图2 sys_getpid返回后进入汇编代码处理无法使用dgb继续跟踪
第二部分
图3 系统调用处理过程的汇编伪代码
分析:可以从简化的伪代码理解system_call开始到iret结束之间的整个过程。
首先是定义的各种宏INTERRUPT_RETURN(iret)、SAVE_ALL、RESTORE_INT_REGS
然后进入系统调用首先SAVE_ALL,查找系统调用表后调用相应的调用函数,exit时会判断当前的任务是不是要进行syscall_exit_work,如果不需要处理就restore_all,然后irq_return就结束了。若有sys_exit_work,则进入sys_exit_work,可能会有一个进程调度时机,可能会发生进程上下文切换。
图4 流程图
第三部分
和上周实验相比,本周更深入的跟踪和分析了系统调用从system_call到iret之间的处理过程。当系统调用发生时,内核处理系统调用服务,结束返回时回到用户态之前可能发生进程调度。内核可以抽象成不同种类的中断的集合。
小市民 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
0 0
- 分析system_call中断处理过程
- system_call中断处理过程分析
- system_call中断处理过程分析
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- system_call中断处理过程分析
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 分析system_call中断处理过程
- 多少对质数的和等于输入的这个正整数
- CTime与CTimeSpanの使い方
- 【运维管理】实战CentOS 6.0+Nagios中文版+PNP+Nagios Web管理工具nagiosQL中文版
- 171 Excel Sheet Column Number
- 赋值问题
- 分析system_call中断处理过程
- 逆序对 (没看懂)
- 浅谈 指针数组&数组指针 指针函数 函数指针
- 对Adaboost提升算法的一点儿认识
- MySQL
- 三年前和三年后
- AjaxFileUpload的问题
- Python中数据类型
- ajaxfileupload回到json带<pre>