1:任务(Task):处理器可以分配调度,执行和 挂起的一个工作单元。
用于执行程序,任务或进程,操作系统服务,中断或异常处理过程和内核代码。
2:任务是一个正在运行的程序,或者是一个等待运行的程序。通过中断,异常,跳转或调用,我们可以执行一个任务。
3:当中断,异常,跳转或者调用和某个描述符表中指定项的内容一起使用时,那么这个描述符是一类可以导致新任务开始执行的描述符。
4:描述符表中与任务相关的描述符有两种:任务状态段描述符和任务门。
5:任务切换会把控制权完全转移到一个新的执行环境,即新任务的执行环境。
6:任务状态段(TSS):保存处理器的状态信息。
7:任务的构成:任务执行空间(代码段,堆栈段,一个或者多个数据段),任务状态段(TSS)
8:一个任务使用指向其TSS的段选择符来指定。
9:任务寄存器(TR):段选择符,基地址,段限长,TSS段描述符属性。
10:当前执行任务的状态由处理器中的以下所有内容组成:
1:所有通用寄存器和段寄存器信息。
2:标志寄存器EFLAGS,程序指针EIP,控制寄存器CR3,任务寄存器和LDTR寄存器
3:段寄存器指定的任务当前执行空间
4:I/O映射位图基地址和I/O位图信息(在TSS中)
5:特权级0,1,2,的堆栈指针(在TSS中)
6:链接至前一个任务的链指针(在TSS中)
11:任务的执行
1:使用CALL指令明确的调用一个任务
2:使用JMP指令明确的跳转到一个任务
3:(由处理器)隐含的调用一个中断句柄处理任务
4:隐含的调用一个异常句柄处理任务。
通过一个指向任务门或任务TSS段的选择符来确定一个任务。
12:当使用CALL指令或JMP指令调度一个任务时,指令中的选择符既可以直接选择任务的TSS,也可以选择存放有TSS选择符的任务门。
13:当调度一个任务来处理一个中断或者异常时,那么IDT中该中断或异常表项必须是一个任务门,并且其中包含有中断或异常处理任务的TSS选择符。
14:在任务切换期间,当前运行任务的执行环境(任务的状态或者上下文)会被保存到它的TSS中并且暂停该任务的执行。此后新任务的上下文会被加载进处理器中,并且从加载的EIP指向的指令处开始执行新任务。
15:如果当前执行任务(调用者)调用了被调度的新任务(被调用者),那么调用者的TSS段选择符会被保存在别调用者的TSS中,从而提供了一个返回调用者的链接。
16:作为任务切换 的一部分,处理器会切换到另一个LDT,从而允许每个任务对基于LDT的段具有不同逻辑到物理地址的映射。页目录寄存器CR3也会在切换时被重新加载,因此每个任务可以有自己的一套页表。
17:任务管理寄存器
任务状态段TSS,
TSS描述符,
任务寄存器TR,
任务门描述符,
标志寄存器EFLAGS中的NT标志
18:任务状态段TSS:用于恢复一个任务执行的处理器状态信息。(动态字段,静态字段)
19:动态字段
通用寄存器字段。(EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI)
段选择符字段(ES,CS,SS,DS,FS,GS)
标志寄存器EFLAGS字段。在切换之前保存
指令指针EIP字段。在切换之前保存
先前任务连接字段。含有前一个任务TSS段选择符
20:静态字段
LDT的段选择符字段。含有任务的LDT段的选择符
CR3控制寄存器字段。含有任务使用的页目录物理基地址
特权级0,1,2的堆栈指针段。
调试陷阱T标志字段。
I/O位图基地址字段。
21:TSS描述符。只能存在GDT中。
22:使用跳转或者调用指令时,任何可以访问TSS描述符的程序都能够造成任务切换。
23:任务寄存器(TR)中存放着16位的的段选择符以及当前任务TSS段的整个描述符。这些信息从GDT中当前任务的TSS描述符中复制过来的。
24:指令LTR和STR分别用于加载和保存任务寄存器的可见部分,即TSS段的选择符。
25:任务门描述符中的TSS选择符字段指向GDT中的一个TSS段描述符。任务门描述符可以存放在GDT,LDT,IDT中。
26:任务描述符中的DPL用于在任务切换时控制对TSS段的访问。
27:当程序通过任务门调用或跳转到一个任务时,程序的CPL以及指向任务门的门选择符的RPL值必须小于或者等于任务门描述符中的DPL。
28:看124页图4-36引用同一任务的任务门
29:处理器使用下面4种方式之一执行任务切换操作:
1:当前任务对GDT中的TSS描述符执行JMP或CALL指令
2:当前任务对GDT或者LDT中的任务门描述符执行JMP或者CALL指令。
3:中断或者异常向量指向IDT中的任务门描述符
4:当EFLAGS中的NT标志置位时当前任务执行IRET指令。
30:当中断或者异常的向量索引的是IDT中的一个任务门时,一个中断或者异常就会造成任务切换。如果向量索引的是IDT中的的一个中断或者陷阱门,就不会造成任务切换。
31中断服务过程总是把执行权返回到被中断的过程中,被中断的过程可能是在另一个任务中。如果NT标志处于复位状态,则执行一般返回处理。如果NT标志是置位状态,则返回操作会产生任务切换,切换到的新任务由中断服务过程TSS中的TSS选择符(前一任务连接字段)指定。
31:切换到一个新任务时,处理器会做以下工作:
1:从作为JMP或CALL指令操作中,或者从任务门中,或者从当前TSS的前一任务链接字段(对于由IRET引起的任务切换)中取得新任务的TSS段选择符。
2: