LDT与GDT区别?

God2000 2002-02-17 07:12:13
加精
谁能说说LDT与GDT区别?

有的书上说GDT是唯一的,那是指在程序中是唯一的还是
指在整个系统中是唯一的还是别的?
那LDT又是如何?


请详细些。
...全文
1259 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
vBin 2002-03-17
  • 打赏
  • 举报
回复
强制结贴
icename 2002-03-04
  • 打赏
  • 举报
回复
GDT由GDTR指出,GDTR是48位指针,处理器中只有一个;
LDT由GDT中的一个描述符描述,LDTR指向这个描述符;
系统还有一个TSS段,对应一个任务,其中含有此任务的
LDT;意思就是:每个任务有一个LDT,所以,TR寄存器只能
指向一个GDT表。系统可以有多个TSS,TSS切换,TR就更新,
LDT就跟着更新,类似进程切换。多个LDT是指每个任务有
不同的LDT表,但同一时刻,只能有一个存在,或者象W2000
LDTR置空,根本不用LDT。
huaboy 2002-03-03
  • 打赏
  • 举报
回复
应该是 杨季文 的《80X86汇编语言程序设计教程》
wowocock 2002-03-02
  • 打赏
  • 举报
回复
GDT只有一个,用于存放系统的代码段,数据段,以及LDT,TSS,任务门,调用门
IDT也只有一个,用于存放任务门,中断门,陷阱门
LDT可以有多个,用于存放应用程序的代码,数据,堆栈等
当然不同的操作系统之间也有差别,可以用SOFTICE或TRW2000查看WIN9X下
发现所有程序共享LDT。
huaboy 2002-03-02
  • 打赏
  • 举报
回复
我觉得hibernate(红叶)说的对。推荐看 周明得 的《80X86汇编语言程序设计》(清华的)里面讲的很详细。我正看呢,国人在1994年翻译的一本关于Intel Architecture Software Developer’s Manual的书《80386/80486编程》,翻的很不好,且知识不连贯。
mathe 2002-03-02
  • 打赏
  • 举报
回复
一个进程可以有很多线程,TSS应该是对应于线程的。用户进程不能自己在不同的线程之间切换,但是操作系统会将代码在不同的线程间进行切换。
shen630 2002-03-01
  • 打赏
  • 举报
回复
关注
wylpro 2002-02-24
  • 打赏
  • 举报
回复
lldt 这只在系统级才可以用,
LDT 的目的是把一个进程的所有段都放进一个LDT中(LDT本身不止一个),以防止进程间互相影响,如果进程本身有多个LDT进程不是要能够转换LDT?那不就可以转到别人的LDT上来影响别的进程?还要LDT干吗?
snowingedge 2002-02-20
  • 打赏
  • 举报
回复
我不觉得红叶有误。应该说GDT是全局的,LDT是局部的。但是某一个时刻,一个进程只对应一个LDT.(虽然可以有多个LDT,但是只有一个在使用)
vBin 2002-02-20
  • 打赏
  • 举报
回复
赞同。
awinder 2002-02-20
  • 打赏
  • 举报
回复
RIGHT!
hibernate 2002-02-20
  • 打赏
  • 举报
回复
我好象没有理解错吧。
LDT一般存储的是用户进程代码段,数据段,堆栈段及TSS描述符。如果一个进程可以有很多LDT的话,那么就是说用户进程也可以自己在内部进行任务切换了?这个权力只有操作系统内核才有吧?而且在每一个进程的TSS中存有该进程的LDT,在进程运行当中应该是不能改变的。
正确的说法应该是:GDT是系统中唯一的,一个系统中可以有许多LDT,LDT的Descripotr是存储在GDT中的,而LDT中存储的是每一个进程的局部数据。
predrose 2002-02-20
  • 打赏
  • 举报
回复
Hardware是只有一个LDTR(16 bits of Register),而不是只有一个LDT,一个PROCESS可以有多个LDT,但要用lldt指令switch或用tss,红叶理解有误。
predrose 2002-02-20
  • 打赏
  • 举报
回复
Hardware是只有一个LDTR(16 bits of Register),而不是只有一个LDT,一个PROCESS可以有多个LDT,但要用lldt指令switch或用tss,红叶理解有误。
hibernate 2002-02-18
  • 打赏
  • 举报
回复
每个程序可以有许多LDT?
LDT只有在保护模式下才可用。保护模式下的每个程序是作为一个进程来运行的,每个程序只能有一个LDT。
awinder 2002-02-17
  • 打赏
  • 举报
回复
GDT是系统中唯一的,LDT是访问系统描述符中0010属性(也就是LDT属性)的描述符。每个程序可以有很多LDT。具体的你可以找一本讲保护模式汇编的书看看。或者翻翻Intel Architecture Software Developer’s Manual

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧