免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 怪怪虎
打印 上一主题 下一主题

请教关于段描述表的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-05-06 00:39 |只看该作者
原帖由 W.Z.T 于 2007-5-6 00:29 发表于 10楼  


"TSS 属于系统管理的资源"这句话没看明白。tss怎么可能与具体的任务无关呢?否则进程切换时怎么保存进程的上下文?

x86体系的cpu中最多可以定位2^13=8192个描述符。在linux系统中一个任务需要 ...


TSS 是任务发生切换时系统软件管理的,任务本身不能操纵它。从某种意义讲与任务无关。
Linux 的实现 4096 限制并不代表 X86 平台的有4096 限制

论坛徽章:
0
12 [报告]
发表于 2007-05-06 00:56 |只看该作者
“TSS 是任务发生切换时系统软件管理的”

任务发生切换时,cpu自动把进程的上下文保存到tss中,不需要操作系统来管理

论坛徽章:
0
13 [报告]
发表于 2007-05-06 01:05 |只看该作者
原帖由 W.Z.T 于 2007-5-6 00:56 发表于 12楼  
“TSS 是任务发生切换时系统软件管理的”

任务发生切换时,cpu自动把进程的上下文保存到tss中,不需要操作系统来管理


没错,但需要系统来定位 TSS 块,也就是说要有人(系统)去执行 LTR (Load Task Register)指令

论坛徽章:
0
14 [报告]
发表于 2007-05-06 08:49 |只看该作者
ltr只需人工加载一次,以后cpu会自动处理。

论坛徽章:
0
15 [报告]
发表于 2007-05-06 22:33 |只看该作者
原帖由 W.Z.T 于 2007-5-6 00:56 发表于 12楼  
“TSS 是任务发生切换时系统软件管理的”

任务发生切换时,cpu自动把进程的上下文保存到tss中,不需要操作系统来管理


自己对低层不是很了解,按照自己对计算机知识的理解,说下对这两行的理解以及疑问.

1.  第一行说的系统软件个人认为就是操作系统.不知道对否?
2. 第二行在说硬件在不需要软件的前提下,独立完成了保存任务吗? 我怎么觉得不可能啊.硬件如果没有软件(指令)的执行,就是废铁. 总是觉得有操作系统在参与.(由于操作系统之下就是硬件了.所以推断出由操作系统的参与,别的软件不可能在参与)

论坛徽章:
0
16 [报告]
发表于 2007-05-06 22:47 |只看该作者
看了上边两位牛人的讨论,自己有查阅了下资料.下边说下自己对段描述表和段描述符的理解.
对于一个新手个人觉得可以这样思考.

1. 首先确定系统中只有四个段描述表. GDT, LDT,IDT, TSS
2.段描述符有好多种类,比如数据段描述符,代码段描述符,TSS段描述符,以及门描述符.

下边自然而然的就想到段描述表有段描述符组成.

没种段描述表中存放什么样的段描述符呢? 这一点自己不是很清楚,但是有一点可以肯定的是GDT并不是只能存放一种段描述符,TSS也不是就用来存放TSS段描述符的。(盼望高人对这一部分给指点下)

接下来就是描述符的构成了. 这点W.Z.T 兄的帖子中已经解释的很清楚了,尤其是对基地址为什么会出现两个.

另外 个人认为 四个段描述表其实就是一块内存,只不过这块内存做了特出的用法.
以上对概念的一些基本理解.个人认为对全局的理解很重要.不队之处希望指正.


PS:

还有一点自己没有理解,就是说TSS是有104字节构成,可是怎么没看出TSS和任何一个描述符有联系?请高人指点.


参考资料
http://www.juqingshow.com/cpu/200702/7825.html

论坛徽章:
0
17 [报告]
发表于 2007-05-06 23:07 |只看该作者
tss的第96个字节不就是其对应的ldt选择子吗?

论坛徽章:
0
18 [报告]
发表于 2007-05-06 23:26 |只看该作者
原帖由 W.Z.T 于 2007-5-6 23:07 发表于 17楼  
tss的第96个字节不就是其对应的ldt选择子吗?

能否给个连接,谢谢~

论坛徽章:
0
19 [报告]
发表于 2007-05-07 09:59 |只看该作者
直接看tss结构图就行了,80386 Programmer's Reference Manual

论坛徽章:
0
20 [报告]
发表于 2007-05-07 10:39 |只看该作者
原帖由 怪怪虎 于 2007-5-6 22:47 发表于 16楼  
看了上边两位牛人的讨论,自己有查阅了下资料.下边说下自己对段描述表和段描述符的理解.
对于一个新手个人觉得可以这样思考.

1. 首先确定系统中只有四个段描述表. GDT, LDT,IDT, TSS
2.段描述符有好多种类, ...


1、只有3个描述符表:GDT、LDT 以及 IDT

2、注意:段描述符只是描述符其中的一种,不要以段描述符去概括描述符。
   描述符分为:段描述符,包括:代码段描述符(code segment descriptor) 和数据段描述符(data segment descriptor))
               系统描述符,包括:LDT 描述符以及 TSS 描述符、门符(gate descriptor)

   LDT 和 TSS 以系统描述符的形式存放在 GDT 中,所以必须根据 GDT 得出 LDT 表和 TSS 块,指令 LLDT 用于根据提供的选择子(Selector)在 GDT 中定位 LDT 表。 同样 LTR 用于根据提供的选择子(Selector)在 GDT 中定位 TSS 块。但是注意:使用 LTR 并不是加载 TSS 的唯一方法,在任务门符(Task Gate Descritpor)的 TSS 域 和 TSS 块中的第 0 字节中包含有 TSS 选择子。在任务切换时CPU 自动加载 TSS 块。
    门符(Gate descriptor)又可分为:调用门(Call Gate)、中断门(Interrupt Gate)和陷井门(Trap Gate)以及任务门(Task Gate)。都是发生在控制权转移的时候使用。其中最主要的用于权限的转移,如低权限向高权限代码的转移。
    门符不是段描述符,它不描述有关段的任何信息。它只是相当于一个指针,指出目标代码的定位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP