`
chong_zh
  • 浏览: 72325 次
  • 来自: 杭州
社区版块
存档分类
最新评论

Intel80386知识总结: 多任务支持

阅读更多
====================================================================
本文用于汇总整理Intel80386的多任务支持功能,
参考文献:
  • 《INTEL 80386 programmer's reference manual 1986》

本文是系列文章《Intel80386知识总结》的一部分。
===================================================================

1. 任务信息的管理机构
1.1 TSS
处理器把维护一个任务所需的所有信息都保存在一个特殊的段中:Task State Segment(TSS)。TSS的结构如下图所示:

TSS中的字段可以分为两组,一组是每次任务切换时都会更新的动态字段,另一组是只读的静态字段。动态字段包括:
  • 通用寄存器保存字段:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI
  • 段寄存器保存字段:ES、CS、SS、DS、FS、GS
  • 标志位寄存器保存字段:EFLAGS
  • 指令指针保存字段:EIP
  • 前一个任务的TSS选择符

静态字段包括:
  • 任务LDT的选择符
  • 寄存器PDBR的保存字段
  • CPL为0~2时的堆栈段选择符,共3个
  • T bit:Debug trap bit,等于1时,在每次任务切换时处理器都会产生一个调试异常
  • I/O Map base:I/O用


1.2. TSS描述符
即指向TSS的段描述符,其结构如下所示:

TSS描述符TYPE字段中的B bit是TSS的忙标志位,当TYPE字段=9时,表示该任务为非繁忙任务,当TYPE字段=11时,表示该任务为繁忙任务。i386的任务是不可重入的,处理器可以通过检查任务的B bit发现任务是否繁忙。TSS描述符的LIMIT字段必须大于等于103,大于103是允许的,可以系统软件被用来存储一些相关信息。
TSS描述符只能被保存在GDT中,通过TI=1的选择符访问TSS选择符会造成异常。不能直接通过把TSS描述符载入数据段寄存器来修改其中的内容,只能通过载入另一个指向TSS的数据段描述符来修改TSS。

1.3. TR寄存器
TR寄存器给出了当前任务的TSS,通过TR寄存器访问TSS的路径如下图所示:


1.4. 任务门
i386提供任务门机制作为间接的受保护的访问TSS的方式,其结构如下所示:

其中,SELECTOR字段指向TSS描述符,SELECTOR字段中的RPL是不被使用的,同时,当使用任务门时,TSS描述符中的DPL失效,优先级保护规则为:选中任务门所用的选择符RPL和CPL都必须小于等于任务门的DPL。
一个TSS只有唯一的TSS描述符与其对应,却可以有多个任务门同时指向对应的TSS。TSS描述符和任务门形成了多任务管理的两层架构:


2. 任务的切换
2.1 切换流程
  • 检查当前任务是否有权切换到目标任务:TSS描述符或者是调用门的DPL必须小于等于CPL和调用门选择符的RPL
  • 检查目标TSS描述符的PRESENT字段是否为1,LIMIT字段是否合法,否则产生异常。异常将在切换前的任务上下文中。
  • 保存当前任务的执行现场:保存寄存器EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI、ES、CS、SS、DS、FS、GS、EFLAGS到TSS。把当前指令(造成任务切换的指令)的下一条指令地址保存到TSS。
  • 在TR寄存器中载入目标任务的TSS描述符,并设置其Busy bit。
  • 从新任务的TSS中恢复现场,并继续执行

在上述过程中要完成的保护检查一览:
序号检查内容异常类型
1Incoming TSS descriptor is presentNP
2Incoming TSS descriptor is marked not-busy GP
3Limit of incoming TSS is greater than or equal to 103TS
4LDT selector of incoming task is validTS
5LDT of incoming task is presentTS
6CS selector is validTS
7Code segment is presentNP
8Code segment DPL matches TS Code segment CS RPLTS
9Stack segment is validGP
10Stack segment is presentSF
11Stack segment DPL = CPLSF
12Stack-selector RPL = CPLGP
13DS, ES, FS, GS selectors are validGP
14DS, ES, FS, GS segments are readableGP
15DS, ES, FS, GS segments are presentNP
16DS, ES, FS, GS segment DPL ≥ CPL (unless these are conforming segments)GP

其中,异常类型的含义为:
  • NP = Segment-not-present exception
  • GP = General protection fault
  • TS = Invalid TSS
  • SF = Stack fault


2.2 任务返回链
TSS的back-link字段和EFLAGS寄存器的NT(Nested Task)标志位共同提供了i386的任务返回链机制。当由任务A切换至任务B的时候,处理器会在任务B的TSS中设置back-link字段,指向任务A的TSS选择符,同时设置任务B的EFLAGS寄存器中的NT位=1。当任务B释放控制流的时候,处理器首先检查EFLAGS的NT位是否为1,若为1则读取任务B TSS中的back-link字段自动返回。在系统运行的过程中返回链的长度可以无限增长,TSS描述符的Busy位保护了在返回链中没有环。同时,在多处理器环境下,Busy位还可以保护一个任务不被多个处理器同时执行。下表总结了Busy位,NT位和Back-link字段的具体行为逻辑:
0
5
分享到:
评论

相关推荐

    INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986

    - **定义**:Intel 80386是一款32位微处理器,是Intel 80286的后续产品,首次引入了32位架构和支持多任务操作系统的功能。 - **重要性**:标志着个人计算机从16位向32位过渡的重要里程碑,对后来的计算机硬件和软件...

    Intel 80386 程序员手册 中文 1、2、4、5、6、7、8、9、10、14章

    ### 第七章:多任务(Multitasking) #### 7.1 任务状态段(Task State Segment) 这一节解释了任务状态段的作用,以及它如何帮助处理器管理不同的任务。 #### 7.3 任务寄存器(Task Register) 这里介绍了任务寄存器...

    intel项目管理知识总结

    【Intel项目管理知识总结】 项目管理是一门涉及多个方面的学科,尤其在Intel这样的高科技公司中,高效的项目管理至关重要。本文将概述项目管理的核心概念、特点、流程和组织结构,以及项目管理过程的关键要素。 ...

    保护模式下的80386及其编程 扫描版 pdf

    3. **设置TSS**:配置任务状态段以支持多任务环境。 4. **开启保护模式**:通过修改CR0寄存器启用保护模式。 5. **设置分页机制**:定义页目录表和页表,并加载到CR3寄存器中。 6. **启用分页**:通过修改CR0寄存器...

    深入Intel NPU加速库:从安装到模型优化

    - **多平台支持**:支持在不同的硬件平台上进行部署,包括CPU、GPU、VPU等。 ##### 4.2 安装OpenVINO Toolkit - **下载OpenVINO Toolkit**:访问Intel官方网站下载OpenVINO Toolkit。 - **安装OpenVINO Toolkit**...

    51多任务例子学习,一起来学习吧

    根据提供的文件信息,可以看出这是一段与51单片机相关的代码示例,涉及到了多任务处理的概念。本文将从这段代码入手,详细介绍其中涉及的关键知识点,并深入探讨这些概念在51单片机中的应用。 ### 一、51单片机简介...

    保护方式下的80386及其编程.rar

    在80386处理器中,保护模式是其最显著的特性之一,相比实地址模式,它提供了更高级别的内存管理和多任务支持。保护模式下,80386引入了段选择子、段寄存器、分页机制、特权级以及描述符表等概念,这些都为系统的安全...

    网络技术知识点总结

    - **支持多重处理:** 实现多任务并发处理。 **安腾芯片的技术特点:** - **64位处理机:** 相比32位处理器,能够处理更大范围的数据。 - **EPIC(Explicitly Parallel Instruction Computing):** 明确并行指令...

    英特尔傲腾内存B250驱动.rar

    5. 性能提升:启用英特尔傲腾内存后,系统启动、程序加载和多任务处理的速度会有明显提升,尤其对于使用HDD机械硬盘的用户,傲腾内存可以显著减少等待时间,提高工作效率。 6. 兼容性检查:在安装前,用户需确保...

    intel 945G 规格书

    - **Hyper-Threading Technology (超线程技术)**:部分处理器支持超线程技术,可以模拟额外的逻辑处理器,从而提高多任务处理能力。 5. **扩展接口**:提供PCI Express x16接口,用于连接高性能显卡;同时支持多...

    智能计算重要知识点总结.docx

    ### 智能计算重要知识点总结 #### 一、FPGA的演进与发展 - **定义与起源**:FPGA(Field Programmable Gate Array),即现场可编程门阵列,是一种半导体器件,属于专用集成电路(ASIC)领域的半定制电路产品。它在...

    电脑配置报表

    1. **核心与线程:** 处理器拥有2个物理核心,支持超线程技术,实现4个逻辑线程,提高多任务处理能力。 2. **缓存结构:** L1缓存为每核心32KB,L2缓存为每核心256KB,共享3MB的L3缓存,优化数据访问速度和效率。 3....

    Intel® Advanced Vector Extensions Programming Reference.pdf

    超线程技术允许单个物理处理器执行多个线程,从而提高处理效率和多任务处理能力。 5. 虚拟化技术(Intel® Virtualization Technology): 文档指出,虚拟化技术需要有启用Intel®虚拟化技术的处理器、BIOS、虚拟机...

    vscode(VSCode-macOS-intel-1.70.1.zip)

    2. **调试工具**:支持多种语言的内置调试工具,方便进行程序调试。 3. **Git集成**:内置Git支持,可以轻松管理版本控制系统。 4. **多语言支持**:除了内置的语言支持外,还可以通过安装插件支持更多语言。 5. **...

    大学计算机信息技术教程_必考点知识总结

    ### 大学计算机信息技术教程_必考点知识总结 #### 第一章:信息技术基础 本章节在历年的江苏一级考试中占据了重要的地位,大约占2-3分的比例。本章主要介绍的是信息技术的基础概念,其中特别强调了微电子技术的...

    英特尔Core i7 920处理器:低端超跑新选择.pdf

    2. **多核心与超频潜力**:Core i7 920拥有四个物理核心,支持超线程技术,能够处理多任务并行,提高工作效率。由于45nm工艺,其超频能力较强,通过适度的超频,性能可媲美高端的Core i7 965 Extreme。 3. **三通道...

    Intel® 64 and IA-32 Architectures Software Developer’s Manual

    总结,《Intel® 64 and IA-32 Architectures Software Developer’s Manual》是理解和利用英特尔处理器的关键资源,涵盖了从底层硬件到高级编程策略的广泛知识,对于开发高效、优化的软件至关重要。通过深入学习和...

    Intel X58 芯片组Datashet

    - **多核支持**:支持多个物理内核,提高多任务处理性能。 ##### 2. 内存支持 - **DDR3内存**:最高支持DDR3 1600MHz,支持三通道内存架构,显著提升数据带宽。 - **最大内存容量**:支持高达24GB的DDR3内存(根据...

    intel的主板芯片8系列手册

    ### Intel的主板芯片8系列手册知识点解析 #### 一、Intel 8系列/C220系列芯片组概述 Intel 8系列/C220系列芯片组是为支持第四代Intel Core处理器而设计的一系列高性能主板芯片组。这些芯片组旨在提供强大的计算...

    Intel C++ Intrinsics Reference

    - **SSE数据类型**:支持多种数据类型,包括整数(如32位整数)、单精度浮点数和双精度浮点数等。 #### 四、SSE2 SSE2是SSE的后续版本,于2000年随Pentium 4处理器发布。SSE2扩展了SSE的功能,并增加了对64位双...

Global site tag (gtag.js) - Google Analytics