linux进程堆栈切换,linux_进程切换过程堆栈的变化.ppt

《linux_进程切换过程堆栈的变化.ppt》由会员分享,可在线阅读,更多相关《linux_进程切换过程堆栈的变化.ppt(10页珍藏版)》请在人人文库网上搜索。

1、步骤1:将两个变量复制到寄存器:prev a (prev) next d (next),即: eax=prev_A或eax=% p (a) EDX=next _ a或EDX=% n(A)、0、4、8、110x124、0x120、0x11c、0x118、0x114、0x110、0x100、0x108、0x104、0x 100、进程A的内核堆栈空间、prev 步骤2:保存进程a的ebp和eflags pushfl pushl、0、4、8、12、-4、进程a的内核堆栈空间、0x124、0x120、0x11c、0x111、0x108、0x104、0x100、% ESI、% esp、prev _ a、n。

2、ext _ a、a _ ebp、% esp、内存空间、寄存器集、next _ IP、a _ ebp、a _ flag、a _ ebp、 步骤3:将当前esp保存到A进程内核描述符:movl% esp,% prev _ spnt/* Save esp */它可以表示为:prev_A-thread.sp=esp_A当调用switch_to时,prev指向A进程自己的进程描述符。ebp、0、4、8、12、eflags、-4、进程A的内核堆栈空间、0x124、0x120、0x11c、0x118、0x114、0x110、0x 100 c、0x108、0x104、0x100 Esp_A、内存空间、寄存器集。

3、、next _ IP、% flags、a _ flag、prev _ a、next _ a、a _ EBP、Esp_A、内存空间、寄存器集、next _ IP、EBP0x204、0x200Movl% next _ sp,% % espnt/* restore esp */它可以表示为:esp _ bthread.sp,% flags,a _ flag,step53360将标记为1的指令地址保存到进程描述符的ip域:movl $1f。%prev_ipnt /*保存EIP */它可以表示为:prev _ a-thread.ip=,ebp,0,4,8,12,eflags,-4,进程a的内核堆栈空间,。

4、0x208,0x204,0x104、0x100、% esp、0x20c、进程b的内核堆栈空间、prev _ a、next _ a、a _ ebp、esp _ a、内存空间、寄存器集、prev _ a _ IP、next _ IP、$ 1f、根据esp的位置,将push % next _ ipnt/* restore EIP */按入B堆栈。JMP _ _ Switch _ TON/* regparmcall */,EBP,0,4,8,12,eflags,-4,进程A的内核堆栈空间,0x2080x200,0x114,0x110,0x100 c,0x108,0x104,0x 100,0x20c,进。

5、程b的内核堆栈空间,上一个,下一个,下一个,上一个,下一个,存储空间,寄存器集,上一个. A标志,下一个IP,ebp,eFlags,步骤77 进程A的内核堆栈空间,0x208,0x204,0x200,0x104,0x100,0x20c,进程b的内核堆栈空间,% ESI,% esp,prev _ a,next _ a,a _ ebp,esp _ a,内存空间,寄存器集,prev _ a _ IP,next _ IP,Next _ IP,ebp,eflags,% EIP,$ 1f,step7: _ _ switch _打开和关闭硬件、EBP、0、4、8、120x100、0x20c、进程B的内核堆栈。

6、空间、% ESI、% esp、prev _ b、next _ b、a _ ebp、esp _ a、内存空间、寄存器集、prev _ a _ IP、next _ IP、next _ Ebp、eflags、step9: _ switch _ to()在标签1:后继续执行,将内核堆栈从ebp修改为B,并恢复B的Eflags:popl % t/* restorflags */popfln/* restorflags *。 Esp_A,存储空间,寄存器组,prev _ a _ IP,next _ IP,eflags,next _ IP,% flags,b _ flag,b _ ebp,步骤10:将eax写入最后,以将正确的prev信息保存在B的堆栈中.=a(最后)即last _ B=,ebp,0,4,8,12,eflags,-4,进程A的内核栈空间0 x208,0 x204,0 x200,0 x114,0 x110,0 x10c,0 x108,0 x104,0 x100,0 x20c,进程B的内核栈空间,Esp_A,内存空间,寄存器组上一个,上一个,下一个,下一个,标志,标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值