32位保护模式学习小结(3)---任务切换

本文介绍了32位保护模式下任务切换的两种基本方式:协同式和抢占式,并详细阐述了任务切换的前置条件、方法以及处理器在切换过程中的操作。重点讨论了中断和CALL/JMP指令如何触发任务切换,以及任务不可重入性,强调了B位、NT位和任务链接域在切换中的关键作用。
摘要由CSDN通过智能技术生成

两种基本的任务切换方式

  1. 协同式:从一个任务切换到另一个任务,需要当前任务主动地请求暂时放弃执行权,或者在通过调用门请求操作系统服务时,由操作系统”趁机”将控制转移到另一个任务.这种方式依赖于每个任务的”自律”性,当一个任务失控时,其他任务可能得不到执行的机会.

  2. 抢占式:这种方式下,可以安装一个定时器中断,并在中断服务程序中实施任务切换.硬件中断信号总会定时出现,不管处理器当时在做什么,中断都会适时地发生,而任务切换也就能够顺利进行.在这种情况下,每个任务都能获得平等的执行机会.而且,即使一个任务失控,也不会导致其他任务没有机会执行.

任务切换前置

所有任务共享一个全局空间,这是内核或者操作系统的,包括了系统服务程序和数据;同时,每个任务还有自己的局部空间,每个人物的功能都不一样,所以,局部空间包含的是一个任务区别于其他任务的私有代码和数据.如下图:

这里写图片描述

在一个任务内,全局空间和局部空间具有不同的特区级.使用门,可以在任务内将控制从3特权级别的局部空间转移到0特权级的全局空间,以使用内核或者操作系统提供服务.

任务切换是以任务为单位的,是指离开一个任务,转到另一个任务中去执行.

要执行任务切换,系统中必须至少有两个任务,而且已经有一个正在执行中.

任务切换的方法

1.借助中断进行中断

  • 这也是现代抢占式多任务的基础.只要中断没有被屏蔽,它就随时能发生.特别是定时器中断,能够以准确的时间间隔发生,可以用来强制实施任务切换.
  • 在保护模式下,中断向量表不再使用,取而代之的是中断描述符表.它和GDT, LDT是一样的,用于保存描述符.唯一不同的地方是,它保存的是门描述符,包括中断门,陷阱门和任务门.当中断发生时,处理器用中断号乘以8(因为每个描述符8字节),作为索引访问中断描述符表,取出门描述符.门描述符中有中断处理过程的代码段选择子和段内偏移量,这和调用门是一样的.接着,转移到相应的位置去执行.

  • 回忆一下调用门的工作原理,它只是从任务的局部空间转移到更高特权级的全局空间去执行,本质上是一种任务内的控制转移行为.与此相同,中断门和陷阱门允许在任务内实施中断处理,转到全局空间去执行一些系统级的管理工作,本质上,也是任务内的控制转移行为.

  • 在中断发生时,如果该中断对应的门是任务门,那么,必须进行任务切换.任务门描述符中的主要成分是TSS选择子.任务门用于在中断发生时执行任务的切换,而执行任务切换时必须找到新任务的任务状态段.所以任务门应当指向任务的TSS.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值