《linux内核分析》 第二周
2016-03-06 17:20
411 查看
20135130 王川东
计算机三个“法宝”:存储程序计算机、函数调用堆栈和中断机制
作用包括:
函数调用框架;
保存参数;
保存返回地址;
提供局部变量等等
相关寄存器:esp:堆栈指针
ebp:基址指针
push:栈顶地址减少4字节(32位),并将数值放入
pop:栈顶地址增加4字节
cs(代码段寄存器) : eip:总是指向下一条的指令地址
顺序执行:总是指向地址连续的下一条指令
跳转/分支:执行这样的指令的时候, cs : eip的值会根据程序需要被修改
call:将cs.eip的值压入栈顶,cs.eip指向调用函数的入口地址。
ret:从栈顶弹出原来保存在这里的cs.eip的值,放入cs.eip中。
例:call的执行过程:
参数传递与局部变量:
建立堆栈框架:push %ebp
mov %esp %ebp
拆除堆栈框架:mov %ebp %esp
pop %ebp
函数的返回值通过eax寄存器传递
mykernel实验:
CPU和内核代码共同实现了保存现场和恢复现场
实验过程:
执行结果:
进程的启动和进程的切换机制分析如图:
计算机三个“法宝”:存储程序计算机、函数调用堆栈和中断机制
深入理解函数调用堆栈:
堆栈是C语言运行时必须的一个记录调用路径和参数的空间:作用包括:
函数调用框架;
保存参数;
保存返回地址;
提供局部变量等等
相关寄存器:esp:堆栈指针
ebp:基址指针
push:栈顶地址减少4字节(32位),并将数值放入
pop:栈顶地址增加4字节
cs(代码段寄存器) : eip:总是指向下一条的指令地址
顺序执行:总是指向地址连续的下一条指令
跳转/分支:执行这样的指令的时候, cs : eip的值会根据程序需要被修改
call:将cs.eip的值压入栈顶,cs.eip指向调用函数的入口地址。
ret:从栈顶弹出原来保存在这里的cs.eip的值,放入cs.eip中。
例:call的执行过程:
参数传递与局部变量:
建立堆栈框架:push %ebp
mov %esp %ebp
拆除堆栈框架:mov %ebp %esp
pop %ebp
函数的返回值通过eax寄存器传递
mykernel实验:
CPU和内核代码共同实现了保存现场和恢复现场
实验过程:
执行结果:
进程的启动和进程的切换机制分析如图:
相关文章推荐
- Linux内核及分析 第二周 操作系统是如何工作的?
- Linux基础--用户与组
- linux基本命令
- linux下myeclipse的破解
- 【E类】Linux视频课程集
- linux下制作u盘启动盘
- Centos更换yum源,安装ssh server
- Linux基础知识
- Linux基础学习笔记
- linux 知识整理1linux 常见的目录
- 20135239益西拉姆 Linux内核分析 操作系统是怎样工作的?
- 10 Useful Sar (Sysstat) Examples for UNIX / Linux Performance Monitoring
- Linux进程时间片的分配(调度策略和参数)
- linux 内核驱动开发
- Linux下 RabbitMQ的安装与配置-3
- linux 内核编译
- linux内核分析 第二周
- linux 最常用的安全措施
- Linux内核分析——操作系统进程调度
- Unix与Linux的历史