IA-32 Intel手册学习笔记(三)任务切换

一个任务由两部分组成

  • 任务执行空间,由代码段,栈段,和一个或多个数据段组成
  • 任务状态段(TSS)

如果操作系统使用处理器特权级机制,那么任务执行空间会对每个特权级提供不同的栈(实际上是对0, 1, 2三个特权级分别提供不同的栈)

注,用户程序的特权级是3,不是上述三个栈中的任何一个,而是SS : ESP表示的栈

一个正在被执行的任务状态包括

  • 任务当前执行的空间,由各种段选择子决定(CS, DS, SS, ES, FS和GS)。在线性地址空间中,是一个段空间
  • 通用寄存器状态,包括EAX, ECX, EDX, EBX, ESP, ESI和EDI的值
  • EIP寄存器的状态,即EIP的值
  • CR3控制寄存器的值
  • 任务寄存器(TR)的状态
  • LDTR寄存器的状态
  • I/O内存映射的基地址(包含在TSS中),(共享内存?)
  • 三个栈指针,分别指向特权级0, 1, 2的栈地址
  • 上一个被执行的任务的link(地址)

任务状态中”上一个被执行的任务的link”指的是

当任务A使用CALL指令调用任务B时,在任务B的任务状态中会包含任务A的地址,以便于当B执行完成后可以返回到任务A接着执行。很像汇编中CALL指令调用函数时将下一条语句的地址入栈。

你可能感兴趣的:(操作系统,操作系统)