x86汇编之任务切换

前言
  • 任务切换可以分为协同和抢占
  • 协同就是任务自己主动交出控制权,抢占就是利用中断,强制从任务手中获得控制权
N位
  • 任务门和调用门类似,任务门描述符可以放置在GDT,LDT中
    在这里插入图片描述
  • 当发生中断的时候,中断号x8+中断描述符表基地址,当CPU辨别这是一个任务门的时候就执行任务切换
  • 除此之外,还可以通过 call 任务门或者call TSS选择子进行任务切换
  • 矛盾在于用iret返回的时候,怎么鉴别是从中断返回还是从任务返回
  • 在EFLAGS里面有一个N位,当该位是1时,表明当前任务属于嵌套在其他任务之中,那么就属于从任务返回
  • 当中断或者Call 发生执行任务切换会发生任务嵌套,将当前任务的所有状态进行保存,不改变N位和B位,将下一个任务TSS的任务链接域指向上一个任务,并且将B位和N位置为1
  • 当用Jump的时候并不会,将当前B位置0,不改变N位。然后加载下一个任务的TSS进TR,并将其B位置1,不改变N位
  • 任务切换不允许重入
  • A切换到A无法进行状态保存
  • ABC任务嵌套,C再去嵌套A,就会导致死循环
  • 通过中断发生的任务切换,不检验特权级
  • 数据访问的特权级检查规则适用于jmp和call指令,当前任务的cpl和新任务段选择子的RPL必须在数值上小于或者等于目标TSS或者任务门的DPL。异常,中断和iret指令引起的任务切换忽略目标任务门或者TSS描述符DPL。对于以int n 指令产生的中断,要检查DPL
  • 通过B位来检验。
IOPL
  • 在处理器的标志寄存器EFLAGS中,位13,位12是IOPL,也就是输入/输出特权级,它代表着当前任务的I/O特权级别
  • 如果当前特权级CPL高于,或者和任务的I/O特权级IOPL相同时,所有I/O操作都是允许的
  • 处理器不限制0特权级程序的I/O访问,总是允许的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值