栈切换:

从TSS中选取目标DPL栈,读出段选择子和ESP;
–>使用选择子读取栈描述符,检查特权级,类型等;
–>临时保存旧栈(当前栈)SS, ESP;(1)
–>新栈选择子, ESP代入SS, ESP, 切换新栈;
–>将(1)保存的旧栈SS, ESP压入新栈(保护现场);
–>根据调用门描述符 ‘参数个数’,从旧栈中读出压入新栈;
–>压入CS, EIP(保存现场);
–>从调用门描述符中读出段选择子+偏移–>CS:IP, 开始调用;

任务切换:

1.中断切换:
中断发生–>中断号*8(描述符8B)访问中断向量表;
–>为任务门进行任务切换,否则普通中断处理;
–>取出任务门描述符–>从描述符中取出新任务TSS选择子;
–>用选择子访问GDT取得新任务TSS描述符;
–>将当前任务状态存到TR->TSS中;
–>访问新TSS,从中恢复:通用Reg,EFLAGS,段Reg,EIP,ESP,LDTR等;
–>TR指向新TSS(切换完成);
–>开始执行新任务(一旦新任务开始,CPU固件置TSS中B为’1’,忙);

2.CALL,JUMP切换:
操作数是TSS选择子/任务门, 首先根据选择子访问GDT,指令中32位偏移忽略,全部从TSS中获得;

3.注意点:
CALL和中断发起的切换时嵌套的,旧任务:TSS’B’置’1’,EFLAGS’NT’不变,新任务:TSS’B’置’1’,EFLAGS ‘NT’置’1’,TSS任务链域填旧TSS选择子;
JMP发起的切换不会形成嵌套,旧TSS’B’置’0(非忙),EFLAG’NT’不变,新任务TSS’B’置1,EFLAGS’NT’保持从TSS加载时的状态;

返回过程:

1.同级特权级:栈中弹出调用者代码段选择子和之灵指针;
2.特权级变化的远返回,只能返回到低特权级;
3.全部过程:
检查栈中CS,根据RPL决定返回时是否需要改变特权级;
–>针对代码段描述符和选择子RPL进行特权级检查;
–>若远返回带参数,ESP+参->调用者SS,ESP(被调用者栈);
–>若返回要改变特权级,SS、ESP压栈,切回调用者栈;
–>若远返回带参数,ESP+参 平衡栈 (调用者栈);
–>若返回要改变特权级,检查DS,ES,FS,GS找到对应描述符,要是有任意DPL<调用者CPL(当前CPL),CPU将0传给该Reg;

X86栈切换,任务切换相关推荐

  1. 计算机输入法不能切换用户登录,输入法不能正常切换,输入法切换不出来 - 输入法切换不了,输入法不能切换怎么办? - 安全专题...

    输入法不见了,输入法切换不了,输入法不能切换到底是怎么回事? 近日,金山安全专家频繁收到网民关于输入法不能正常切换,输入法切换不出来等问题求助.许多网友以为是自己的设置问题才会出现输入法不能正常切换现 ...

  2. 用js实现点击切换+自动切换的轮播图

    用js实现点击切换+自动切换的轮播图 之前博主写过一篇用css实现轮播图的文章,可以看到用css实现的轮播图也能实现我们所需要的功能.那么这些功能用js该如何实现呢?我们一起来看下吧! (ps:博主在 ...

  3. [UE5]在多个固定摄像机视角间切换,切换多个摄像机,显示不同摄像机所看内容

    [UE5]在多个固定摄像机视角间切换,切换多个摄像机,显示不同摄像机所看内容 1.写在前面 01.作者碎碎念 02.结果 演示截图 演示视频 视频教程 源码链接 03.实现思路 实现思路 04.同步的 ...

  4. usb切换器计算机无法识别,迈拓维矩电脑切换器切换不了了是怎么回事

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:迈拓维矩电脑切换器切换不了了是怎么回事 问题详情:切换器换了2个了.都是这样.谁能告诉什么情况啊?急啊回答:我的也不能切换,换了一个 ...

  5. 【MAPBOX基础功能】05、底图切换 - mapbox切换高德、天地图、bingmap等底图

    前言 官网指引,生成accesstoken,下载相关依赖请翻阅[https://blog.csdn.net/weixin_44402694/article/details/125414381?spm= ...

  6. Python爬虫之selenium对标签页切换、切换frame标签、cookie处理、执行js代码、开启无界面、以及使用代理ip和替换user-agent等方法

    一.selenium对标签页切换.切换frame标签.cookie处理.执行js代码.开启无界面.以及使用代理ip和替换user-agent等方法 (一).selenium标签页的切换 当seleni ...

  7. x86 的 TSS 任务切换机制

    转自:http://blog.chinaunix.net/uid-587665-id-2732907.html [0]写在前面 segment descriptors 构建保护模式下的最基本.最根本的 ...

  8. Linux 目录栈及目录切换

    使用 cd - (中杠)会切换到上一次的目录 cd 命令会改变目录栈 1.dirs 1)功能 显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录) 2)语法 (1)格式:dirs ...

  9. node版本切换,X86和64位切换,新建依赖包和依赖

    gnvm node-version 查看当前node版本32位/64位 gnvm ls 显示可以切换的node版本和x86 gnvm use 8.12.0 切换版本 gnvm install 8.12 ...

  10. Fragment 使用 replace 的方式实现切换 以及切换的时候Fragment 生命周期

    这个主要代码在activity里面 如下 public class ReplaceActivity extends AppCompatActivity implements View.OnClickL ...

最新文章

  1. java两个线程循环打印_java循环打印 多线程
  2. (视频+图文)机器学习入门系列-第6章 机器学习库Scikit-learn
  3. 按下enter键禁止页面刷新
  4. 这五部关于海洋的纪录片,每一帧都犹如壁纸!
  5. maven的Windows环境下安装配置
  6. 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如RXXLRXRXL)中进行移动操作。一次移动操作指用一个LX替换一个XL,或者用一个XR替换一个RX。现给定起始...
  7. Python 远程桌面协议RDPY简介
  8. Kotlin中变量不同于Java: var 对val(KAD 02)
  9. 通过允许指定IP访问apahce虚拟主机加强服务器安全
  10. 如何用CSC.exe来编译Visual C#的代码文件
  11. 删除可恶的7654.com,7654导航篡改首页恢复,如何解决浏览器被7654劫持
  12. 转:: 刺鸟:用python来开发webgame服务端(4)
  13. 跨维度的打击,是可以直接秒杀的
  14. Markdown 语法手册全
  15. 日本关西信息中心:LPWAN技术ZETA、LoRaWAN、SIGFOX测评分析
  16. html360全景图原理,html360°全景展示 示例
  17. evc小项目:Gps功分器测试
  18. 对软件测试团队“核心价值”的思考(来自 李云)
  19. 开源技术可以解决贸易战?Richard Stallman 给微软的十条公开建议等;开源之道每周评论(2019 10 08))...
  20. 无限位小写金额转换大写金额(修订版)

热门文章

  1. SpringBoot如何实现自动配置
  2. Gradle插件开发- 无侵入的函数运行时间统计的实现
  3. 你说你会用Companion object?恐怕不是!
  4. docker开启otter服务mysql单双向同步数据
  5. 每日站会怎么开才好?——你的站会姿势正确吗?
  6. 线上Linux服务器运维安全策略经验分享
  7. 基于OSSIM平台的信息系统安全风险评估实施指南
  8. 从Java Web 基础看SSH架构
  9. come back 继工作1年1一个月随想
  10. 设置域用户帐户密码策略