任务状态段TSS及TSS描述符、局部描述符表LDT及LDT描述符
1.TSS介绍
在一个多任务环境中,当发生了任务切换,需保护现场,因此每个任务的应当用一个额外的内存区域保存相关信息,即任务状态段(TSS);TSS格式固定,104个字节,处理器固件能识别TSS中元素,并在任务切换时读取其中信息。
2.GDT、TSS、LDT对比
GDT/LDT/TSS | 对比 | 内容 | |
---|---|---|---|
GDT(全局描述符表) |
整个系统只有一个GDT; 通过全局描述符寄存器GDTR进行定位; |
段描述符 | |
LDT(局部描述符表) |
每个任务都配有一个LDT,LDT基地址、界限等信息存放在任务对应的TCB中; 通过局部描述符寄存器GDTR进行定位; 将LDT视为一种特殊的内存段,则可为每一个LDT创建一个LDT描述符,将描述符存放到GDT中; 访问LDT时:GDT选择子==>访问GDT==>LDT描述符==>访问LDT(==>加载到LDTR); |
段描述符 | |
TSS(任务状态段) |
每个任务都配有一个TSS,TSS基地址、界限等信息可以存放在任务对应的TCB中; 通过任务寄存器TR进行定位; 将TSS视为一种特殊的内存段,则可为每一个TSS创建一个TSS描述符,将描述符存放到GDT中; 访问TSS时:GDT选择子==>访问GDT==>TSS描述符==>访问TSS(==>加载到TR); |
保存任务相关信息 |
各部分关系图:
3.任务寄存器TR与局部描述符表寄存器LDTR
TR,LDTR总指向当前任务的TSS,LDT。
TR(LDTR)寄存器包含16位TR(LDTR)描述符选择子+描述符高速缓存器;
加载TR和LDT分别使用指令ltr和lldt:
//操作数可以为16位通用寄存器或16位单元内存地址,不论寄存器还是内存单元,内容为16位TSS(LDT)选择子
ltr r/m16
lldt r/m16
将TSS(LDT)选择子加载到TR(LDTR)后,CPU访问GDT==>得到TSS(LDT)描述符==>将段界限、基址加载到TR(LDTR)高速缓存部分;若为TSS则TSS中’B’置1即忙;
3.TSS描述符格式
TSS描述符存放在GDT中;
TYPE中'B':忙,刚创建时应为0,任务开始执行,挂起时为1,由硬件管理,防止切换任务切到自己;TSS描述符DPL必须为0,只有CPL为0能调用;
4.LDT描述符格式
LDT描述符存放在GDT中,在GDT中的选择子可以存入相应的TCB中;
段基地址指示LDT在内存中的起始地址;
段界限指示LDT的范围;
S-TYPE固定为'0-0010',表明为LDT描述符;
5.TSS结构
组成 | 作用 | |
---|---|---|
0:任务链接域 | 前一个任务的TSS描述符的GDT选择子 | |
SS0,SS1,SS2 ESP0,ESP1,ESP2 |
分别是0,1,2特权级的栈段选择子和对应栈段的栈顶指针; 该部分应由任务创建者填写,且属于一般不变的静态部分,用于当通过门进行特权级转移时切换的栈 |
|
28:CR3 | 分页相关 | |
32~92部分 |
处理器各寄存器快照,用于任务切换时,保存状态以便将来恢复现场; 多任务环境中,每创建一个任务,OS至少要填写EIP,EFLAGS,ESP,CS,SS,DS,ES,FS,GS,当该任务第一次执行时,处理器从这加载初试环境,并从CS:EIP处开始执行,从此运行期间由固件更改; |
|
96:LDT段选择子 | 即当前任务的LDT描述符的GDT选择子; | |
100:T | 用于软件调试,在多任务环境中,若为1,每次切换到该任务引发一次调试异常中断; | |
I/0映射起始地址 | 用于决定当前任务是否可以访问特定硬件端口,填TSS段界限(103)即代表不用; |
任务状态段TSS及TSS描述符、局部描述符表LDT及LDT描述符相关推荐
- x86保护模式 任务状态段和控制门
x86保护模式 任务状态段和控制门 每个任务都有一个任务状态段TSS 用于保存任务的有关信息 在任务内权变和任务切换时 需要用到这些信息 任务内权变的转移和任务切换 一 ...
- 全局描述表GDT、任务状态段TSS、局部描述表LDT之间的关系
最近在学习哈工大操作系统时碰到了TSS的相关知识,感觉还牵涉到了GDT.LDT的相关知识,这里大概把相关的知识总结一下,以供以后参考 全局描述符表GDT 在计算机从实模式(16位)转换到保护模式(32 ...
- 一步步编写操作系统 53 任务状态段TSS介绍
操作系统是利用PCB来维护所有任务的,包括进程和线程,但cpu提供的是TSS,linux系统可没用它,因为效率太低.但是还是要了解下TSS才清楚操作系统中某些操作的原因. 本节中所讲的特权级与它有着密 ...
- 分段管理机制(段描述符,描述符表,段选择符)
逻辑地址-=>线性地址-=>物理地址 前面我们提到了当使用80x86微处理器时,有三种不同的地址: 逻辑地址(logical address):包含在机器语言指令中用来指定一个操作数或一条 ...
- 汇编实例解析--利用tcb,tss,全局tss,ldt管理任务实现任务切换
1.引导程序 ; 职责:; 1.完成实模式到保护模式切换; 2.安装保护模式下4个基础段描述符; 3.将指定位置物理磁盘程序加载到指定物理内存位置; 4.为加载的程序构造&安装3个段描述符; ...
- USB描述符(附加USB HID报告描述符 )
USB描述符介绍 USB描述符是主机识别USB设备的依据,主机根据设备的描述符来加载相应的驱动 USB描述符的作用 USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送Get ...
- t’触发器真值表和状态方程_触发器的逻辑功能通常可用 特征方程 、 状态转换图 、 功能真值表 和 时序波形图 等多种方法进行描述。 ( )_学小易找答案...
[单选题]电气装置控制 ,只有轿门和所有层门完全关闭时,电梯才能正常运行. [多选题]公共物品的特征? [判断题]触发器按动作特点可分为基本型.异步型 .主从型和边沿型. ( ) [判断题] [论述题 ...
- 统计单词的数量 描述 输入一个英文句子,以回车符结束,单词间以空格分隔,标点符号后跟至少一个空格,统计并输出单词的个数(仅统计单词,数字按单词计,不计算标点符号,重复单词出现几次就统计几次)。
统计单词的数量 描述 输入一个英文句子,以回车符结束,单词间以空格分隔,标点符号后跟至少一个空格,统计并输出单词的个数(仅统计单词,数字按单词计,不计算标点符号,重复单词出现几次就统计几次). ...
- gdt描述_全局描述符表GDT
写在前面 添油加醋系列第二弹--剖析GDT 话说C语言的话除了刷刷OJ外,就是用来实现操作系统这个大头了.C语言比C++少了很多很多臃肿的语法特性,写起来非常优美(至少写操作系统是这样的).虽说C++ ...
最新文章
- 仿射加密简述和Win32版本实现
- pycharm 如何导入、导出设置?
- Java nio Socket非阻塞模式
- 两路虚拟化服务器,当四核多路服务器碰上虚拟化
- Python数据可视化之Excel气泡图
- 物联网可能面临灾难性安全风险
- Shiro入门视频课程——笔记(一)
- (六)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?(2)
- 区块链java开发教程,JAVA区块链项目实战视频课程
- Pygame教程系列三:绘制文本篇
- 微信小程序 云开发 图片内容安全 珊瑚图片内容安全 api
- webpack-theme-color-replacer自定义element-ui主题
- USB CCID理解
- Hadoop大数据原理(2) - 分布式文件系统HDFS
- python递归函数例题_递归案例python
- vue 2.0使用tinymce-vue富文本
- 线性规划(matlab篇)
- 杭电2001_杭电考研851数据结构2001-2015年真题
- QT获取微秒级时间戳
- 《请别叫我奥特曼,我只是你望尘莫及的神话》
热门文章
- 高级着色语言(HLSL) 基础
- 山西省计算机专业的专科排名,2021年山西十大专科学校排名 山西最好的高职院校...
- 电商行业市场行情解析,shopee虾皮平台讲解
- LoadRunner(一)Win10系统下LoadRunner12的安装下载
- 小学计算机反思案例,小学数学有效教学案例及反思
- 围观!物联网卡的销售渠道有哪些?
- 矩阵中的主元是什么意思(在消去过程中起主导作用的元素)
- xctf攻防世界 REVERSE 高手进阶区 Guess-the-Number
- 《第七天》---By余华
- 厦门理工学院 oj-1184 默罕默德的炸弹