您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《计算机组成原理与汇编语言》 > 第7章 Pentium简介

第8节 任务的切换

7.8.1 任务间的切换

    Pentium或80486等处理器均支持多任务,这就意味着系统中同时存在着多个任务,各任务之间可相互切换。

   1.任务状态段

        任务状态段TSS是内存的一个区域,其中存放着一个任务的全部运行信息。TSS的格式如图7.30所示。

   由图730可以看到,TSS主要包括如下几部分:
   
   ① 各特权级(0~2级)的堆栈指针。 
   ② LINK存放父任务的选择符,或者说它是返回到那个任务(调用任务)的选择符。
   ③ CR3用于存放CR3的内容:页目录基地址及PCD,PWT等。
   ④ LDT选择符的作用是,任务利用LDT选择符,可以找到自己的LDT。
   ⑤ T位用于调试。 
   ⑥I/O位图区有8K×8bit,共64K位,分别表示处理器可寻址的64K个I/O口。
   ⑦位图偏移量。 
   ⑧保留部分。 
   

 

2. 任务的切换

   任务的切换可利用下述4种方法实现: 
   
   ①用长JMP/CALL指令的目的选择器访问TSS描述符(忽略目的地址的偏置量);
   
   ②当标志字的NT位为“1”,执行IRET指令时,TSS内的返回连接选择器作为新任务的TSS选择器;
   
   ③用长JMP/CALL指令的目的选择器访问任务门(忽略目的地址的偏移量),新任务的TSS选择器由任务门加载;
   
   ④中断发生,访问IDT中的任务门,新任务的TSS选择器由任务门加载。
   
若经检查认为可以进行任务切换,则需进行如下处理:
   
   第一步,将离去任务的状态存放在离去任务的TSS中。 
   
   第二步,将新任务的TSS所对应的选择符和描述符分别装入TR和相应的描述符寄存器中,并将描述符中的类型码由9(可用TSS描述符)变为B(处于忙状态的描述符)。
   
   第三步,将现行任务的TSS中的通用寄存器、段寄存器、EFLAGS、CR3和LDT选择符装入处理器中。