任务的执行

所有这些用于分派任务的方法都使用指向任务门或任务的 TSS 的段选择器来标识要分派的任务。当使用 CALL 或 JMP 指令分派任务时,指令中的选择器可以直接选择 TSS,也可以选择持有 TSS 选择器的任务门。在调度任务来处理中断或异常时,中断或异常的 IDT 条目必须包含一个任务门,该任务门包含中断或异常处理程序 TSS 的选择器。

当一个任务被调度执行时,会在当前运行的任务和被调度的任务之间发生一次任务切换。在任务切换期间,当前正在执行的任务的执行环境(称为任务的状态或上下文)保存在其 TSS 中,并暂停任务的执行。然后将分派任务的上下文加载到处理器中,并从新加载的 EIP 寄存器指向的指令开始执行该任务。如果自系统上次初始化后任务还没有运行,EIP 将指向任务代码的第一条指令;否则,它将指向任务上次活动时执行的最后一条指令之后的下一条指令

如果当前正在执行的任务(调用任务)调用了正在调度的任务(被调用任务),则调用任务的 TSS 段选择器存储在被调用任务的 TSS 中,以提供返回调用任务的链接。

可以通过将任务切换到处理程序任务来处理中断和异常。这里,处理器执行任务切换来处理中断或异常,并在从中断处理程序任务或异常处理程序任务返回时自动切换回被中断的任务。该机制还可以处理中断任务期间发生的中断

作为任务切换的一部分,处理器还可以切换到另一个 LDT,从而允许每个任务对基于 LDT 的段具有不同的逻辑到物理地址映射。页目录基址寄存器 (CR3) 也在任务切换上重新加载,允许每个任务拥有自己的一组页表。这些保护设施有助于隔离任务并防止它们相互干扰。

如果不使用保护机制,处理器将不提供任务之间的保护。即使对于使用多个特权级别进行保护的操作系统也是如此。以特权级别 3 运行的任务使用与其他特权级别 3 任务相同的 LDT 和页表,可以访问代码和损坏数据以及其他任务的堆栈。
使用任务管理工具来处理多任务应用程序是可选的。多任务处理可以在软件,每个软件定义的任务都在单个 IA-32 架构任务的上下文中执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值