作业五:分析system_call中断处理过程
分析system_call中断处理过程
一、MesuSO增加getpid和getpid-asm



二、使用GDB跟踪系统调用内核函数sys_getpid
分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数sys_getpid
系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl
1.gdb file 文件/vmlinux (把符号表symbol table加载进来)
2.target remote:1234
3.设置断点
4.c执行到断点
5.list查看断点代码



三、系统调用在内核代码中的处理过程
main.c中start_kernel函数:trap_init()
set_system_trap_gate(SYSCALL_VECTOR,&system_call)
SYSCALL_VECTOR:系统调用的中断向量
&system_call:汇编代码入口
一执行int 0x80,系统直接跳转到system_call。

系统调用返回用户态之前,可能发生进程调度CALL schedule;
进程调度时,可能发生进程上下文切换;
进程间通信时有可能需要notifysig处理信号;
内核抽象成很多中断处理过程的一个集合,提供内核的服务线程当成一般的线程理解。
四、总结部分
执行int0x80指令后,触发中断,跳转到ENTRY(system_call)这是入口,
SAVE_ALL保存现场
调用系统调用处理函数
RESTORE ALL
IRET中断系统处理过程的结束——syscall_exit_work-- ---work_pending-----work_notfysing处理信号的, 可能调用schedule,可能会跳转到RESTORE ALL后面恢复现场的工作,然后iret结束掉
内核抽象成很多中断处理过程的一个集合,提供内核的服务线程当成一般的线程理解。
注明“郑伟 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”
作业五:分析system_call中断处理过程的更多相关文章
- 实验五分析system_call中断处理过程
一.实验要求: 1.使用gdb跟踪分析一个系统调用内核函数 2.根据本周所学知识分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图 二.实验步骤: 1 ...
- Linux内核分析第五周学习总结——分析system_call中断处理过程
Linux内核分析第五周学习总结--分析system_call中断处理过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...
- 《Linux内核分析》第五周:分析system_call中断处理过程
实验 分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见http://codelab.shiyanlou.com/xref/l ...
- 通过分析system_call中断处理过程来深入理解系统调用
通过分析system_call中断处理过程来深入理解系统调用 前言说明 本篇为网易云课堂Linux内核分析课程的第五周作业,上一次作业中我以2个系统调用(getpid, open)作为分析实例来分析系 ...
- 分析system_call中断处理过程
分析system_call中断处理过程 上周我们使用gcc内嵌汇编调用系统调用,这次我们具体分析下过程. 将getpid嵌入menuos 代码从github下载,步骤如下: 1. 增加一个函数,get ...
- 20135202闫佳歆--week5 分析system_call中断处理过程--实验及总结
week 5 实验:分析system_call中断处理过程 一.使用gdb跟踪分析一个系统调用内核函数(上周选择那一个系统调用)--getpid 复习视频: 如何实现? - 更新menu代码到最新版 ...
- Linux内核分析-分析system_call中断处理过程
姓名:江军 ID:fuchen1994 分析system_call中断处理过程 使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见http://codelab.shi ...
- 实验五:分析system_call中断处理过程
原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 如果我写的不好或者有误的地方请留言 ...
- Linux内核设计第五周学习总结 分析system_call中断处理过程
陈巧然原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 使用gdb跟踪分析一 ...
随机推荐
- Oracle Spatial中SDO_Geometry说明
Oracle Spatial中SDO_Geometry说明 在ArcGIS中通过SDE存储空间数据到Oracle中有多种存储方式,分别有:二进制Long Raw .ESRI的ST_Geometry以及 ...
- swift static与class修饰符:static不参与动态派发
static与class 都有类型成员的含义:相对于实例成员: static的另一个意思是静态派发:所以不能被继承. 要使用动态派发和继承的机制必须使用class继承. static的其它常见含义: ...
- 【剑指offer】数值的整数次方
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ...
- [测试] Markdown+Latex
标题 标题 标题 标题 标题 标题 #include <cstdio> #define R register int #define I inline void #define IL in ...
- intellij IDEA软件java项目No SDK配置jdk开发,安装IDEA软件步骤
我们在使用intellij idea开发java项目的时候,我们在创建的时候会发现提示No SDK,影响创建和使用项目,我们需要下载和配置需要的JDK 电脑 1我们使用intellij idea创建j ...
- php header函数导出excel表格
推荐一个除了用PHPExcel导出表格之外的另外一种比较简单不需要引入类文件的表格导入方法——header()导出excel表格. 导出表格的步骤封装成了方法,以便于重复使用,代码如下: /** * ...
- 使用Tensoflow实现梯度下降算法的一次线性拟合
# Author Qian Chenglong import tensorflow as tf import numpy as np #生成100个随机数据点 x_date=np.random.ran ...
- JAVA框架 Spring AOP--切入点表达式和通知类型
一:AOP的相关术语: 1)Joinpoint(连接点):所谓的连接点是指那些可以被拦截点,在spring中这些点是指方法.因为在spring中支持方法类型的连接点. 2)Pointcut(切入点): ...
- Vue 下拉列表 组件模板
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- dom4j加载xml文件
## dom4j加载xml文件 ``` // 1. 加载xml文件 InputStream is = MyTest.class.getResourceAsStream("user.xml&q ...